实验4 HTTP和DNS协议分析
一、实验目的
分析HTTP和DNS协议
二、实验环境
与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。
三、实验步骤
(一)、HTTP协议分析
1、利用Wireshark俘获HTTP分组
(1)在进行捕获报文数据之前,首先清空Web 浏览器的高速缓存来确保Web网页是从网络中获取的,而不是从高速缓冲中取得的。之后,还要在客户端清空DNS高速缓存,来确保Web服务器域名到IP地址的映射是从网络中请求。在WindowsXP机器上,可在命令提示行输入ipconfig/flushdns(清除DNS解析程序缓存)完成操作。
(2)启动Wireshark 分组俘获器。
(3)在Web 浏览器中输入:http://www.sicnu.edu.cn
(4)停止分组俘获。
图6.1 利用Wireshark俘获的HTTP分组
在URL http://www.sicnu.edu.cn中,www.sicnu.edu.cn 是一个具体的web 服务器的域名。最前面有两个DNS分组。第一个分组是将域名www.sicnu.edu.cn转换成为对应的IP 地址的请求,第二个分组包含了转换的结果。这个转换是必要的,因为网络层协议——IP协议,是通过点分十进制来表示因特网主机的,而不是通过www.sicnu.edu.cn这样的域名。当输入URL http:www.sicnu.edu.cn时,将要求Web服务器从主机www.sicnu.edu.cn上请求数据,但首先Web浏览器必须确定这个主机的IP地址。
随着转换的完成,Web浏览器与Web服务器建立一个TCP连接。最后,Web 浏览器使用已建立好的TCP连接来发送请求“GET/HTTP/1.1”。这个分组描述了要求的行为(“GET”)及文件(只写“/”是因为我们没有指定额外的文件名),还有所用到的协议的版本(“HTTP/1.1”)。
2、HTTP GET/response交互
(1)在协议框中,选择“GET/HTTP/1.1” 所在的分组会看到这个基本请求行后跟随着一系列额外的请求首部。在首部后的“\r\n”表示一个回车和换行,以此将该首部与下一个首部隔开。
“Host”首部在HTTP1.1版本中是必须的,它描述了URL中机器的域名,本例中是http://www.sicnu.edu.cn。这就允许了一个Web服务器在同一时间支持许多不同的域名。有了这个数不,Web服务器就可以区别客户试图连接哪一个Web服务器,并对每个客户响应不同的内容,这就是HTTP1.0到1.1版本的主要变化。
User-Agent首部描述了提出请求的Web浏览器及客户机器。
接下来是一系列的Accpet首部,包括Accept(接受)、Accept-Language(接受语言)、Accept-Encoding(接受编码)、Accept-Charset(接受字符集)。它们告诉Web服务器客户Web浏览器准备处理的数据类型。Web服务器可以将数据转变为不同的语言和格式。这些首部表明了客户的能力和偏好。
Keep-Alive及Connection首部描述了有关TCP连接的信息,通过此连接发送HTTP请求和响应。它表明在发送请求之后连接是否保持活动状态及保持多久。大多数HTTP1.1连接是持久的(persistent),意思是在每次请求后不关闭TCP连接,而是保持该连接以接受从同一台服务器发来的多个请求。
(2)我们已经察看了由Web浏览器发送的请求,现在我们来观察Web服务器的回答。响应首先发送“HTTP/1.1 200 ok”,指明它开始使用HTTP1.1版本来发送网页。同样,在响应分组中,它后面也跟随着一些首部。最后,被请求的实际数据被发送。
第一个Cache-control首部,用于描述是否将数据的副本存储或高速缓存起来,以便将来引用。一般个人的Web浏览器会高速缓存一些本机最近访问过的网页,随后对同一页面再次进行访问时,如果该网页仍存储于高速缓存中,则不再向服务器请求数据。类似地,在同一个网络中的计算机可以共享一些存在高速缓存中的页面,防止多个用户通过到其他网路的低速网路连接从网上获取相同的数据。这样的高速缓存被称为代理高速缓存(proxy cache)。在我们所俘获的分组中我们看到“Cache-control”首部值是“private”的。这表明服务器已经对这个用户产生了一个个性化的响应,而且可以被存储在本地的高速缓存中,但不是共享的高速缓存代理。
在HTTP请求中,Web服务器列出内容类型及可接受的内容编码。此例中Web服务器选择发送内容的类型是text/html且内容编码是gzip。这表明数据部分是压缩了的HTML。
服务器描述了一些关于自身的信息。此例中,Web服务器软件是Google自己的Web服务器软件。响应分组还用Content-Length首部描述了数据的长度。最后,服务器还在Date首部中列出了数据发送的日期和时间。
根据俘获窗口内容,回答:
(1) 你的浏览器运行的是HTTP1.0,还是HTTP1.1?你所访问的服务器所运行的HTTP版本号是多少?
HTTP 1.1, version1.1
(2) 你的浏览器向服务器指出它能接收何种语言版本的对象?
Accept language: zh-CN\r\n
(3) 你的计算机的IP地址是多少?服务器www.sicnu.edu.cn的IP地址是多少?
计算机IP地址:10.13.1.80
服务器IP地址:202.115.196.5
(4) 从服务器向你的浏览器返回的状态代码是多少?
200 OK
(5) 你从服务器上所获取的HTML文件的最后修改时间是多少?
Wed,01 Dec 2021 06:29:03 GMT\r\n
(6) 返回到你的浏览器的内容以供多少字节?
2955
(二)、DNS协议分析
Windows操作系统中的nslookup工具允许运行该工具的主机向指定的DNS服务器查询某个DNS记录。如果没有指明DNS服务器,nslookup将把查询请求发向默认的DNS服务器。其命令的一般格式是:
nslookup –option1 –option2 host-to-find dns-server
1、打开命令提示符(Command Prompt),输入nslookup命令。
第一条命令:nslookup www.sicnu.edu.cn “提出一个问题” 即:“将主机www.sicnu.edu.cn 的IP地址告诉我”。屏幕上出现了两条信息:
(1)“回答这一问题”DNS服务器的名字和IP地址;(这里DNS服务器没有名字)
(2)www.sicnu.edu.cn 主机名字和IP地址。
第二条命令:nslookup –type=NS sicnu.edu.cn
在这个例子中,我们提供了选项“-type=NS”,域为sicnu.edu.cn。执行这条命令后,屏幕上显示了DNS服务器的名字和地址。接着下面是4个DNS服务器,
每一个服务器是sicnu校园里权威的DNS服务器。
2、ipconfig
ipconfig用来显示TCP/IP 信息, 你的主机地址、DNS服务器地址,适配器等信息。如果你想看到所有关于你所在主机的信息,可在命令行键入:
ipconfig /all
ipconfig在管理主机所储存的DNS信息非常有用。
如果查看DNS缓存中的记录用命令:ipconfig /displaydns
要清空DNS缓存,用命令:ipconfig /flushdns
3、利用Wireshark捕获DNS信息
(1)利用ipconfig命令清空你的主机上的DNS缓存。
(2)启动浏览器,将浏览器的缓存清空。
(3)启动Wireshark分组俘获器,在显示过滤筛说明处输入 “ip.addryour_IP_address”(如:ip.addr192.168.0.101),过滤器(filter)将会删除所有目的地址和源地址都与指定IP地址不同的分组。
(4)开始Wireshark俘获。
(5)在浏览器的地址栏中输入:www.tsinghua.edu.cn
(6)停止分组俘获。
(7)重复上面的实验,只是将命令替换为:nslookup –type=NS Tsinghua.edu.cn
在实验的基础上,回答以下问题:
(1) 查找DNS 查询和响应消息,发送的是UDP 还是TCP?
Udp
是UDP
(2) DNS 查询消息的目的地端口号是多少?DNS 响应消息的源端口号是多少?客户端的端口是多少?
53,53,65288
(3) DNS 查询消息向哪个IP 地址发送请求?利用ipconfig 来确定你的本地DNS 服务器的IP 地址,这两个IP 地址相同吗?
相同的
(4) 检查DNS 查询消息,这个DNS 查询是什么类型?这个查询消息期望什么回答?
递归查询,得到www.bing.com 的地址
(5) 检查DNS 响应消息,这个消息提供了多少回答?每一个回答包括了什么?
6个回答,
包括: 域名, 域名对应的ip地址, 存在时间, 数据长度, RR的类别代码,地址