Wireshark,结合wireshark讲讲,一个请求从发出到收到响应都经过了什么

Wireshark 是一款强大的网络协议分析工具,用于捕获和分析网络数据包。当我们使用 Wireshark 跟踪一个请求从发出到收到响应的过程时,它能够揭示出这个过程中涉及的各个网络层次、协议交互以及数据包的详细内容。以下是一个典型HTTP请求(以GET请求为例)从发出到收到响应在Wireshark中的表现和所经历的主要阶段:

1. 请求发起

  • 用户操作:用户在浏览器中输入URL或点击链接,触发HTTP GET请求。

  • Wireshark捕获:在请求发起之前,确保Wireshark已启动并选择了正确的网络接口(通常是连接互联网的网卡)。开始捕获数据包。

2. DNS查询

  • 请求发送:浏览器首先需要解析URL中的域名以获取目标服务器的IP地址。因此,会发出一个DNS查询请求(使用UDP协议,端口53)。

  • Wireshark显示:在Wireshark中,你会看到一个或多个DNS查询数据包,其中包含请求方IP(本地计算机)、目的DNS服务器IP、查询类型(通常为A记录查询)和待解析的域名。

3. TCP连接建立(三次握手)

  • 请求发送:一旦获取到服务器IP,浏览器使用TCP协议(端口80或443对于HTTP/HTTPS)向服务器发起连接。这涉及到著名的三次握手过程:

    1. SYN:客户端发送一个SYN(同步序列编号)数据包,表明它希望与服务器建立连接。
    2. SYN+ACK:服务器回应一个SYN+ACK数据包,确认收到了客户端的请求,并同样希望建立连接。
    3. ACK:客户端发送最后一个ACK(确认)数据包,确认接收到服务器的SYN+ACK,至此,TCP连接建立完成。
  • Wireshark显示 :在Wireshark中,你会看到这三个连续的TCP数据包,每个数据包的标志位(Flags)字段清晰地标记为SYNSYN, ACKACK,同时显示了序列号(Sequence Number)和确认号(Acknowledgment Number)的变化。

4. HTTP请求发送

  • 请求发送:建立TCP连接后,浏览器构造并发送HTTP请求。对于GET请求,请求报文通常包含以下部分:

    • 请求行 :如GET /index.html HTTP/1.1,表示请求方法、资源路径和HTTP版本。
    • 请求头:包含诸如Host、User-Agent、Accept等信息。
    • 空行:标志着请求头结束。
    • 请求体(对于GET请求通常为空)。
  • Wireshark显示:在Wireshark中,你可以看到一个TCP数据包,其应用层协议被标记为HTTP。展开数据包详情,可以看到完整的HTTP请求内容,包括请求行、请求头和(如有)请求体。

5. 服务器处理请求

  • 服务器端:服务器接收到HTTP请求后,根据请求内容进行处理,如读取请求头、解析请求体(如果存在),查找资源,可能执行业务逻辑,并准备响应内容。

6. HTTP响应发送

  • 响应发送:服务器构建HTTP响应报文,包含:

    • 状态行 :如HTTP/1.1 200 OK,表示HTTP版本、状态码和状态描述。
    • 响应头:包含Content-Type、Content-Length、Server等信息。
    • 空行:分隔响应头与响应体。
    • 响应体:实际返回的内容,如HTML页面、JSON数据等。
  • Wireshark显示:在Wireshark中,你会看到一个新的TCP数据包,其应用层协议仍标记为HTTP。展开数据包详情,可以观察到完整的HTTP响应内容,包括状态行、响应头和响应体。

7. 数据传输

  • 数据交换:如果响应体较大,可能会分为多个TCP数据包传输。Wireshark会显示这些连续的数据包,每个数据包的TCP层都有相应的序列号和确认号,以保持数据的正确重组。

8. TCP连接关闭(四次挥手)

  • 连接终止:完成数据传输后,客户端或服务器(通常是客户端)发起TCP连接的关闭,通过发送FIN(结束)数据包开始四次挥手过程:

    1. FIN:一方发送FIN包,表示它没有数据要发送了。
    2. ACK:另一方回应一个ACK包,确认收到FIN。
    3. FIN:另一方也准备好关闭,发送自己的FIN包。
    4. ACK:原发送方回应ACK包,确认收到对方的FIN。
  • Wireshark显示 :在Wireshark中,你可以观察到这四个TCP数据包,其标志位分别标记为FIN, ACKACKFIN, ACKACK,以及对应的序列号和确认号变化。

综上所述,Wireshark能够清晰地展现一个HTTP请求从发出到收到响应过程中涉及的所有网络交互细节,包括DNS查询、TCP连接建立与关闭、HTTP请求与响应的具体内容,以及可能的数据传输过程。通过对这些数据包的深入分析,可以诊断网络问题、理解协议行为或进行网络安全审计等。

相关推荐
无咎.lsy2 分钟前
vue之vuex的使用及举例
前端·javascript·vue.js
fishmemory7sec10 分钟前
Electron 主进程与渲染进程、预加载preload.js
前端·javascript·electron
fishmemory7sec12 分钟前
Electron 使⽤ electron-builder 打包应用
前端·javascript·electron
豆豆1 小时前
为什么用PageAdmin CMS建设网站?
服务器·开发语言·前端·php·软件构建
twins35202 小时前
解决Vue应用中遇到路由刷新后出现 404 错误
前端·javascript·vue.js
qiyi.sky2 小时前
JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
前端·javascript·vue.js
煸橙干儿~~2 小时前
分析JS Crash(进程崩溃)
java·前端·javascript
安冬的码畜日常2 小时前
【D3.js in Action 3 精译_027】3.4 让 D3 数据适应屏幕(下)—— D3 分段比例尺的用法
前端·javascript·信息可视化·数据可视化·d3.js·d3比例尺·分段比例尺
l1x1n03 小时前
No.3 笔记 | Web安全基础:Web1.0 - 3.0 发展史
前端·http·html
昨天;明天。今天。3 小时前
案例-任务清单
前端·javascript·css