Bootstrap

《计算机网络-自顶向下》wireShark实验-第二章:http

基本HTTP GET/response交互


我们开始探索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页面打开的过多会有干扰,可以使用实验网址的ip进行过滤,具体做法如下:

客户端(浏览器)向服务端发送的get请求

服务端向客户单响应的http请求 

通过查看HTTP GET和响应消息中的信息,回答以下问题。

 问题

1.您的浏览器是否运行HTTP版本1.0或1.1?服务器运行什么版本的HTTP?

浏览器

服务器

2.您的浏览器会从接服务器接受哪种语言(如果有的话)?

3.您的计算机的IP地址是什么? gaia.cs.umass.edu服务器地址呢?

4.服务器返回到浏览器的状态代码是什么?

200

5.服务器上HTML文件的最近一次修改是什么时候?

如果没有该字段是因为你不是第一次打开这个页面(比如你刷新过该页面),非初次打开时,该页面的内容会被缓存到浏览器,之后再次获取该网页的内容浏览器就会从缓存中获取,这是接下里要进行的条件get实验。

如果你想要看到该字段,需要打开浏览器设置,清除浏览器缓存,以我的edge浏览器为例

清除浏览器的缓存数据之后再次刷新后,在wireShark中抓到的包就是服务器传送过来的包,即可看到last-modified字段了 

6.服务器返回多少字节的内容到您的浏览器?

128字节

同理如果没有看到该字段,清理浏览器缓存重新抓包即可

条件HTTP GET/response交互

该实验需要经过上述清除浏览器缓存后再进行,目的是清除的看到实验过程

实验步骤:

  • 打开gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html
  • 清除浏览器缓存
  • 在wireShark的过滤窗口中输入 http and ip.addr==128.119.245.12
  • 打开wireShark的捕获按钮,开始捕获页面
  • 刷新浏览器页面,观察wireShark的抓包情况
  • 再次刷新浏览器页面,观察wireShark的抓包情况

问题

1. 检查第一个从您浏览器到服务器的HTTP GET请求的内容。您在HTTP GET中看到了“IF-MODIFIED-SINCE”行吗?

没有看到

2. 检查服务器响应的内容。服务器是否显式返回文件的内容? 你是怎么知道的?

返回,在响应文件的Line-based字段看到了网页的内容

3. 现在,检查第二个HTTP GET请求的内容。 您在HTTP GET中看到了“IF-MODIFIED-SINCE:”行吗? 如果是,“IF-MODIFIED-SINCE:”头后面包含哪些信息?

可以看到

关于IF-MODIFIED-SINCE字段的说明

IF-MODIFIED-SINCE字段是HTTP请求头中的一个条件性字段,用于指定上次请求资源的修改时间服务器可以使用该字段来判断资源是否自上次请求以来发生了修改。

  1. IF-MODIFIED-SINCE字段:客户端发送HTTP请求时,可以在请求头中包含IF-MODIFIED-SINCE字段,该字段的值是上次获取资源时的时间戳服务器会根据这个时间戳来判断资源是否已经被修改,如果没有修改,服务器将返回状态码304 Not Modified,表示客户端的缓存版本仍然有效,无需重新获取资源。

  2. Last-Modified字段:服务器在响应中会包含Last-Modified字段,该字段的值表示资源的最后修改时间。当客户端第一次获取资源时,服务器会在响应头中包含这个字段。客户端可以将这个时间戳保存起来,以便在下次请求时使用IF-MODIFIED-SINCE字段进行条件请求。

Last-Modified字段是由服务器在响应中发送的,用于告知客户端资源的最后修改时间;而IF-MODIFIED-SINCE字段是由客户端在请求中发送的,用于让服务器判断资源是否已经被修改,从而决定是否返回新的资源或者状态码304 Not Modified。这两个字段通常配合使用,通过比较资源的最后修改时间来实现缓存验证和控制。

因此,IF-MODIFIED-SINCE字段通常用于优化网络流量和减少服务器负载,通过允许客户端缓存资源并避免不必要的下载。当资源未被修改时,客户端可以直接使用缓存的副本,而无需重新下载整个资源。

4. 针对第二个HTTP GET,从服务器响应的HTTP状态码和短语是什么?服务器是否明确地返回文件的内容?请解释。

状态码:304

短语:Not Modified

服务器并没有明确返回文件内容

因为第一次请求时文件内容已经被缓存到本地,再次请求时IF-MODIFIED-SINCE字段的值在Last-Modified的值前边,说明客户端向浏览器再次请求的时间在服务器对该文件内容的修改时间之前,也就是说,浏览器此时向服务器请求的资源与上次一样,尚未被修改,因此不需要再次返回具体内容,浏览器只需要从缓存中取出即可

检索长文件

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

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

问题

1.您的浏览器发送多少HTTP GET请求消息?哪个数据包包含了美国权利法案的消息?

一个httpGET请求

在响应包中包含了美国权利法案的消息,具体内容在Line-based字段

2.哪个数据包包含响应HTTP GET请求的状态码和短语?

具有嵌入对象的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消息

问题

1. 您的浏览器发送了几个HTTP GET请求消息? 这些GET请求发送到哪个IP地址?

三个

2. 浏览器从两个网站串行还是并行下载了两张图片?请说明。

串行

第一个图片的响应报文中的Data字段的值为

第二个图片的响应报文中Date字段的值为

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消息。

问题

1. 对于您的浏览器的初始HTTP GET消息,服务器响应(状态码和短语)是什么响应?

2. 当您的浏览器第二次发送HTTP GET消息时,HTTP GET消息中包含哪些新字段?

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;