实验一:基本的GET/回答交互
实验描述:
我们开始探索 HTTP,方法是下载一个非常简单的 HTML 文件非常短,并且不包含嵌入的对象。实验步骤如下:
- 启动您的浏览器。
- 启动 Wireshark 数据包嗅探器,如 Wireshark 实验-入门所述(还没开始数据包捕获)。在 display-filter-specification 窗口中输入“http”(只是字母,不含引号标记),这样就在稍后的分组列表窗口中只捕获 HTTP消息。(我们只对 HTTP 协议感兴趣,不想看到其他所有的混乱的数据包)。
- 稍等一会儿(我们将会明白为什么不久),然后开始 Wireshark 数据包捕获。
- 在浏览器中输入以下内容 http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html 您的浏览器应显示非常简单的单行 HTML 文件。
- 停止 Wireshark 数据包捕获。
实验答案和解释:
您的浏览器是否运行 HTTP 版本 1.0 或 1.1?服务器运行什么版本的 HTTP?
答:浏览器和服务器都运行 HTTP/1.1
您的浏览器会从接服务器接受哪种语言(如果有的话)?
答:Accept-Language: zh-CN
您的计算机的IP地址是什么? gaia.cs.umass.edu服务器地址呢?
答:计算机 IP 192.168.2.239;gaia.cs.umass.edu 服务器 IP 128.119.245.12
服务器返回到浏览器的状态代码是什么?
答:200 OK
服务器上 HTML 文件的最近一次修改是什么时候?
答:Last-Modified: Mon, 02 Dec 2019 06:59:01 GMT
服务器返回多少字节的内容到您的浏览器?
答:Content-Length: 128
通过检查数据包内容窗口中的原始数据,你是否看到有协议头在数据包列表窗口中未显示? 如果是,请举一个例子。
答:应该没有
实验二:HTTP条件Get/response交互
实验描述:
大多数 Web 浏览器使用对象缓存,从而在检索 HTTP 对象时执行条件 GET。执行以下步骤之前,请确保浏览器的缓存为空。然后按照如下实验步骤:
- 启动您的浏览器,并确保您的浏览器的缓存被清除,如上所述。
- 启动 Wireshark 数据包嗅探器。
- 在浏览器中输入以下 URL http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html 您的浏览器应显示一个非常简单的五行 HTML 文件。
- 再次快速地将相同的 URL 输入到浏览器中(或者只需在浏览器中点击刷新按钮)。
- 停止 Wireshark 数据包捕获,并在 display-filter-specification 窗口中输入 “http”,以便只捕获 HTTP 消息,并在数据包列表窗口中显示。
实验问题和答案:
检查第一个从您浏览器到服务器的 HTTP GET 请求的内容。您在 HTTP GET 中看到了 “IF-MODIFIED-SINCE” 行吗?
答:没看到
检查服务器响应的内容。服务器是否显式返回文件的内容? 你是怎么知道的?
答:服务器显式返回了文件内容,在实体部分可以看到
现在,检查第二个 HTTP GET 请求的内容。 您在 HTTP GET 中看到了 “IF-MODIFIED-SINCE:” 行吗? 如果是,“IF-MODIFIED-SINCE:”头后面包含哪些信息?
答:If-Modified-Since: Mon, 02 Dec 2019 06:59:01 GMT\r\n。包含了本地保存的文件的在服务器上的最后修改时间
针对第二个 HTTP GET,从服务器响应的 HTTP 状态码和短语是什么?服务器是否明确地返回文件的内容?请解释。
答:服务器没有明确返回文件内容,因为文件后来没有被修改。
实验三:检索长文件
实验描述:
在我们到目前为止的例子中,检索的文档是简短的 HTML 文件。 接下来我们来看看当我们下载一个长的 HTML 文件时会发生什么。 按以下步骤操作:
- 启动您的浏览器,并确保您的浏览器缓存被清除,如上所述。
- 启动 Wireshark 数据包嗅探器
- 在您的浏览器中输入以下 URL http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html 您的浏览器应显示相当冗长的美国权利法案。
- 停止 Wireshark 数据包捕获,并在 display-filter-specification 窗口中输入“http”,以便只显示捕获的 HTTP 消息。
注意:如果无法连接网络并运行 Wireshark,则可以使用 http-ethereal-trace-3 数据包跟踪来回答以下问题;请参见上文注释。)
实验问题和答案:
您的浏览器发送多少 HTTP GET 请求消息?哪个数据包包含了美国权利法案的消息?
答:只发送了一个 HTTP GET 请求消息。
返回的四个 TCP 数据包都包含了美国权利法案的消息。
哪个数据包包含响应 HTTP GET 请求的状态码和短语? 返回的第一个 TCP 数据包包含响应 HTTP GET 请求的状态码和短语
响应中的状态码和短语是什么?
答:200 OK
需要多少包含数据的 TCP 段来执行单个 HTTP 响应和权利法案文本?
答:需要 4 个 TCP 数据包
实验四:具有嵌入对象的HTML文档
实验描述:
现在我们已经看到 Wireshark 如何显示捕获的大型 HTML 文件的数据包流量,我们可以看看当浏览器使用嵌入的对象下载文件时,会发生什么,即包含其他对象的文件(在下面的例子中是图像文件) 的服务器。 执行以下操作:
- 启动您的浏览器。
- 启动 Wireshark 数据包嗅探器。
- 在浏览器中输入以下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 服务器。
- 停止 Wireshark 数据包捕获,并在 display-filter-specification 窗口中输入“http”,以便只显示捕获的 HTTP 消息。
注意:如果无法连接网络并运行 Wireshark,则可以使用 http-ethereal-trace-4 数据包跟踪来回答以下问题;请参见上文注释。)
实验问题和答案:
您的浏览器发送了几个HTTP GET请求消息? 这些GET请求发送到哪个IP地址?
答:3 个 HTTP GET 请求消息。都发送到 128.119.245.12
浏览器从两个网站串行还是并行下载了两张图片?请说明。
答:串行,因为有 Connection: Keep-Alive
实验五:HTTP认证
实验描述:
最后,我们尝试访问受密码保护的网站,并检查网站的 HTTP 消息交换的序列。URL http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html 是受密码保护的。用户名是 “wireshark-students”(不包含引号),密码是 “network”(再次不包含引号)。所以让我们访问这个“安全的”受密码保护的网站。执行以下操作:
- 请确保浏览器的缓存被清除,如上所述,然后关闭你的浏览器,再然后启动浏览器
- 启动 Wireshark 数据包嗅探器。
- 在浏览器中输入以下URL http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wiresharkfile5.html 在弹出框中键入所请求的用户名和密码。
- 停止 Wireshark 数据包捕获,并在 display-filter-specification 窗口中输入“http”,以便只显示捕获的 HTTP 消息。
(注意:如果无法连接网络并运行 Wireshark,则可以使用 http-ethereal-trace-5 数据包跟踪来回答以下问题;请参见上文注释。)
现在来看看Wireshark输出。 您可能需要首先阅读 HTTP 身份验证相关信息,方法是在 http://frontier.userland.com/stories/storyReader$2159 上查看 “HTTP Access Authentication Framework ” 上的易读材料。
实验问题和答案:
对于您的浏览器的初始 HTTP GET 消息,服务器响应(状态码和短语)是什么响应?
答:401 Unauthorized
当您的浏览器第二次发送 HTTP GET 消息时,HTTP GET 消息中包含哪些新字段?
答:Authorization: Basic d2lyZXNoYXJrLXN0dWRlbnRzOm5ldHdvcms=