Wireshark Lab(二)—— HTTP

297 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第26天,点击查看活动详情

引言

上一节初识 Wireshark 中,对数据包探测的架构和 Wireshark 的使用有了一定基础的了解,从本篇文章开始会使用 Wireshark 陆续对协议的运行展开分析,这篇文章我们将探讨 HTTP 协议的几个方面:

  • 基础的 GET 方法的响应交互
  • HTTP 消息格式
  • 检索大型 HTML 文件
  • 检索带有嵌入对象的 HTML 文件
  • HTTP 身份验证和安全性

HTTP GET 响应交互流程

操作步骤

  • 打开 Wireshark 准备捕获数据
  • 打开浏览器页面输入域名 gaia.cs.umass.edu/wireshark-l…
  • 停止 Wireshark 捕获数据包并在过滤栏过滤出 http 请求

抓包结果

在 Wireshark 会看到我们如图所示的请求情况,有两个方向的 HTTP 相互:

  • 从浏览器发起的 GET 请求到 gaia.cs.umass.edu 服务端
  • 从 gaia.cs.umass.edu 服务端到客户端浏览器响应

根据 Wireshark 消息的详情,还显示了帧、以太网、IP 和 TCP 数据包信息。

image-20221224180735711.png

检索长文档

操作步骤

  • 启动您的 Web 浏览器,并确保浏览器的缓存已清除
  • 启动 Wireshark 数据包嗅探器
  • 在浏览器中输入 gaia.cs.umass.edu/wireshark-l…
  • 停止 Wireshark 数据包捕获,并在显示过滤器规范窗口中输入 “http”,以便仅显示捕获的 HTTP 消息

抓包结果

在数据包列表窗口中,我们看到 HTTP GET 消息,然后是对 HTTP GET 请求的多数据包 TCP 响应。在我们的例子中,HTML 文件相当长约 4500 字节,从而一个 TCP 数据包无法容纳这些字节。在最新版本的 Wireshark 中,Wireshark 将每个 TCP 段指示为单独的数据包,单个 HTTP 响应在多个 TCP 数据包中分段,由 Wireshark 在显示时将其组装。

image-20221224203556128.png

带有嵌入对象的 HTML 文档

操作步骤

  • 启动您的 Web 浏览器,并确保浏览器的缓存已清除
  • 启动 Wireshark 数据包嗅探器
  • 在浏览器中输入 gaia.cs.umass.edu/wireshark-l…
  • 停止 Wireshark 数据包捕获,并在显示过滤器规范窗口中输入 “http”,以便仅显示捕获的 HTTP 消息

抓包结果

从抓包结果上看到,请求的一个 HTML,后又发起两个请求图片的请求。其中请求一个 PNG 图片时立即得到了响应,而请求 jpg 图片时,服务端先返回了 301 Moved Permanently

HTTP 301 301 Moved Permanently 说明请求的资源已经被移动到了由 Location 头部指定的 url 上,是固定的不会再改变。浏览器会根据该响应修正。

image-20221224205925896.png

HTTP身份验证

操作步骤

  • 启动您的 Web 浏览器,并确保浏览器的缓存已清除
  • 启动 Wireshark 数据包嗅探器
  • 在浏览器中输入 gaia.cs.umass.edu/wireshark-l…
  • 在弹出框中键入请求的用户名和密码。username/password:wireshark-students/network
  • 停止 Wireshark 数据包捕获,并在显示过滤器规范窗口中输入 “http”,以便仅显示捕获的 HTTP 消息

抓包结果

根据抓包结果我们可以看到,在第一请求地址时,由于没有输入过账号密码,服务端返回 401 Unauthorized,当我们输入账号时再次请求时,输入的用户名(wireshark-students)和密码(network)被以 Base64 格式编码成字符串 d2lyZXNoYXJrLXN0dWRlbnRzOm5ldHdvcms= 携带在 HTTP GET 请求的请求头 Authorization: Basic 之后。

image-20221224211329092.png