wireshark抓包数据:理解与分析_wireshark 导出tcp包seq和len-程序员宅基地

技术标签: 计算机网络  

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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jinyongqing/article/details/53728590

智能推荐

BAT批处理创建文件桌面快捷方式_批处理创建桌面快捷方式-程序员宅基地

文章浏览阅读1.5w次,点赞9次,收藏26次。简介一个创建某个文件到桌面快捷方式的BAT批处理.代码@echooff::设置程序或文件的完整路径(必选)setProgram=D:\Program Files (x86)\格式工厂.4.2.0\FormatFactory.exe::设置快捷方式名称(必选)setLnkName=格式工厂v4.2.0::设置程序的工作路径,一般为程序主目录,此项若留空,脚本将..._批处理创建桌面快捷方式

射频识别技术漫谈(6-10)_芯片 ttf模式-程序员宅基地

文章浏览阅读2k次。射频识别技术漫谈(6-10),概述RFID的通讯协议;射频ID卡的原理与实现,数据的传输与解码;介绍动物标签属性与数据传输;RFID识别号的变化等_芯片 ttf模式

Python 项目实战 —— 手把手教你使用 Django 框架实现支付宝付款_django 对接支付宝接口流程-程序员宅基地

文章浏览阅读1.1k次。今天小编心血来潮,为大家带来一个很有趣的项目,那就是使用 Python web 框架 Django 来实现支付宝支付,废话不多说,一起来看看如何实现吧。_django 对接支付宝接口流程

Zabbix 5.0 LTS在清理历史数据后最新数据不更新_zabbix问题没有更新-程序员宅基地

文章浏览阅读842次。Zabbix 5.0 LTS,跑了一年多了一直很稳定,前两天空间显示快满了,于是手贱清理了一下history_uint表(使用mysql truncate),结果折腾了一周。大概故障如下:然后zabbix论坛、各种群问了好久都没解决,最后自己一番折腾似乎搞定了。初步怀疑,应该是由于历史数据被清空后,zabbix需要去处理数据,但是数据量太大,跑不过来,所以来不及更新了(?)..._zabbix问题没有更新

python学习历程_基础知识(2day)-程序员宅基地

文章浏览阅读296次。一、数据结构之字典 key-value

mybatis-plus字段策略注解strategy_mybatisplus strategy-程序员宅基地

文章浏览阅读9.7k次,点赞3次,收藏13次。最近项目中遇到一个问题,是关于mybatis-plus的字段注解策略,记录一下。1问题调用了A组件(基础组件),来更新自身组件的数据,发现自己组件有个字段总是被清空。2原因分析调用的A组件的字段,属于基础字段,自己业务组件,对这个基础字段做了扩展,增加了业务字段。但是在自己的组件中的实体注解上,有一个注解使用错误。mybatis-plus封装的updateById方法,如果..._mybatisplus strategy

随便推点

信息检索笔记-索引构建_为某一文档及集构件词项索引时,可使用哪些索引构建方法-程序员宅基地

文章浏览阅读3.8k次。如何构建倒排索引,我们将这个过程叫做“索引构建”。如果我们的文档很多,这样索引就一次性装不下内存,该如何构建。硬件的限制 我们知道ram读写是随机的操作,只要输入相应的地址单元就能瞬间将数据读出来或者写进去。但是磁盘不行,磁盘必须有一个寻道的过程,外加一个旋转时间。那么只有涉及到磁盘,我们就可以考虑怎么节省I/O操作时间。【注】操作系统往往以数据块为单位进行读写。因为读一_为某一文档及集构件词项索引时,可使用哪些索引构建方法

IT巨头英特尔看好中国市场前景-程序员宅基地

文章浏览阅读836次。英特尔技术与制造事业部副总裁卞成刚7日在财富论坛间隙接受中新社记者采访时表示,该公司看好中国市场前景,扎根中国并以此走向世界是目前最重要的战略之一。卞成刚说,目前该公司正面临战略转型,即从传统PC服务领域扩展至所有智能设施领域,特别是移动终端。而中国目前正引领全球手机市场,预计未来手机、平板电脑等方面的发明创新将大量在中国市场涌现,并推向全球。持相同态度的还有英特尔中国区执行董事戈峻。戈峻

ceph中的radosgw相关总结_radosgw -c-程序员宅基地

文章浏览阅读627次。https://blog.csdn.net/zrs19800702/article/details/53101213http://blog.csdn.net/lzw06061139/article/details/51445311https://my.oschina.net/linuxhunter/blog/654080rgw 概述Ceph 通过radosgw提供RES..._radosgw -c

前端数据可视化ECharts使用指南——制作时间序列数据的可视化曲线_echarts 时间序列-程序员宅基地

文章浏览阅读3.7k次,点赞6次,收藏9次。我为什么选择ECharts ? 本周学校课程设计,原本随机佛系选了一个51单片机来做音乐播放器,结果在粗略玩了CN-DBpedia两天后才回过神,课设还没有开始整。于是懒癌发作,碍于身上还有比赛的作品没交,本菜鸡对硬件也没啥天赋,所以就直接把题目切换成软件方面的题目。写python的同学选择了一个时间序列数据的可视化曲线程序设计题目,果真python在数据可视化这一点性能很优秀。..._echarts 时间序列

ApplicationEventPublisherAware事件发布-程序员宅基地

文章浏览阅读1.6k次。事件类:/** * *   * @className: EarlyWarnPublishEvent *   * @description:数据风险预警发布事件 *   * @param: *   * @return: *   * @throws: *   * @author: lizz *   * @date: 2020/05/06 15:31 * */public cl..._applicationeventpublisheraware

自定义View实现仿朋友圈的图片查看器,缩放、双击、移动、回弹、下滑退出及动画等_imageview图片边界回弹-程序员宅基地

文章浏览阅读1.2k次。如需转载请注明出处!点击小图片转到图片查看的页面在Android开发中很常用到,抱着学习和分享的心态,在这里写下自己自定义的一个ImageView,可以实现类似微信朋友圈中查看图片的功能和效果。主要功能需求:1.缩放限制:自由缩放,有最大和最小的缩放限制 2居中显示:.若图片没充满整个ImageView,则缩放过程将图片居中 3.双击缩放:根据当前缩放的状态,双击放大两倍或缩小到原来 4.单指_imageview图片边界回弹