实验一:基本的GET/回答交互

实验描述

我们开始探索 HTTP,方法是下载一个非常简单的 HTML 文件非常短,并且不包含嵌入的对象。实验步骤如下:

  1. 启动您的浏览器。
  2. 启动 Wireshark 数据包嗅探器,如 Wireshark 实验-入门所述(还没开始数据包捕获)。在 display-filter-specification 窗口中输入“http”(只是字母,不含引号标记),这样就在稍后的分组列表窗口中只捕获 HTTP消息。(我们只对 HTTP 协议感兴趣,不想看到其他所有的混乱的数据包)。
  3. 稍等一会儿(我们将会明白为什么不久),然后开始 Wireshark 数据包捕获。
  4. 在浏览器中输入以下内容 http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html 您的浏览器应显示非常简单的单行 HTML 文件。
  5. 停止 Wireshark 数据包捕获。

实验答案和解释

♣ Wireshark _HTTP实验答案 - 图1 您的浏览器是否运行 HTTP 版本 1.0 或 1.1?服务器运行什么版本的 HTTP?

答:浏览器和服务器都运行 HTTP/1.1

♣ Wireshark _HTTP实验答案 - 图2 您的浏览器会从接服务器接受哪种语言(如果有的话)?

答:Accept-Language: zh-CN

♣ Wireshark _HTTP实验答案 - 图3 您的计算机的IP地址是什么? gaia.cs.umass.edu服务器地址呢?

答:计算机 IP 192.168.2.239;gaia.cs.umass.edu 服务器 IP 128.119.245.12

♣ Wireshark _HTTP实验答案 - 图4 服务器返回到浏览器的状态代码是什么?

答:200 OK

♣ Wireshark _HTTP实验答案 - 图5 服务器上 HTML 文件的最近一次修改是什么时候?

答:Last-Modified: Mon, 02 Dec 2019 06:59:01 GMT

♣ Wireshark _HTTP实验答案 - 图6 服务器返回多少字节的内容到您的浏览器?

答:Content-Length: 128

♣ Wireshark _HTTP实验答案 - 图7 通过检查数据包内容窗口中的原始数据,你是否看到有协议头在数据包列表窗口中未显示? 如果是,请举一个例子。

答:应该没有

实验二:HTTP条件Get/response交互

实验描述

大多数 Web 浏览器使用对象缓存,从而在检索 HTTP 对象时执行条件 GET。执行以下步骤之前,请确保浏览器的缓存为空。然后按照如下实验步骤:

  1. 启动您的浏览器,并确保您的浏览器的缓存被清除,如上所述。
  2. 启动 Wireshark 数据包嗅探器。
  3. 在浏览器中输入以下 URL http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html 您的浏览器应显示一个非常简单的五行 HTML 文件。
  4. 再次快速地将相同的 URL 输入到浏览器中(或者只需在浏览器中点击刷新按钮)。
  5. 停止 Wireshark 数据包捕获,并在 display-filter-specification 窗口中输入 “http”,以便只捕获 HTTP 消息,并在数据包列表窗口中显示。

实验问题和答案

♣ Wireshark _HTTP实验答案 - 图8 检查第一个从您浏览器到服务器的 HTTP GET 请求的内容。您在 HTTP GET 中看到了 “IF-MODIFIED-SINCE” 行吗?

答:没看到

♣ Wireshark _HTTP实验答案 - 图9 检查服务器响应的内容。服务器是否显式返回文件的内容? 你是怎么知道的?

答:服务器显式返回了文件内容,在实体部分可以看到

♣ Wireshark _HTTP实验答案 - 图10 现在,检查第二个 HTTP GET 请求的内容。 您在 HTTP GET 中看到了 “IF-MODIFIED-SINCE:” 行吗? 如果是,“IF-MODIFIED-SINCE:”头后面包含哪些信息?

答:If-Modified-Since: Mon, 02 Dec 2019 06:59:01 GMT\r\n。包含了本地保存的文件的在服务器上的最后修改时间

♣ Wireshark _HTTP实验答案 - 图11 针对第二个 HTTP GET,从服务器响应的 HTTP 状态码和短语是什么?服务器是否明确地返回文件的内容?请解释。

答:服务器没有明确返回文件内容,因为文件后来没有被修改。

实验三:检索长文件

实验描述:

在我们到目前为止的例子中,检索的文档是简短的 HTML 文件。 接下来我们来看看当我们下载一个长的 HTML 文件时会发生什么。 按以下步骤操作:

  1. 启动您的浏览器,并确保您的浏览器缓存被清除,如上所述。
  2. 启动 Wireshark 数据包嗅探器
  3. 在您的浏览器中输入以下 URL http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html 您的浏览器应显示相当冗长的美国权利法案。
  4. 停止 Wireshark 数据包捕获,并在 display-filter-specification 窗口中输入“http”,以便只显示捕获的 HTTP 消息。

注意:如果无法连接网络并运行 Wireshark,则可以使用 http-ethereal-trace-3 数据包跟踪来回答以下问题;请参见上文注释。)

实验问题和答案:

♣ Wireshark _HTTP实验答案 - 图12 您的浏览器发送多少 HTTP GET 请求消息?哪个数据包包含了美国权利法案的消息?

答:只发送了一个 HTTP GET 请求消息。
返回的四个 TCP 数据包都包含了美国权利法案的消息。

♣ Wireshark _HTTP实验答案 - 图13 哪个数据包包含响应 HTTP GET 请求的状态码和短语? 返回的第一个 TCP 数据包包含响应 HTTP GET 请求的状态码和短语

♣ Wireshark _HTTP实验答案 - 图14 响应中的状态码和短语是什么?

答:200 OK

♣ Wireshark _HTTP实验答案 - 图15 需要多少包含数据的 TCP 段来执行单个 HTTP 响应和权利法案文本?

答:需要 4 个 TCP 数据包

实验四:具有嵌入对象的HTML文档

实验描述:

现在我们已经看到 Wireshark 如何显示捕获的大型 HTML 文件的数据包流量,我们可以看看当浏览器使用嵌入的对象下载文件时,会发生什么,即包含其他对象的文件(在下面的例子中是图像文件) 的服务器。 执行以下操作:

  1. 启动您的浏览器。
  2. 启动 Wireshark 数据包嗅探器。
  3. 在浏览器中输入以下URL http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html 您的浏览器应显示包含两个图像的短 HTML 文件。这两个图像在基本 HTML 文件中被引用。也就是说,图像本身不包含在 HTML 文件中;相反,图像的 URL 包含在已下载的 HTML 文件中。如书中所述,您的浏览器将不得不从指定的网站中检索这些图标。我们的出版社的图标是从 www.aw-bc.com 网站检索的。而我们第 5 版(我们最喜欢的封面之一)的封面图像存储在 manic.cs.umass.edu 服务器。
  4. 停止 Wireshark 数据包捕获,并在 display-filter-specification 窗口中输入“http”,以便只显示捕获的 HTTP 消息。

注意:如果无法连接网络并运行 Wireshark,则可以使用 http-ethereal-trace-4 数据包跟踪来回答以下问题;请参见上文注释。)

实验问题和答案:

♣ Wireshark _HTTP实验答案 - 图16 您的浏览器发送了几个HTTP GET请求消息? 这些GET请求发送到哪个IP地址?

答:3 个 HTTP GET 请求消息。都发送到 128.119.245.12

♣ Wireshark _HTTP实验答案 - 图17 浏览器从两个网站串行还是并行下载了两张图片?请说明。

答:串行,因为有 Connection: Keep-Alive

实验五:HTTP认证

实验描述:

最后,我们尝试访问受密码保护的网站,并检查网站的 HTTP 消息交换的序列。URL http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html 是受密码保护的。用户名是 “wireshark-students”(不包含引号),密码是 “network”(再次不包含引号)。所以让我们访问这个“安全的”受密码保护的网站。执行以下操作:

  1. 请确保浏览器的缓存被清除,如上所述,然后关闭你的浏览器,再然后启动浏览器
  2. 启动 Wireshark 数据包嗅探器。
  3. 在浏览器中输入以下URL http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wiresharkfile5.html 在弹出框中键入所请求的用户名和密码。
  4. 停止 Wireshark 数据包捕获,并在 display-filter-specification 窗口中输入“http”,以便只显示捕获的 HTTP 消息。

(注意:如果无法连接网络并运行 Wireshark,则可以使用 http-ethereal-trace-5 数据包跟踪来回答以下问题;请参见上文注释。)

现在来看看Wireshark输出。 您可能需要首先阅读 HTTP 身份验证相关信息,方法是在 http://frontier.userland.com/stories/storyReader$2159 上查看 “HTTP Access Authentication Framework ” 上的易读材料。

实验问题和答案:

♣ Wireshark _HTTP实验答案 - 图18 对于您的浏览器的初始 HTTP GET 消息,服务器响应(状态码和短语)是什么响应?

答:401 Unauthorized

♣ Wireshark _HTTP实验答案 - 图19 当您的浏览器第二次发送 HTTP GET 消息时,HTTP GET 消息中包含哪些新字段?

答:Authorization: Basic d2lyZXNoYXJrLXN0dWRlbnRzOm5ldHdvcms=