在 Wireshark 实验入门里,我们已经初步使用了 Wireshark 包嗅探器,我们现在可以操作 Wireshark 来查看网络协议。在这个实验中,我们会探索 HTTP 协议的几个方面:基本的 GET/response 交互,HTTP 消息格式,检索大型 HTML 文件,检索具有嵌入对象的 HTML 文件,HTTP 认证和安全性。在开始这些实验之前,您可能想查看书中第 2.2 节。
### 1.基本 HTTP GET/response 交互
我们开始探索 HTTP,方法是下载一个非常简单的 HTML 文件 非常短,并且不包含嵌入的对象。执行以下操作:
1. 启动您的浏览器。 2. 启动 Wireshark 数据包嗅探器,如 Wireshark 实验-入门所述(还没开始数据包捕获)。在 display-filter-specification 窗口中输入“http”(只是字母,不含引号标记),这样就在稍后的分 组列表窗口中只捕获 HTTP 消息。(我们只对 HTTP 协议感兴趣,不想看到其他所有的混乱 的数据包)。 3. 稍等一会儿(我们将会明白为什么不久),然后开始 Wireshark 数据包捕获。 4. 在浏览器中输入以下内容 http://gaia.cs.umass.edu/wireshark-labs/HTTP-wiresharkfile1.html 您的浏览器应显示非常简单的单行 HTML 文件。 5. 停止 Wireshark 数据包捕获。
你的 Wireshark 窗口应该类似于图 1 所示的窗口。如果你无法连接网络并运行 Wireshark,您 可以根据后面的步骤下载已捕获的数据包:
下载 zip 文件 http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip
解压缩文件 http-ethereal-trace-1。这个 zip 文件中的数据是由本书作者之一使用 Wireshark 在 作者电脑上收集的,并且是按照 Wireshark 实验中的步骤做的。 如果你下载了数据文件,你 可以将其加载到 Wireshark 中,并使用文件菜单选择打开并查看数据,然后选择 http-etherealtrace-1 文件。 结果显示应与图 1 类似。(在不同的操作系统上,或不同的 Wireshark 版本上, Wireshark 的界面会不同)。
**图 1:Wireshark 显示 http://gaia.cs.umass.edu/wireshark-labs/HTTPwireshark-file1.html 已被 您的浏览器打开**
图 1 中的示例在分组列表窗口中显示了两个被捕获的 HTTP 消息:GET 消息(从您的浏览 器发送到 gaia.cs.umass.edu 的 web 服务器)和从服务器到浏览器的响应消息。分组内容窗 口显示所选消息的详细信息(在这种情况下为 HTTP OK 消息,其在分组列表窗口中高亮显 示)。回想一下,因为 HTTP 消息被装载在 TCP 报文段内,该报文段是在 IP 分组封装吗, 进而在以太网帧,和帧中封装,所以界面中显示了帧,以太网,IP,TCP 分组信息以及 HTTP 报文信息。我们想最小化非 HTTP 数据的显示(我们这里只对 HTTP 感兴趣,这些其他协议 将在以后的实验中研究),所以确保帧,以太网,IP 和 TCP 行的信息被隐藏,注意左边有一 个加号或一个向右的三角形(这意味着有信息被隐藏),而 HTTP 行具有减号或向下三角形 (表示显示有关 HTTP 消息的所有信息)。
(注意:您应该忽略与 favicon.ico 相关的任何 HTTP GET 和 response。 如果你看到一个关 于这个文件的引用,这是你的浏览器自动询问服务器是否有一个图标文件应显示在浏览器 的 URL 旁边。 我们会忽略这个引起麻烦的引用。)
通过查看 HTTP GET 和响应消息中的信息,回答以下问题。 在回答以下问题时,您应该打 印出 GET 和响应消息(请参阅 Wireshark-入门实验以获取信息),并指出您在消息中的哪个 具体位置找到了回答以下问题的信息。 当您上交作业时,请注明输出,显示您在哪些地方 表示了您的答案(例如,对于我们的课程,我们要求学生用笔标记纸质副本,或用彩色字体 在电子副本的中注释文本)。
- 您的浏览器是否运行 HTTP 版本 0 或 1?服务器运行什么版本的 HTTP?
我的浏览器是HTTP 版本 1.1;服务器运行HTTP 版本 1.1。
- 您的浏览器会从接服务器接受哪种语言(如果有的话)?
中文
- 您的计算机的 IP 地址是什么? gaia.cs.umass.edu 服务器地址呢?
172.27.45.56;128.119.245.12
4. 服务器返回到浏览器的状态代码是什么?
200
5.服务器上 HTML 文件的最近一次修改是什么时候?
Sun, 11 Oct 2020 05:59:01 GMT
6.服务器返回多少字节的内容到您的浏览器?
128
7. 通过检查数据包内容窗口中的原始数据,你是否看到有协议头在数据包列表窗口中未显 示? 如果是,请举一个例子。
否
8. 检查第一个从您浏览器到服务器的 HTTP GET 请求的内容。您在 HTTP GET 中看到了 “IF-MODIFIED-SINCE”行吗?
没有
9. 检查服务器响应的内容。服务器是否显式返回文件的内容? 你是怎么知道的?
10. 现在,检查第二个 HTTP GET 请求的内容。 您在 HTTP GET 中看到了“IF-MODIFIEDSINCE:”行吗? 如果是,“IF-MODIFIED-SINCE:”头后面包含哪些信息?
11. 针对第二个 HTTP GET,从服务器响应的 HTTP 状态码和短语是什么?服务器是否明确 地返回文件的内容?请解释。