wireshark抓包数据:理解与分析

article/2025/11/7 2:47:13

注明:本文为原创文章,转载请注明出处。参考文章见本文末尾。

wireshark是一个非常好用的抓包工具,本文根据平时抓包经验,对之前wireshark抓包的一些常见知识点进行了整理。

有不当之处,欢迎指正

1.SYN,FIN会消耗一个序号,单独的ACK不消耗序号

2.WIN表示可以接收数据的滑动窗口(接收缓冲区)是多少,如果A发到B的包的win为0,就是A告诉B说我现在滑动窗口为0了,饱了,你不要再发给我了,就说明A端环境有压力

3.ACK可以理解为应答。A发给B的ack是告诉B,我已收到你发的数据包,收到ack号这里了,你下次要发seq为ack号的给我

4.连续传输的时候,且无乱序,无丢包的情况下:上一个包的seq + len  = 下一个包的 seq,如:
包55976:

包55977:

7801(55977的seq ) = 6501(55976的seq) + 1300(55976的len)

5.[TCP Previous segment not captured]
在TCP传输过程中,同一台主机发出的数据段应该是连续的,即后一个包的Seq号等于前一个包的Seq Len(三次握手和四次挥手是例外)。
如果Wireshark发现后一个包的Seq号大于前一个包的Seq Len,就知道中间缺失了一段数据。中间缺失的数据有的时候是由于乱序导致的,在后面的包中还可以找到
如:包55974

包55975:

5201(55975的seq ) != 1(55974的seq ) + 1300(55974的len )

6.在TCP传输过程中(不包括三次握手和四次挥手),同一台主机发出的数据包应该是连续的,即后一个包的Seq号等于前一个包的Seq Len
也可以说,后一个包的Seq会大于或等于前一个包的Seq。当Wireshark发现后一个包的Seq号小于前一个包的Seq Len时,就会认为是乱序了。跨度大的乱序却可能触发快速重传
包55979:

包55980

seq(55979) > seq(55980),55980应该是紧跟着55974的(1301 =1300 + 1),从到达的时间来看,是乱序了

7.关于SLE和SRE:

SACK在数据丢包需要重传时起作用。
比如,服务器已发送的数据为1~34454个包,但是,客户端只收到了“1~1301,5201~6501”这些序列的包,也就是说“1302~5200”这些包已经丢了。
这个时候,客户端会向服务器请求发送ACK,说我收到了seq为1301的包,同时也乱序收到了"SLE为5201,SRE为6501"的包。
那么,服务器就知道,接着从seq=1302的包开始发送,发送到seq=5200的包的时候,就不用在发送seq=5201的包了,因为客户端已经收到了。
如果ACK中不带SLE和SRE会怎样呢?那服务器就会重发从"1302"开始之后的所有的包,包括其实客户端已经收到的"5201~6501"序号的包,那就浪费网络带宽了


8.[TCP Dup ACK]
当乱序或者丢包发生时,接收方会收到一些Seq号比期望值大的包。它每收到一个这种包就会Ack一次期望的Seq值,以此方式来提醒发送方,于是就产生了一些重复的Ack。
同时,这些重复的ACK中,也会更新SLE和SRE的值,因为尽管ACK的值不变,即期望的seq没有收到,但可能又会新收到后面的乱序的包



9.关于Seq,Ack,Win,Len的理解:

1.指明本次数据发送的信息:本次发送的数据起始序号是Seq,发送的长度是Len
2.发送端告诉接收端:我期望的Ack是多少,即希望接收端下次发从seq为ack号的给我,同时我还可以接收Win大小的数据,即接收端可以发送(Ack,Ack + Win)区间内的数据给发送端

10.[TCP Window Update]
这种情况下,Seq,Ack,Len都没有变,唯一变的是Win大小。说明这个ACK只是表明发送端接收数据的滑动窗口更新了
一般出现这种情况,就是由于发送端的应用程序将数据从接收数据缓冲区中取出来了,导致接收缓冲区大小更新



11.关于TCP重传:

决定报文是否有必要重传的主要机制是重传计时器(retransmission timer),它的主要功能是维护重传超时(RTO)值。当报文使用TCP传输时,重传计时器启动,收到ACK时计时器停止。报文发送至接收到ACK的时间称为往返时间(RTT)。对若干次时间取平均值,该值用于确定最终RTO值。在最终RTO值确定之前,确定每一次报文传输是否有丢包发生使用重传计时器,下图说明了TCP重传过程。


当报文发送之后,但接收方尚未发送TCP ACK报文,发送方假设源报文丢失并将其重传。重传之后,RTO值加倍;如果在2倍RTO值到达之前还是没有收到ACK报文,就再次重传。如果仍然没有收到ACK,那么RTO值再次加倍。如此持续下去,每次重传RTO都翻倍,直到收到ACK报文或发送方达到配置的最大重传次数。

所以TCP RTO的值会越来越大


如图所示:
1.37527的包,在75.55s发出,期望的ack=120656
2.知道42504的包,即103.85s的时候,才收到seq=120656的包,很显然,这个ack是超时重传的,因为中间过了28s的时间
3.在75.55-103.85期间,112.90.135.235应该进行过多次重传,但是都丢失了。知道103.85这个时间点的重传,才到达了客户端
4.每次重传后,RTO的时间会变大,所以如果重传一直不成功,两次重传之间的间隔时间也会越来越大,从而导致等待数据到达时间也会越来越长

参考文章:
1.Wireshark抓包常见问题解析: http://www.xianren.org/net/wireshark-q.html
2.wireshark抓包常见提示含义解析 : http://blog.csdn.net/u012398362/article/details/52276067
3.Wireshark抓包工具--TCP数据包seq ack等解读 : http://blog.csdn.net/wang7dao/article/details/16805337
4.一站式学习Wireshark(四):网络性能排查之TCP重传与重复ACK:http://blog.jobbole.com/71427/
5.wireshark中带有SLE和SRE的SACK包详解 :http://blog.csdn.net/season_hangzhou/article/details/48318599


http://chatgpt.dhexx.cn/article/KV8pVQil.shtml

相关文章

WireShark抓包后数据分析

在分析数据之前,我们先了解一下我们传输数据的结构体系,如下图: 这是两种体系,我们常用的一般都是TCP/IP体系结构。 TCP/IP体系架构分析 不难发现,TCP/IP体系中包含着很多我们熟悉的协议,比如说&#xff1…

Wireshark --> 抓包(网络分析)工具

前言 贴一张wireshark抓包的总图,便于理解分析网络分层 ​ 为了让大家更容易「看得见」 TCP,我搭建不少测试环境,并且数据包抓很多次,花费了不少时间,才抓到比较容易分析的数据包。 接下来丢包、乱序、超时重传、…

Wireshark抓包工具使用以及数据包分析

多年之后,愿你有清风与烈酒,也有人是你的归途。 打开Wireshark抓包工具开始抓包会看到如下展开内容: 这里我是对wlan进行抓包,192.168.2.112是我当前wifi的ip地址。 点击某个包,可以查看具体内容,差不多刚…

使用wireshark抓网络报文(抓包)并分析其中数据

如何使用wireshark抓网络报文(抓包) 1、 物理层数据帧2、 数据链路层以太网帧头部信息3、 互联网层 IP 包头部信息4、 传输层 TCP 数据段头部信息 本文包内容分析转载自下午茶的芬芳,感谢作者的分享。 网络下载好wireshark打开软件按下开始捕…

wireshark抓包分析数据怎么看 wireshark使用教程

大家都知道Wireshark是非常流行且知名的网络抓包数据分析工具,可以截取各种网络数据包,并显示数据包详细信息,常用于开发测试过程各种问题定位、网络故障排查等情况。但是很多网友不清楚如何使用Wireshark抓包看数据,下面IT备忘录…

Wireshark网络抓包分析

目录 1. 以太网协议头(数据链路层) -- 14byte 2. IP数据头(网络层) -- 20byte 3. ARP抓包分析 3.1 ARP介绍 3.2 报文格式 3.3 抓包分析 3.3.1 先arp -d把arp表清空。 3.3.2 过滤ARP协议的数据包 3.3.3 Ping 目标IP 3.3.4 第一个数据包请求分析 3.3.5 第二个数据包应…

利用python简单分析抓包数据

利用python简单分析抓包数据 wireshark的数据 先读一行看看长啥样 import json data_file rE:\download\data.json with open(data_file,r,encodingutf8) as f:data_list json.loads(f.read())print(data_list[0])用格式化工具看 完整代码&最终结果 import jsondata_…

wireshark抓包分析ping数据包

目录 1.抓取数据包 2.ping request数据包解析 2.1 ICMP 2.2 传输层 2.3 以太帧 2.3 数据链路层 3. ping reply数据包解析 1.抓取数据包 先用管理员权限打开WireShark应用,并在条件过滤栏输入“icmp”。打开cmd,输入:ping www.baidu.co…

Wireshark-----抓包分析

目录 一、Wireshark简介 二、安装与使用 三、抓包分析 1.初次抓包 2.捕获选项设置 3.ARP协议抓包分析 4.IP协议抓包分析 5.TCP协议抓包分析 6.UDP协议抓包分析 7.ICMP协议抓包分析 参考文献 一、Wireshark简介 Wireshark是一款世界范围最广、最好用的网络封包分析软件…

计算机网络——数据包抓取与分析

数据包抓取与分析 目录 一、实验目的 二、实验内容 三、实验环境 四、实验步骤与过程 一、实验目的 学习安装、使用协议分析软件,掌握基本的数据报捕获、过滤和协议的分析技巧,能对抓取数据包进行分析。 二、实验内容 协议分析软件的安装和使用、学…

抓包与分析

(一)作业目的 (1)了解网络通信的分层实现过程,了解不同层次PDU的逐层封装与解封过程; (2)了解数据通信的过程,进一步认知协议的构成与通信过程,进而对TCP/IP分…

Wireshark抓包分析基础

Wireshark抓包分析 (仅作为个人笔记,如有雷同,请联系删除。。) 下载:https://www.wireshark.org/#download 1、设置时间格式:视图–>时间显示格式 2、设置解析:视图–>Name Resoluti…

Java抓包分析四(基于jnetpcap进行抓包)——分析Http请求数据包

在上篇文章中Java抓包分析三(基于jnetpcap进行抓包)——抓取Http请求数据包,我们讲解了TCP三次握手的过程和如何抓取Http数据包,但是我们并没有进行一个数据分析,接下来这篇文章我们将要开始对Http抓取的数据报进行深入…

【HTTP】Fiddler(二) - 使用Fiddler做抓包分析

上文( http://blog.csdn.net/ohmygirl/article/details/17846199 )中已经介绍了Fiddler的原理和软件界面。本文主要针对Fiddler的抓包处理。 Fiddler抓取HTTP请求。 抓包是Fiddler的最基本的应用,以本博客为例,启动Fiddler之后,在浏览器中输入http://blog.csdn.net/ohmygi…

MySQL索引优化实战EXPLAIN解析

先来介绍一下具体的业务场景 当用户登录后,需要查看能够学习的课程,不同的用户看到的课程是不同的,课程存在权限,权限是被下面lesson_user_permissions表控制的,其中sys_user_id 和 lesson_id 作为联合主键 另外还有一…

MySQL索引优化面试题

mysql索引优化熊大注意我们是以innodb为例 创建表sql如下: CREATE TABLE user (id bigint(11) NOT NULL AUTO_INCREMENT COMMENT 主键,age int(10) NOT NULL COMMENT 年龄,name varchar(100) NOT NULL COMMENT 姓名,card_no varchar(64) CHARACTER SET utf8 COLLATE utf8_gen…

【MySQL】深入理解MySQL索引优化器工作原理

本文导读 本文将解读MySQL数据库查询优化器(CBO)的工作原理。简单介绍了MySQL Server的组成,MySQL优化器选择索引额原理以及SQL成本分析,最后通过 select 查询总结整个查询过程。 一、MySQL 优化器是如何选择索引的 下面我们来…

MySQL索引优化与查询优化

1. 索引失效案例 1 全值匹配 2 最佳左前缀法则 3 主键插入顺序 如果 这个数据页已经满了,我们需要把当前 页面分裂 成两个页面,把本页中的一些记录移动到新创建的这个页中。页面分裂和记录移位意味着:性能损耗 !所以如果我们想尽量避免这样…

mysql索引优化系列(一)

一、不常见的索引失效场景 1、举例 还是之前的member会员记录表&#xff0c;往里面插入十万条数据 drop procedure if exists insert_emp; CREATE PROCEDURE insert_emp () BEGINDECLAREi INT;SET i 1;WHILE( i < 100000 ) DOINSERT INTO member ( NAME, age, address, …

MySQL索引优化一

MySQL索引 索引是什么 索引是一种排好序的数据结构&#xff0c;目的是提高查找效率一般来说&#xff0c;索引本身也占内存&#xff0c;因此索引以文件的形式存储在磁盘上平常我们所说的索引一般都是BTree。当然还有hash索引等等 索引优劣势 优势&#xff1a;提高检索效率&a…