超文本传输协议http实验报告
篇一:计算机网络实验超文本传输协议Http分析
实验二超文本传输协议 Http分析
一、实验目的
通过分组捕获软件Wireshark来分析Http协议的以下内容:
1、 Http协议的Get/Resonse互动机制;
2、 Http协议的分组格式;
3、如何利用Http传输Html文件;
4、如何利用Http传输图片、动画等嵌入式文件;
5、观察Http的安全性能。
二、实验条件
1、Wireshark软件
2、IE浏览器
三、实验预习要求:
复习课本节的相关内容
四、实验内容:
1. Http的基本请求/响应互动机制
本实验通过访问一个最简单的页面展开,即该html 文件中不引用任何其它嵌入式文件(如图片、视频等)。操作步骤如下:
1、打开IE浏览器;
2、打开Wireshark软件,打开抓包菜单中的网络接口子菜单,从中选择本机使用的网络接口。
3、切入包捕获界面后,在过滤栏中输入http && == || == ,即只观察与交互的http分组。
4、在IE浏览器输入:;此时浏览器应该会显示一个最简单的html页面(只有一行)。
5、此时,你的Wireshak软件应该如下所示:
图1: 访问后的
Wireshark显示界面
从上图中可观察到总共捕获到四个http包,其中,包括两对Http的Get分组(由本机浏览器向服务器发出的请求)以及服务器返回的响应分组。需要注意的是,第一轮请求与回复请求的是具体的页面;而第二轮请求与回复涉及的却是一个文件。分组内容展示窗口中可以观察这两个分组
的详细信息。从展开的分组内容中可以看出:Http包是经由Tcp协议传输,而Tcp又是附加在IP数据包的基础上,后者又附加在一个以太网帧内。以第一轮分组为观察目标,试着回答如下问题:
1. 你的浏览器运行的是什么协议版本?还是 ? 服务器运行的又是什么版本呢?
2. 你的浏览器告诉服务器它能够接受的语言是?
3. 你浏览器所在的IP是?服务器的Ip又是?
4. 服务器返回给浏览器的状态代码是?这次访问成功了么?
5. 浏览器所访问的Html文件上次被修改的时间是?
6. 间隔两分钟后再重新访问该Html文件(即刷新IE 浏览器),再次查看Html文件上被修改的时间是?对比与问题5的答案,你观察出了什么结论?
7. 服务器返回给浏览器的分组的内容长度是多少?
2. Http附加条件判断的请互动机制
从课本节中我们知道,当前主要浏览器都有一个缓存机制,即将刚访问的页面内容保存在IE缓存区。在此基础上,当用户重新访问该页面时,浏览器会智能地发出一个带
条件判断的Http请求,即请求时告诉服务器自己所缓存文件的时间戳。为了详细观察这一带条件判断请求互动机制,请进行如下操作:
1、打开IE浏览器,并清除IE浏览器的所有缓存文件。
2、打开Wireshark软件,打开抓包菜单中的网络接口子菜单,从中选择本机使用的网络接口。
3、切入包捕获界面后,在过滤栏中输入http && == || == ,即只观察与交互的http分组。
4、在IE地址栏输入:,回车后访问该地址。
5、十秒后,点IE刷新栏,重新访问该地址。
6、将观察到的Wireshark软件结果截图保存。
图2 访问后的
Wireshark显示界面
观察实验结果,回答以下问题:
1. 观察浏览器发出的第一个Get请求,你在里面看到了IF-MODIFIED-SINCE字段么?
2. 观察服务器对应的第一个Response回复,它返回
了所请求的html文件么?
3. 观察第二个浏览器发出的第二个Get请求,你在里面看到 IF-MODIFIED-SINCE字段么?如果有,它携带的具体信息是?
4. 服务器所回复的第二个Response回复的状态码是?它携带了浏览器所请求的Html文件么?如果没有,请作出相应的解释。
3. 通过Http获取大文件
上述两个小实验中,我们都只是访问了小而简单的Html文件。这一节实验,我们将通过http来访问长的Html 文件。请按以下步骤操作:
1、打开IE浏览器,并清除IE浏览器的所有缓存文件。
2、打开Wireshark软件,打开抓包菜单中的网络接口子菜单,从中选择本机使用的网络接口。
3、切入包捕获界面后,在过滤栏输入http || tcp ,即只观察http、tcp分组。
4、在IE地址栏输入:,回车后访问该地址。
5、观察Wireshark的实验结果。
图3 访问后的
Wireshark显示界面
从上图(截取自老师机器上进行的实验)可以看出,在Http Get请求后,有一系列的Tcp回复包(即从发送过来的26,27,29号Tcp分组)。由节的课本知识可知,通常一个Http response分组由一个状态栏、头部行、空行以及实体数据四个部分组成。在本节实验中,实体数据是指这个整html文件;而该文件的大小为4500Byte,超过了一个Tcp 包可以容纳的长度(老师机器中的1460 Byte)。因此,服务器将整个http响应包拆成四个长度分别为1460\1460\1460\423的四个TCP分组。在传输过程中,由于所经历的路径不一致,这四个分组(26,27,29,31)并非按原先的发送顺序到达,而存在错序的情况!因此,浏览器需要将这四个分组重新组合后开成一个完整的Http响应包。
试着进一步分析实验结果,并回答如下问题:
1. 为了获得这个html文件,浏览器一共发送了几个http Get请求?这些分组对应的序列号是?
2. 哪个分组包括了对这个请求的回复包所涉及的状态信息?(序列号是?)
3. 回复中的具体状态信息及其它头部行信息是?