实验14 超文本传输协议Http分析

一、实验名称

超文本传输协议 Http分析

二、实验目的

1. 掌握使用Wireshark分析俘获HTTP协议的基本技能;

2. 深刻理解HTTP重要的工作机理和过程。

三、实验内容和要求

1、 Http协议的Get/Resonse互动机制;

2、 Http协议的分组格式;

3、 如何利用Http传输Html文件;

4、 如何利用Http传输图片、动画等嵌入式文件;

四、实验环境

硬件环境:win10操作系统的PC

软件环境:Wireshark 2.6.6

五、操作方法和实验具体步骤(需截图)

1.Http 的基本请求 /响应互动机制

(1)打开IE 浏览器。

(2)打开Wireshark软件,打开抓包菜单中的网络接口子菜单,从中选择本机使用的网络接口。

(3)切入包捕获界面后,在过滤栏中输入:http && ip.addr==128.119.245.12,即只观察与交互的http分组。

  1. 在IE浏览器输入:

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html;此时浏览器应该会显示一个最简单的 html 页面(只有一行 ),如图1所示:

图1

  1. 此时,Wireshak软件应该抓取的Http数据包如图2所示:

图2

从图2中可观察到总共捕获到四个http 包,其中,包括 Http 的 Get分组(由本机浏览器向服务器gaia.cs.umass.edu发出的请求)以及服务器返回的响应分组。需要注意的是,第一轮请求与回复请求的是具体的页面;而第二轮请求与回复涉及的却是一个favicon.ico 文件。分组内容展示窗口中可以观察这两个分组的详细信息。从展开的分组内容中可以看出: Http 包是经由 Tcp协议传输,而 Tcp 又是附加在IP 数据包的基础上,后者又附加在一个以太网帧内。以第一轮分组为观察目标,试着回答如下问题:

(1)你的浏览器运行的是什么协议版本? Http1.0 还是http1. 1?服务器运行的又是什么版本呢?

图3

答:如图3,我的浏览器运行的是Http1. 1版本(Request Version: HTTP/1. 1)。服务器运行的是Version 4。

(2)你的浏览器告诉服务器它能够接受的语言是?

答: Accept -Language: zh-CN\r\n (即中文简体)

(3)你浏览器所在的IP是?服务器的IP又是?

答:浏览器的IP是192.168.1.103,服务器的IP是128.119.245.12。

(4)服务器返回给浏览器的状态代码是?这次访问成功了么?

答:状态代码是Status Code:200。这次的访问成功了(Response Phrase:OK)。

(5)浏览器所访问的Html 文件上次被修改的时间是?

答: 如图2所示:Arrival Time: Jun 2, 2022 13:59:16.913256000 中国标准时间

(6)间隔两分钟后再重新访问该Html 文件(即刷新IE浏览器),再次查看Html文件上被修改的时间是?对比与问题5的答案,你观察出了什么结论?

答: 如图4所示:Arrival Time: Jun 2, 2022 14:02:16.803817000 中国标准时间 得出结论:最后的修改时间会随着抓包的时间不同而改变。

图4

(7)服务器返回给浏览器的分组的内容长度是多少?

答: 128 个字节。

2.Http 附加条件判断的请互动机制

我们知道,当前主要浏览器都有一个缓存机制,即将刚访问的页面内容保存在chrome缓存区。在此基础上,当用户重新访问该页面时,浏览器会智能地发出一个带条件判断的Http请求,即请求时告诉服务器自己所缓存文件的时间戳。为了详细观察这一带条件判断请求互动机制,请进行如下操作:

(1)打开IE浏览器,并清除IE浏览器的所有缓存文件。

(2)打开Wireshark 软件,打开抓包菜单中的网络接口子菜单,从中选择本机使用的网络接口。

(3)切入包捕获界面后,在过滤栏中输入:

http&&ip.addr==128.119.245.12,即只观察与128.119.245.12交互的http分组。

  1. 在IE地址栏输入:

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html,回车后访问该地址。

(5)十秒后,点IE刷新栏,重新访问该地址。

(6)将观察到的Wireshark软件结果截图保存,如图5所示:

图5

观察实验结果,回答以下问题:

(1)观察浏览器发出的第一个Get请求,你在里面看到了IF-MODIFIED- SINCE字段么?

答:没有看到IF-MODIFIED-SINCE字段。.

(2)观察服务器对应的第一个Response 回复,它返回了所请求的html 文件么?

答:返回了。如图6所示:

图6

(3)观察第二个浏览器发出的第二个Get请求,你在里面看到IF-MODIFIED SINCE字段么?如果有,它携带的具体信息是?

答:有看到IF-MODIFIED-SINCE字段。它携带的具体信息如图7所示:

图7

(4)服务器所回复的第二个Response回复的状态码是?它携带了浏览器所请求的

Html文件么?如果没有,请作出相应的解释。

答:StatusCode:304。他没有携带浏览器所请求的HTML文件,因为Response Phrase:Not Modified。

3.通过Http获取大文件

(1)启动浏览器,将浏览器的缓存清空。

(2)启动Wireshark分组俘获器,开始Wireshark分组俘获。

(3)在浏览器地址栏中输入如下网址:

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html,浏览器将显示一个相当大的美国权力法案,如图8所示:

图8

  1. 停止Wireshark分组俘获,在显示过滤筛选说明处输入“http",分组列表子窗口中将只显示所俘获到的HTTP报文。如图9所示:

图9

在本节实验中,实体数据是指HTTP-wireshark-file3.html 这个整html文件;而该文件的大小为4861Byte, 超过了一一个Tcp 包可以容纳的长度(本机器为1460 Byte 加上头部的20个字节)。因此,服务器将整个http 响应包拆成四个长度分别为1440\1440\1440\541的四个TCP分组。在传输过程中,由于所经历的路径不一致,这四个分组(26,27,29,31)并非按原先的发送顺序到达,而存在错序的情况!因此,浏览器需要将这四个分组重新组合后形成一个完整的Http 响应包。

回答如下问题:

(1)你的浏览器一共发出了多少个HTTP GET请求

答: 4个。

(2)承载这一个HTTP响应报文一共需要多少个data- containing TCP报文段?

答: 4个。如图10.

图10

(3)与这个HTTP GET请求相对应的响应报文的状态代码和状态短语是什么?

答:状态代码是200,状态短语是OK,如图11所示:

图11

4、传输涉及嵌入式文件的Html 文件

(1)启动浏览器,将浏览器的缓存清空。

(2)启动Wireshark分组俘获器。开始Wireshark分组俘获。

(3)在浏览器地址栏中输入如下网址:

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html,浏览器将显示一个具有两个图片的短HTTP文件。如图12所示:

图12

从图可以看出,该页面中除了包括文字信息外,还包含两个图片:一个Pearson图标文件,一个计算机网络课程英文版(第五版)的正面图片。

(4)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。

(5)观察 Wireshark 的实验结果。如图13所示:

图13

详细观察实验结果,然后试着回答如下问题:

(1)两个图片的格式分别是?

答:分别是.png (Person 图标)和.jpg。

(2)你的浏览器一共发出了多少个Get 请求?各个请求所指向的服务器地址分别是?它们所请求的对象分别是?

答: 3个。服务器的地址分别是: 128.119.245.12、178.79.137.164。它们所请求的对象分别是:文本、Person.png格式的图片和.jpg格式的图片

(3)你的浏览器是并行还是串行下载所请求的两个图片文件?请根据结果给出你的答案并作出解释。(先理解串行、 并行下载的区别)

答:并行下载。因为这样可以不用每次下载都要建立TCP连接,可以缩短下载时间。

5. 观察 Http 的安全性能

(1)启动浏览器,将浏览器的缓存清空。

(2)启动Wireshark分组俘获器。开始Wireshark分组俘获。切入包捕获界面后,在过滤栏输入 http,即只观察 http 分组。

(3)在浏览器地址栏中输入如下网址:

http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html,浏览器将显示一个HTTP文件,输入所需要的用户名和密码(用户名:wireshark-students,密码:network)。

(4)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。

(5)观察 Wireshark 的实验结果。如图14所示:

图14

试着回答以下内容:

(1)对于浏览器发出的最初的HTTPGET请求,服务器的响应是什么(状态代码和状态短语)?

答: Status Code: 401,Response Phrase:Unauthorized,如图15所示:

图15

(2)第二个Get请求分组中的Authorization 分组所携带的信息是什么?它们是用什么编码的?试访问http://tools. jb51. net/tools/base64 decode-gb2312. php来逆向解析这串编码信息所对应的文字信息。

答:携带的信息是上述输入的用户名和密码。

六、实验心得体会(或者所遇疑难问题解决方案)

通过这次实验,我理解了HTTP协议的含义;超文本传送协议(HTTP) 是一种通信协议,它允许将超文本标记语言(HTML) 文档从 Web 服务器传送到 Web 浏览器。HTML 是一种用于创建文档的标记语言,这些文档包含到相关信息的链接。可以单击一个链接来访问其它文档、图像或多媒体对象,并获得关于链接项的附加信息。

大致掌握使用Wireshark分析俘获HTTP协议的基本技能:深刻理解HTTP重要的工作机理和过程; Http协议的Get/Resonse互动机制; Http协议的分组格式;如何利用Http传输Html文件;如何利用Http传输图片、动画等嵌入式文件;还了解了Http的安全性能的一点相关内容。在wireshark的分析下,HTTP的工作机理和工作过程能很明了地看出来,大概就是GET/Resonse相互进行,通过Get请求浏览器可向服务器发送请求,里面会包含请求内容、时间、请求源居多信息,还会提示服务器下次回复的分组窗口,服务器接收到了请求后,响应一段时间便会从浏览器要求的时机,进行Resonse回复。

除此之外,在Wireshark中俘获http报文时,我发现出现频率最高的的状态码就是304 Not Modified。通过查阅资料得知:当访问资源出现304访问的情况下其实就是先在本地缓存了访问的资源。以下是详细解释:

当客户端缓存了目标资源但不确定该缓存资源是否是最新版本的时候, 就会发送一个条件请求。在进行条件请求时,客户端会提供给服务器一个If-Modified-Since请求头,其值为服务器上次返回响应头中Last-Modified值,还会提供一个If-None-Match请求头,值为服务器上次返回的ETag响应头的值。服务器会读取到这两个请求头中的值,判断出客户端缓存的资源是否是最新的,如果是的话,服务器就会返回HTTP/304 Not Modified响应头, 但没有响应体.客户端收到304响应后,就会从本地缓存中读取对应的资源。

所以有第一次访问200

鼠标点击二次访问(Cache)

按F5刷新 304

按Ctrl+F5强制刷新 200

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

派森小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值