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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业版ChatGPT用户激增至60万;百度文心一言推出个性化声音定制功能

🦉 AI新闻 🚀 企业版ChatGPT用户激增至60万 摘要:OpenAI首席运营官Brad Lightcap在接受采访时透露,企业版ChatGPT的注册用户已超60万,相较2024年1月的15万用户,短短三个月内增长了300%。这一版本自2023年…

PHP获取路径或目录或当前文件名

<?php //获取当前文件的绝对路径 echo "__FILE__: > ".__FILE__; echo <br/>; //获取当前文件的名称 echo basename(__FILE__); echo <br/>; //获取当前脚本的目录 echo "__DIR__: > ".__DIR__; echo <br/>…

使用Redisson实现分布式锁解决幂等问题

业务场景 功能&#xff1a;实现创建订单功能&#xff0c;要求是保证接口幂等。 引入pom依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.13.2</version> </…

C++11新特性(2) ——动态内存和智能指针从入门到入坑

动态内存与智能指针 动态内存的使用十分容易出现问题&#xff08;内存泄漏/非法内存&#xff09;&#xff0c;而智能指针能更安全、容易的使用动态内存&#xff0c;因为他负责自动释放所指向的对象&#xff0c;并且在出现异常时&#xff0c;也会自动释放。 两种智能指针&#…

《springcloud alibaba》 四 seata安装以及使用

目录 准备调整db配置准备创建数据库 seata配置nacos配置confi.txt下载向nacos推送配置的脚本 启动seata新建项目order-seata项目 订单项目数据库脚本pom.xmlapplication.yml启动类实体类dao类service类controller类feign类mapper类 stock-seata 库存项目数据库脚本pom.xmlappli…

STM32学习和实践笔记(5):时钟树

STM32一共有4个时钟源。外部时钟高低速各一个&#xff0c;内部时钟高低速各一个。 外部高速时钟是&#xff1a;4-16MHZ的HSE OSC。HS表示高速high speed. E表示外部的external。开发板该处安装的8M晶振。 外部低速时钟是&#xff1a;32.768KHz的LSI OSC。LS表示高速low speed…

【IP层的校验和与UDP的校验和】+【FPGA实现】

IP头校验和 IP头校验和是一种错误检测机制&#xff0c;用于在互联网协议&#xff08;IP&#xff09;中保证IP头的数据完整性。 当一个IP数据包从源主机发送到目的主机时&#xff0c;它经过许多路由器和交换机&#xff0c;校验和可以帮助这些中间设备检查数据包在传输过程中是…

为说阿拉伯语的国家进行游戏本地化

阿拉伯语是由超过4亿人使用的语言&#xff0c;并且是二十多个国家的官方语言。进入这些国家的市场并非易事——虽然他们共享一种通用语言&#xff0c;但每个国家都有自己独特的文化&#xff0c;有自己的禁忌和对审查的处理方式。这就是为什么视频游戏公司长期以来都远离阿拉伯语…

Qt QML的插件(Qt Quick 2 Extension Plugin)方法

Qt Quick的插件方法 序言环境前置注意概念——Qt Quick插件的相关知识插件里的qml文件模块名的相关知识模块名本身注意事项模块名版本注意事项 以示例来说明创建插件qmltypes的生成qmltypes的可能性失效 插件的编码注意1、插件模块版本控制2、pro里的注意 调用插件插件信息输入…

华为手机 鸿蒙系统 或者安卓系统的百度网盘下载的文件保存在手机什么位置如何查看

华为手机 鸿蒙系统 或者安卓系统的百度网盘下载的文件保存在手机什么位置如何查看 连接电脑后一般在这里位置 计算机\Mate 20 Pro (UD)\内部存储\Download\BaiduNetdisk 也就是用usb&#xff08;数据线&#xff0c;不是充电线&#xff0c;要四心的 )连接手机后&#xff0c;打…

计算机网络——40各个层次的安全性

各个层次的安全性 安全电子邮件 Alice需要发送机密的报文m给Bob Alice 产生随机的对称秘钥&#xff0c; K s K_s Ks​使用 K s K_s Ks​对报文进行加密&#xff08;为了效率&#xff09;对 K s K_s Ks​使用Bob的公钥进行加密发送 K s ( m ) K_s(m) Ks​(m)和 K B ( K S ) K…

设计模式:生活中的责任链模式

责任链模式可以用一个日常生活中的接力赛来类比。在接力赛中&#xff0c;每个跑步者负责赛道的一段距离&#xff0c;然后将接力棒传递给下一个跑步者&#xff0c;直到最后一个跑步者完成比赛。每个跑步者都有机会跑自己的那一段&#xff0c;但如果他跑不了&#xff0c;他需要将…

uniapp如何配置后使用uni.chooseLocation等地图位置api

在uniapp中想要使用uni.getLocation、uni.chooseLocation ……api的时候我们需要在小程序就开启配置&#xff0c;不然无法使用。 第一步&#xff1a;首先找到manifest.json 第二步&#xff1a;点击源码视图 第三步&#xff1a;在 mp-weixin 加入下面代码 "permission&…

Paper Digest | GPT-RE:基于大语言模型针对关系抽取的上下文学习

持续分享 SPG 及 SPG LLM 双驱架构应用相关进展 1、动机 在很多自然语言处理任务中&#xff0c;上下文学习的性能已经媲美甚至超过了全资源微调的方法。但是&#xff0c;其在关系抽取任务上的性能却不尽如人意。以 GPT-3 为例&#xff0c;一些基于 GPT-3 的上下文学习抽取方…

DXP学习002-PCB编辑器的环境参数及电路板参数相关设置

目录 一&#xff0c;dxp的pcb编辑器环境 1&#xff0c;创建新的PCB设计文档 2&#xff0c;PCB编辑器界面 1&#xff09;布线工具栏 2&#xff09;公用工具栏 3&#xff09;层标签栏 ​编辑 3&#xff0c;PCB设计面板 1&#xff09;打开pcb设计面板 4&#xff0c;PCB观…

【HTML】简单制作一个分形动画

目录 前言 开始 HTML部分 效果图 ​编辑​编辑​编辑​编辑总结 前言 无需多言&#xff0c;本文将详细介绍一段代码&#xff0c;具体内容如下&#xff1a; 开始 首先新建文件夹&#xff0c;创建一个文本文档&#xff0c;其中HTML的文件名改为[index.html]&a…

JavaEE初阶之单例模式详解

目录 题外话 正题 单例模式 概念 优点 缺点 饿汉式单例模式 代码及详解 懒汉式单例模式 代码及详解 小结 题外话 昨天爬山去了,回来吃了个烧烤有点累,昨天旷了一天,每周稳定发个五篇文章是没什么太大问题的 正题 单例模式 概念 是一种常见的软件设计模式,确保一个类…

nginx 配置访问地址和解决跨域问题(反向代理)

1、配置访问地址&#xff08;通过ip访问&#xff09; //配置ip访问地址 location ^~/auditApp{alias /usr/local/front-apps/cbd/auditApp;index index.html;if (!-e $request_filename) {rewrite ^/(.*) /auditApp/index.html last;break;}} 2、解决跨域问题&…

电商技术揭秘十四:大数据平台的选择与构建

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

2024年MathorCup数学建模挑战赛A题B题C题D题思路模型代码

2024年MathorCup数学建模挑战赛 2024年MathorCup数学建模挑战赛A题B题C题D题思路模型代码开赛后第一时间更新&#xff1a;更新见文末 01 组织单位 主办单位&#xff1a;中国优选法统筹法与经济数学研究会 报名网址&#xff1a; https://www.saikr.com/vse/mathorcup/202…