一:实验目的
1:熟悉WireShark的安装流程和界面操作流程。
2:学会简单http的抓取和过滤,并分析导出结果。
二:实验仪器设备及软件
硬件: Windows 2019操作系统的计算机等。
软件:WireShark、记事本等。
三:实验方案
首先打开WireShark软件,进入外网捕获界面,启动捕获。
然后通过浏览器进入http:// gaia.cs.umass.edu这个域名地址,在html页面中进行多次点击和跳转操作。
最后在WireShark中停止捕获,保存捕获到的报文,并以http条件进行筛选,查看所有与http协议有关的报文内容,回答相应的问题。
四:实验步骤
-
打开浏览器。
-
打开 WireShark 并且在捕获选项选择合适的网卡。
-
开始进行抓包操作,并且在浏览器中打开示例网页。
-
停止抓包并且分析抓包结果。
-
在过滤器选择 http 过滤,并且查看过滤结果。
五:实验结果及分析
1:列出在协议列中出现的 3 种不同的协议。
第1种:HTTP,如下图所示。

第2种:TCP,如下图所示。

第3种:ARP,如下图所示。

2:从发送 HTTP GET 消息到收到 HTTP OK 回复需要多长时间?
发送GET / HTTP/1.1消息到收到HTTP/1.1 200 OK的过程,如下图所示。

由此可知,其时间间隔为159.562172 - 159.335411 = 0.226761秒。
3:gaia.cs.umass.edu(也称为 wwwnet.cs.umass.edu)的互联网地址是什么? 您的计算机的 Internet 地址是什么?
由下图可知,目的IP地址为128.119.245.12,对应gaia.cs.umass.edu的互联网地址。
源IP地址为192.168.0.108,对应本地计算机的互联网地址。

通过ping方式,验证该域名地址,如下图所示。

4:你的浏览器是否运行 HTTP 版本 1.0 或 1.1?服务器运行的是什么版本的HTTP?
由下图可知,在POST报文中,Request Version是1.1,因此浏览器运行HTTP版本1.1。

由下图可知,在回复报文中,Response Version是1.1,因此服务器运行HTTP版本1.1。

5:你的浏览器接收哪些语言?
浏览器接收标记语言HTML。如下图所示,可以看到content-type为html。

浏览器接收数据格式语言JSON。如下图所示,可以看到content-type为json。

浏览器接收标记语言XML。如下图所示,可以看到content-type为xml。

6:从服务器返回到浏览器的状态代码是什么?
【1】成功状态码。如下图所示,服务器返回到浏览器的状态代码是200 OK,表示请求成功,服务器已成功处理请求。

【2】重定向状态码。如下图所示,服务器返回到浏览器的状态代码是301 Moved Permanently,表示请求的资源已被永久移动到新位置。

【3】客户端错误状态码。如下图所示,服务器返回到浏览器的状态代码是404 Not Found,表示请求的资源在服务器上找不到。

7:在服务器上最后修改的 HTML 文件是什么时候?
由下图可知,Last-Modified是2016年3月1日,表示在服务器上最后修改的 HTML 文件的时间。

8:浏览器返回了多少 bytes 的内容?
由下图可知,浏览器返回了2651字节的内容。

9:是否在 HTTP GET 中看到"IF-MODIFIED-SINCE"行?
是。如下图所示,出现了If-Modified-Since: Tue, 01 Mar 2016 18:57:50 GMT。
在HTTP GET请求中,If-Modified-Since是一种请求头字段,用于告诉服务器只有在请求的资源自指定日期和时间之后已被修改时,才返回该资源。这是浏览器和服务器之间的一种缓存协商机制,用于优化网络带宽和提高加载速度。

10:多个响应HTTP GET,服务器返回的 HTTP 状态代码和短语分别是什么?为什么不同?304 Not Modified什么意思?
多个HTTP GET的返回状态代码和短语,如下图所示。可以看到有200 OK、301 Moved Permanently、404 Not Found。

HTTP状态代码不同是因为它们表示不同类型的响应,反映了服务器对请求资源的处理结果。
304 Not Modified 状态码的含义是服务器告知客户端,请求的资源自上次请求以来没有被修改,因此客户端可以继续使用其缓存的版本,而无需重新下载。
11:对物理层的数据帧进行解析。
一个示例的物理层的数据帧,如下图所示。

可以看到,该数据帧的编号是42544,帧的总长度为486字节(3888比特),实际捕获的帧长度也为486字节(3888比特)。
捕获数据的网络接口的ID为0号,接口名称为\Device\NPF_{60116A39-C338-4C66-A5CF-5BBC6E88B657},接口描述为外网。
数据帧使用以太网封装类型。同时展示了到达时间、UTC到达时间等内容。
此数据包的时间偏移是0秒,与上一个捕获帧之间的时间差是0.00046秒,与上一个显示帧之间的时间差是63.029081秒,自参考帧或第一个帧以来的时间是159.335411秒。
该帧未被标记,且未被忽略。该帧中包含的协议列表,从最低层到最高层依次为:eth以太网、ethertype以太网类型字段、ip互联网协议、tcp传输控制协议、http超文本传输协议。用于该帧的着色规则名称是HTTP。用于该帧的着色规则字符串为http || tcp.port == 80 || http2。http:该帧包含HTTP协议的数据。tcp.port == 80:该帧的TCP端口是80,通常用于HTTP流量。http2:该帧包含HTTP/2协议的数据。
12:启动WireShark,自行设置过滤条件,重做实验一,观察能否抓到数据并进行分析。
能抓到数据,如下图所示。

如下图所示,源地址fe80::cc2a:d980:500d正在与目的地址fe80::dda:3845:7b8f:dbed进行大量的数据传输。在传输较大数据块的过程中,使用分段传输技术(Segmented Transmission)将数据分成多个TCP段,每个段都有一个序列号和确认号。

如下图所示,前面TCP的内容与上图类似。最后一个报文表示从源地址 fe80::dda:3845:7b8f:dbed 到目的地址 fe80::cc2a:d980:500d 的SMB2写入响应报文。SMB2协议通常用于文件共享和网络通信,这个写入响应报文表示文件写入操作已完成。

六:实验总结及体会
1:从服务器返回到浏览器的状态代码(HTTP状态码)用于指示HTTP请求的结果。这些状态代码由三位数字组成,每个数字有特定的含义。
2:常见的状态代码类别如下:
【1】1xx(信息性状态码):
- 100 Continue:继续发送请求的剩余部分。
- 101 Switching Protocols:服务器将遵从客户的请求转换到另外一种协议。
【2】2xx(成功状态码):
- 200 OK:请求成功,服务器已成功处理请求。
- 201 Created:请求成功且资源已被创建。
- 204 No Content:请求成功,但没有返回内容。
【3】3xx(重定向状态码):
- 301 Moved Permanently:请求的资源已被永久移动到新位置。
- 302 Found:请求的资源临时从不同的URI响应请求。
- 304 Not Modified:资源未被修改,客户端可以继续使用缓存的版本。
【4】4xx(客户端错误状态码):
- 400 Bad Request:请求无效或有语法错误。
- 401 Unauthorized:请求要求身份验证。
- 403 Forbidden:服务器理解请求但拒绝执行。
- 404 Not Found:请求的资源在服务器上找不到。
【5】5xx(服务器错误状态码):
- 500 Internal Server Error:服务器遇到未预料的情况,无法完成请求。
- 501 Not Implemented:服务器不支持请求的功能。
- 502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效响应。
- 503 Service Unavailable:服务器暂时无法处理请求,可能是由于过载或维护。
3:Server Hello 是 TLS 握手过程中的一个重要步骤。在这个阶段,服务器向客户端发送一个"Hello"消息,其中包含了服务器选择的加密算法、会话ID、服务器随机数以及服务器的证书等信息。
4:Change Cipher Spec 消息是TLS协议中的一个信号,表明从这条消息之后,双方将使用协商好的加密算法和密钥进行通信。