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请求与响应的具体内容,以及可能的数据传输过程。通过对这些数据包的深入分析,可以诊断网络问题、理解协议行为或进行网络安全审计等。

相关推荐
半开半落几秒前
nuxt3安装pinia报错500[vite-node] [ERR_LOAD_URL]问题解决
前端·javascript·vue.js·nuxt
理想不理想v28 分钟前
vue经典前端面试题
前端·javascript·vue.js
不收藏找不到我29 分钟前
浏览器交互事件汇总
前端·交互
YBN娜43 分钟前
Vue实现登录功能
前端·javascript·vue.js
阳光开朗大男孩 = ̄ω ̄=43 分钟前
CSS——选择器、PxCook软件、盒子模型
前端·javascript·css
minDuck1 小时前
ruoyi-vue集成tianai-captcha验证码
java·前端·vue.js
小政爱学习!1 小时前
封装axios、环境变量、api解耦、解决跨域、全局组件注入
开发语言·前端·javascript
魏大帅。1 小时前
Axios 的 responseType 属性详解及 Blob 与 ArrayBuffer 解析
前端·javascript·ajax
花花鱼1 小时前
vue3 基于element-plus进行的一个可拖动改变导航与内容区域大小的简单方法
前端·javascript·elementui
k09331 小时前
sourceTree回滚版本到某次提交
开发语言·前端·javascript