利用wireshark分析HTTP协议.docx
《利用wireshark分析HTTP协议.docx》由会员分享,可在线阅读,更多相关《利用wireshark分析HTTP协议.docx(10页珍藏版)》请在冰豆网上搜索。
![利用wireshark分析HTTP协议.docx](https://file1.bdocx.com/fileroot1/2023-2/1/f660aab7-9bd3-4f3b-adf1-cb152520c0d3/f660aab7-9bd3-4f3b-adf1-cb152520c0d31.gif)
利用wireshark分析HTTP协议
计算机网络 实验报告
年级:
通信姓名:
学号:
实验日期:
2014年4月30日星期三
实验名称:
利用wireshark分析HTTP协议
一、实验目的
分析HTTP协议
二、实验环境
与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。
三、实验步骤
1、利用Wireshark俘获HTTP分组
(1)在进行跟踪之前,我们首先清空Web浏览器的高速缓存来确保Web网页是从网络中获取的,而不是从高速缓冲中取得的。
之后,还要在客户端清空DNS高速缓存,来确保Web服务器域名到IP地址的映射是从网络中请求。
在WindowsXP机器上,可在命令提示行输入ipconfig/flushdns完成操作。
(2)启动Wireshrk分组俘获器。
(3)在Web浏览器中输入:
http:
//gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html
(4)停止分组捕获。
图1:
利用Wireshark俘获的HTTP分组
浏览Web页面经过如下三个过程:
(一)DNS解析
在URLhttp:
//gaia.cs.umass.edu中,gaia.cs.umass.edu是一个具体的web服务器的域名。
最前面有两个DNS分组。
第一个分组是将域名gaia.cs.umass.edu转换成为对应的IP地址的请求,第二个分组包含了转换的结果。
这个转换是必要的,因为网络层协议——IP协议,是通过点分十进制来表示因特网主机的,而不是通过gaia.cs.umass.edu这样的域名。
当输入URLhttp:
//gaia.cs.umass.edu时,将要求Web服务器从主机gaia.cs.umass.edu上请求数据,但首先Web浏览器必须确定这个主机的IP地址。
(二)TCP连接建立
随着转换的完成,Web浏览器与Web服务器建立一个TCP连接。
(三)HTTP交互
Web浏览器使用已建立好的TCP连接来发送请求“GET/HTTP/1.1”。
这个分组描述了要求的行为(“GET”)及文件(只写“/”是因为我们没有指定额外的文件名),还有所用到的协议的版本(“HTTP/1.1”)。
分析截获的结果,回答下列问题:
粘贴前面的地址解析的两个DNS分组
1)DNS协议主要使用UDP封装还是TCP封装?
___TCP封装_______________
2)DNS查询消息的IP地址是____221.204.7.205______________?
你默认的本地DNS服务器的IP地址是___10.30.58.15_______________?
3)DNS查询消息的目的端口是____domain(53)______________?
DNS响应消息的源端口是______20430____________?
粘贴Web浏览器与Web服务器建立一个TCP连接的三次握手报文
2、HTTPGET/response交互
图HTTPGET请求信息
(1)在协议框中,选择“GET/HTTP/1.1”所在的分组会看到这个基本请求行后跟随着一系列额外的请求首部。
在首部后的“\r\n”表示一个回车和换行,以此将该首部与下一个首部隔开。
“Host”首部在HTTP1.1版本中是必须的,它描述了URL中机器的域名,本例中是http:
//gaia.cs.umass.edu。
这就允许了一个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.1200ok”,指明它开始使用HTTP1.1版本来发送网页。
同样,在响应分组中,它后面也跟随着一些首部。
最后,被请求的实际数据被发送。
图HTTP响应
第一个Cache-control首部,用于描述是否将数据的副本存储或高速缓存起来,以便将来引用。
一般个人的Web浏览器会高速缓存一些本机最近访问过的网页,随后对同一页面再次进行访问时,如果该网页仍存储于高速缓存中,则不再向服务器请求数据。
类似地,在同一个网络中的计算机可以共享一些存在高速缓存中的页面,防止多个用户通过到其他网路的低速网路连接从网上获取相同的数据。
这样的高速缓存被称为代理高速缓存(proxycache)。
在我们所俘获的分组中我们看到“Cache-control”首部值是“private”的。
这表明服务器已经对这个用户产生了一个个性化的响应,而且可以被存储在本地的高速缓存中,但不是共享的高速缓存代理。
在HTTP请求中,Web服务器列出内容类型及可接受的内容编码。
此例中Web服务器选择发送内容的类型是text/html且内容编码是gzip。
这表明数据部分是压缩了的HTML。
服务器描述了一些关于自身的信息。
此例中,Web服务器软件是Google自己的Web服务器软件。
响应分组还用Content-Length首部描述了数据的长度。
最后,服务器还在Date首部中列出了数据发送的日期和时间。
根据俘获窗口内容,回答1-6题。
(1)你的浏览器运行的是HTTP1.0,还是HTTP1.1?
你所访问的服务器所运行的HTTP版本号是多少?
_________HTTP1.1_________version1.1___________________________________________________________________________________________________________________________________
(2)你的浏览器向服务器指出它能接收何种语言版本的对象?
_______Accept-Language:
zh-cn\r\n________________________________________________________________________________________________________________________________________________
(3)你的计算机的IP地址是多少?
____10.30.58.15_________________________________________________________________________________________________________________________________________________
(4)从服务器向你的浏览器返回的状态代码是多少?
___________200ok___________________________________________________________________________________________________________________________________________
(5)你从服务器上所获取的HTML文件的最后修改时间是多少?
____________________Date:
Wed,30Apr201408:
16:
13GMT\r\n____
_________________________________________________________________________________________________________________________________
(6)返回到你的浏览器的内容一共多少字节?
______________________52031_______________________________________________________________________________________________________________________________
3、HTTP条件GET/response交互
(1)启动浏览器,清空浏览器的缓存。
(在ie:
工具----Internet选项-----删除----Internet临时文件历史记录删除缓存中的内容)
(2)启动Wireshark分组俘获器,开始Wireshark分组俘获。
(3)在浏览器地址栏中如下网址:
http:
//gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html
你的浏览器中将显示一个具有五行的非常简单的HTML文件。
(4)在你的浏览器中重新输入相同的URL或单击浏览器中的“刷新”按钮。
(5)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。
根据操作回答7-10题。
(7)分析你的浏览器向服务器发出的第一个HTTPGET请求的内容,在该请求报文中,是否有一行是:
IF-MODIFIED-SINCE?
没有__________________________________________________________________________________________________________________________________________
(8)分析服务器响应报文的内容,服务器是否明确返回了文件的内容?
如何获知?
____Congratulationsagain!
Nowyou'vedownloadedthefilelab2-2.html.
Thisfile'slastmodificationdatewillnotchange.
Thusifyoudownloadthismultipletimesonyourbrowser,acompletecopy
willonlybesentoncebytheserverduetotheinclusionoftheIN-MODIFIED-SINCE
fieldinyourbrowser'sHTTPGETrequesttotheserver.
_________________________________________________________________________________________________________________________________________________
(9)分析你的浏览器向服务器发出的第二个“HTTPGET”请求,在该请求报文中是否有一行是:
IF-MODIFIED-SINCE?
如果有,在该首部行后面跟着的信息是什么?
__没有____________________________________________________________________________________________________________________________________________
(10)服务器对第二个HTTPGET请求的响应中的HTTP状态代码是多少?
服务器是否明确返回了文件的内容?
请解释
____状态码和相应状态信息的值为304NOTModified,他表示缓存器可以使用该对象。
第二次没有返回文件的内容,因为他只是作为对该条件GET的响应,WEB服务器只发送一个响应报文,不包含请求的对象________________________________________________________________________________________________________________________________________________
4、获取长文件
(1)启动浏览器,将浏览器的缓存清空。
(2)启动Wireshark分组俘获器,开始Wireshark分组俘获。
(3)在浏览器地址栏中输入如下网址:
http:
//gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html
浏览器将显示一个相当大的美国权力法案
(4)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。
根据操作回答11-14题。
(11)你的浏览器一共发出了多少个HTTPGET请求?
________1个____________________________________________________________________________________________________________________________________________
(12)查看GET的响应消息,该单个HTTP响应消息,需要多少个TCP报文段?
_______________4个_______________________________________________________________________________________________________________________________________
(13)与这个HTTPGET请求相对应的响应报文的状态代码和状态短语是什么
_HTTP/1.1200OK\r\________________________________________________________________________________________________________________________________________________
5、嵌有对象的HTML文档
(1)启动浏览器,将浏览器的缓存清空。
(2)启动Wireshark分组俘获器。
开始Wireshark分组俘获。
(3)在浏览器地址栏中输入如下网址:
http:
//gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html
浏览器将显示一个具有两个图片的短HTTP文件。
(4)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。
根据操作回答15-16题。
(15)你的浏览器一共发出了多少个HTTPGET请求?
这些请求被发送到的目的地的IP地址是多少?
_3个__222.198.2.63______________________________________________________________________________________________________________________________________________
(16)浏览器在下载这两个图片时,是串行下载还是并行下载?
请解释。
__当前一个GET还没有得到回复就发送了下一个GET_________________________________________________________________________________________________________________________________________________
6、HTTP认证
(1)启动浏览器,将浏览器的缓存清空。
(2)启动Wireshark分组俘获器。
开始Wireshark分组俘获。
(3)在浏览器地址栏中输入如下网址:
http:
//gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html
浏览器将显示一个HTTP文件,输入所需要的用户名和密码(用户名:
wireshark-students,密码:
network)。
(4)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。
根据操作回答17-18题。
(17)对于浏览器发出的最初的HTTPGET请求,服务器的响应是什么(状态代码和状态短语)?
____200OK_____________________________________________________________________________________________________________________________________________
(18)当浏览器发出第二个HTTPGET请求时,在HTTPGET响应报文中包含了哪些新的字段?
___________Authorization:
basic__________________________________________________________________________________________________________________________________________
..