《计算机网络》实验报告
信息安全1201
吴淑珍
201208060122
2015年4月1日
1.实验报告内容包括:实验目的、实验内容、实验程序和程序流程图、实验步骤、记录中间结果和最终结果。
实验一应用协议与数据包分析实验(使用Wireshark)
一、实验目的
通过本实验,熟练掌握Wireshark的操作和使用,学习对HTTP协议进行分析。
二、实验内容
学习HTTP 协议,了解HTTP 的工作原理和HTTP 报文格式。运行Wireshark,截获在浏览器访问web界面的报文,并根据截获的报文分析其格式与内容,进一步学
习 HTTP 协议工作过程。
三、实验步骤
步骤1:在PC 机上运行Wireshark,开始截获报文;
步骤2:从浏览器上访问Web 界面,如。打开网页,待浏览器的状态栏出现“完毕”信息后关闭网页。
步骤3:停止截获报文,将截获的报文命名为http-学号保存。
步骤4:分析截获的报文。
四、实验结果
分析截获的报文,回答以下几个问题:
1)综合分析截获的报文,查看有几种HTTP 报文?
答:两种,一种是请求报文,请求行方法为GET(有一个截去顶端的GET);另一种是响应报文。
2)在截获的HTTP 报文中,任选一个HTTP 请求报文和对应的 HTTP 应答报文,仔细
分析它们的格式,填写表1.1 和表1.2。
表1.1 HTTP 请求报文格式
*GET方法首部行后面没有实体主体。
*实体主体部分为服务器发送给客户的对象。
***查找的资料
Content-Length用于描述HTTP消息实体的传输长度。在HTTP协议中,消息实体长度和消息实体的传输长度是有区别,比如说gzip压缩下,消息实体长度是压缩前的长度,消息实体的传输长度是gzip压缩后的长度。
在具体的HTTP交互中,客户端是如何获取消息长度的呢,主要基于以下几个规则:
响应为1xx,204,304相应或者head请求,则直接忽视掉消息实体内容。
如果有Transfer-Encoding,则优先采用Transfer-Encoding里面的方法来找到对应的长度。比如说Chunked模式。
“如果head中有Content-Length,那么这个Content-Length既表示实体长度,又表示传输长度。如果实体长度和传输长度不相等(比如说设置了Transfer-Encoding),那么则不能设置Content-Length。如果设置了Transfer-Encoding,那么Content-Length将被忽视”。这句话翻译的有点饶,其实关键就一点:有了Transfer-Encoding,则不能有Content-Length。
通过服务器关闭连接能确定消息的传输长度。(请求端不能通过关闭连接来指明请求消息体的结束,因为这样可以让服务器没有机会继续给予响应)。这种情况主要对应为短连接,即非keep-alive模式。
HTTP1.1必须支持chunk模式。因为当不确定消息长度的时候,可以通过chunk机制来处理这种情况。
在包含消息内容的header中,如果有content-length字段,那么该字段对应的值必须完全和消息主题里面的长度匹配。
“The entity-length of a message is the length of the message-body before any transfer-codings have been applied”
也就是有chunk就不能有content-length 。
其实后面几条几乎可以忽视,简单总结后如下:
1、Content-Length如果存在并且有效的话,则必须和消息内容的传输长度完全一致。(如果过短则会截断,过长则会导致超时。)
2、如果存在Transfer-Encoding(重点是chunked),则在header中不能有Content-Length,有也会被忽视。
3、如果采用短连接,则直接可以通过服务器关闭连接来确定消息的传输长度。(这个很容易懂)
结合HTTP协议其他的特点,比如说Http1.1之前的不支持keep alive。那么可以得出以下结论:
1、在Http 1.0及之前版本中,content-length字段可有可无。
2、在http1.1及之后版本。如果是keep alive,则content-length和chunk必然是二选一。若是非keep alive,则和http1.0一样。content-length可有可无。
***
3)分析在截获的报文中,客户机与服务器建立了几个连接?服务器和客户机分别使用
了哪几个端口号?
答:4个。服务器使用的端口是80,客户机的临时端口分别是1153、1168、1169、1177,接收到的响应报文号分别是383、818、819、862。
4 )综合分析截获的报文,理解HTTP 协议的工作过程,将结果填入表1.3 中。
表1.3 HTTP 协议工作过程