-
wireshark抓到tcp包大于mss的包
2016-09-06 21:18:062、在电脑B上写个tcp连接的程序,上传数据,发现wireshark抓包全部小于mss. 关于第一个问题,问过熊大神,告诉我wireshark上抓的不是单个ip包。稍微释疑。 继续百度,看到一篇csdn文章说到是网卡在做分段的工作。现象:
1、在电脑A上挂一个程序,上传数据的时候,用wireshark抓包,偶然发现发送的包居然有上万的。回想起mss,tcp连接不是会协商mss吗?
2、在电脑B上写个tcp连接的程序,上传数据,发现wireshark抓包全部小于mss.
关于第一个问题,问过熊大神,告诉我wireshark上抓的不是单个ip包。稍微释疑。
继续百度,看到一篇csdn文章说到是网卡在做分段的工作。提到几个关键词:LSO, TSO, 卸载。
想起前段时间测试网卡的时候,网卡有些地方可以配置。然后在电脑A网卡配置处找到一处" 大量发送卸载(IPv4)",发现开关这个选项,会完全影响wireshark抓到的tcp包的大小。
结论:
A、现象1产生的原因,在于网卡做分段的工作,wireshark在网卡分段之前就抓包了。
B、电脑A与B表现不同,在于LSO的运行。LSO的运行取决与3点:
1、操作系统支持。(电脑B的系统不支持,所以无论怎么配置也没用)
2、网卡支持。
3、配置网卡,打开选项。
-
wireshark往返时间_从wireshark抓包看TCP头部时间戳
2021-01-26 19:05:36不知道大家有没有注意到,wireshark抓取tcp报文的时候,大部分时候的报文是如下图所示的,其中带了Seq,Win和Len字段,分别对应了报文序列号、滑动窗口和tcp报文长度。 有时候,也会在报文中看到TSval 和 TSecr这两...不知道大家有没有注意到,wireshark抓取tcp报文的时候,大部分时候的报文是如下图所示的,其中带了Seq,Win和Len字段,分别对应了报文序列号、滑动窗口和tcp报文长度。
有时候,也会在报文中看到TSval 和 TSecr 这两个参数,如下图所示。那么这个参数来源于哪里呢?又有什么作用呢?
1、原理
时间戳(TCP Timestamps Option,TSopt)来源于TCP报文头部的Option选项。这个选项在 TCP 头部的位置如下所示。
比如下图,我们抓包的报文中的时间戳选项在option中。
TCP的时间戳由四部分构成:类别(kind)、长度(Length)、发送方时间戳(TS value)、回显时间戳(TS Echo Reply)。时间戳选项类别(kind)的值等于 8,用来与其它类型的选项区分。长度(length)等于 10。两个时间戳相关的选项都是 4 字节。是否使用时间戳选项是在三次握手里面的 SYN 报文里面确定的。那么这个时间戳选项有什么作用吗?主要有两个作用:
两端往返时延测量(RTT)
序列号回绕(PAWS)
2、RTT原理
由于在真实的网络中,各种丢包情况普遍存在,因此有一套超时重传机制,也就是我们以前说的 TCP中的几种定时器 《聊聊TCP中的几个定时器》,那么超时重传的时间如何设置呢?
为了动态地设置,TCP引入了RTT(Round Trip Time),也就是一个数据包从发出去到回来的时间。这样发送端就大约知道需要多少的时间,从而可以方便地设置Timeout——RTO(Retransmission TimeOut),以让我们的重传机制更高效。
但是实际上RTT的计算比较复杂,如下图a所示,发生了重传,如果按照第一次的报文和ACK计算出来的RTT就比较大了,不合理。如图b所示,重传后收到了原始报文的ACK,这样计算出来的RTT偏小,也不合理。
因此,在启用 Timestamps 选项以后,因为 ACK 包里包含了 TSval 和 TSecr,这样无论是正常确认包,还是重传确认包,都可以通过这两个值计算出 RTT。关于RTO计算算法,资料也比较多了。比如RFC793中定义的经典算法是这样的:比如目前Linux下使用的RTO计算算法为Jacobson / Karels 算法:
3、序列号回绕PAWS
TCP 的序列号用 32bit 来表示,因此在 2^32 字节的数据传输后序列号就会溢出回绕。TCP 的窗口经过窗口缩放可以最高到 2^30,也就是1G,在高速网络中,序列号在很短的时间内就会被重复使用。
如果有 Timestamps 的存在,内核会维护一个为每个连接维护一个 ts_recent 值,记录最后一次通信的的 timestamps 值,当收到的数据包中 timestamps 值小于 ts_recent 值,就会丢弃掉这个数据包。等收到的数据包的timestamps 值大于 ts_recent,这个包可以被正常接收。
实际上timestamps 值是一个单调递增的值,这个选项不要求两台主机进行时钟同步。两端 timestamps 值增加的间隔也可能步调不一致,比如一条主机以每 1ms 加一的方式递增,另外一条主机可以以每 200ms 加一的方式递增。此外,timestamps 是一个双向的选项,如果只要有一方不开启,双方都将停用。 在Linux下可以通过下面方式开启或关闭timestamp功能。//0表示关闭,1表示打开功能cat /proc/sys/net/ipv4/tcp_timestamps
-
wireshark抓包分析-tcp包长度
2019-07-08 11:28:531 最近分析rtmp数据包的时候,用tcpdump抓到一段数据包,有一部分理解不了。 tcp连接的时候,协商的mss是1460,为什么这里传输的时候是2920字节? 2 原因分析,tcpdump工作...tcpdump是抓不到的。因此这里len=2920...1 最近分析rtmp数据包的时候,用tcpdump抓到一段数据包,有一部分理解不了。
tcp连接的时候,协商的mss是1460,为什么这里传输的时候是2920字节?
2 原因分析,tcpdump工作在数据链路层,linux系统在设置了tso/iso的时候,通过网卡进行分tcp数据/组合tcp数据包以提高效率。
对于网卡组装tcp数据包的情况。tcpdump是抓不到的。因此这里len=2920的原因就是服务器开了iso选项。
3 为什么mss要小于mtu?
mtu是一个ip数据包的最大传输大小。mss是tcp一包数据大小。如果mss大于mtu,一个tcp数据包会被分成两个ip数据包,这样一来,丢失/内部乱序,都会导致数据重传,这样相当于把可靠性交给了网络层,也就是ip数据包。这样效率低。因此我们mss协商为mtu - 40(tcp常见包头长度),这样一来,tcp的可靠传输全部交给传输层来控制实现。可靠性和效率就提高了
-
用wireshark抓取modebus tcp包抓不到解决方案
2020-12-02 17:44:34在使用ModBus Slave模拟从站的时候,发现Wireshark怎么都抓取不到包,原因是从站主站都在一台pc上,包不经过网卡,所有抓取不到。 用管理员打开cmd,输入route add本机ip mask 255.255.255.255网关ip ...
在使用ModBus Slave模拟从站的时候,发现Wireshark怎么都抓取不到包,原因是从站主站都在一台pc上,包不经过网卡,所有抓取不到。
用管理员打开cmd,输入route add 本机ip mask 255.255.255.255 网关ip -
wireshark TCP抓包大于mss
2019-06-26 15:58:46现象: 1、在电脑上使用wireshark抓包,发现其中部分包的数据长度很长超过mtu,这不符合tcp协议,tcp...然后在电脑A网卡配置处找到一处" 大量发送卸载(IPv4)",发现开关这个选项,会完全影响wireshark抓到的tcp包... -
wireshark抓不到包的问题
2013-03-17 11:33:40网卡类型:Broadcom BCM5708C NetXtreme II GigE (NDIS VBD Client) 操作系统:windows 2003 sp2 ...在windows2003 sp2中tcp chimney 是默认打开的,不管你用不用 使用cmd命令 netsh int ip set chimney DISABLED -
从wireshark抓包看TCP头部时间戳
2020-11-17 09:20:26不知道大家有没有注意到,wireshark抓取tcp报文的时候,大部分时候的报文是如下图所示的,其中带了Seq,Win和Len字段,分别对应了报文序列号、滑动窗口和tcp报文长度。 有时候,也会在报文中看到TSval 和 TSecr 这... -
windows下如何用wireshark抓本地回路抓包
2017-12-29 18:51:49在做的项目需要用wireshark抓取本地回路的测试包,结果发现怎么都抓不到127.0.0.1的tcp数据包,不管怎么看,都没有127.0.0.1的数据包.弄了半晚上,发现如果是tcp客户端向别的IP通信wireshark都能正常截获,如果是本机则... -
用wireshark抓到54bytes的TCP协议帧包的原因
2020-12-23 15:37:19根据rfc894的说明,以太网封装IP数据包的最大长度是... 按照上述,最大帧应该是1526字节,但是实际上我们抓包得到的最大帧是1514字节,为什么不是1526字节呢? 原因是当数据帧到达网卡时,在物理层上网卡要先去... -
教你从 WireShark 抓包看懂 TCP/IP 协议栈
2020-09-04 07:01:09抓包工具 Win 上不外乎 WireShark,Linux 上是 TCPDump,本文就是用实际的抓包,一步一步分析 TCP/IP 协议栈,读懂数据包,从而理解协议栈,理解了协议栈,在网络编程中无往而不利。 本文主要讲解一下内容: 教你看... -
wireshark抓不到四次挥手_图解TCP三次握手与四次分手
2020-11-24 22:40:18但是大部分教材都对这部分解释的比较抽象,本文我们就利用wireshark来抓包以真正体会整个流程的细节。三次握手根据下面这幅图我们来看一下TCP三次握手。p.s: 每个箭头代表一次握手。第一次握手client发送一个SYN(J)... -
通过wireshark抓包来学习TCP HTTP网络协议
2018-01-23 09:51:55很多招聘需求上都会要求熟悉TCP/IP协议、...很多关于协议的大部头书都是非常枯燥的,我特意挑了比较友好的《图解TCP/IP》和《图解HTTP》,但看了一遍仍是云里雾里,找不到掌握了知识后的那种自信。所以得换一种思路... -
Wireshark抓包工具--TCP数据包seq ack等解读
2018-08-13 11:01:001、Wireshark的数据包详情窗口,如果是用中括号[]括起来的,表示注释...而是按tcp包内数据字节长度加上,如包内数据是21字节,而当前IP1发到IP2的包的seq是10的话,那下个IP1发到IP2的包的seq就是10+21=314、注意我... -
[na]wireshark抓包排错-tcp.flags.reset
2016-03-24 00:10:00一 抓包思路-用抓包来解决问题 1,了解协议交互大概过程 2,抓包 抓包法则: 1.最小化原则,过滤到想要的最小数据,别忽略上下文数据包 2.对比法, 正常的包和不正常情况的包做对比 二 抓包解决问题-... -
通过tcpdump+wireshark来抓包分析TCP长连接和短连接的区别
2019-10-11 15:37:05因为博主之前也研究过WebSocket,开发了个简单的聊天室,但是这次这次应用到实际,我就在想TCP的这个长连接在不发生异常的情况下可以维持多久?在思考这个问题时,我就在想Http建立的TCP短连接,是什么时候断开连接... -
wireshark抓不到四次挥手_TCP的三次握手(建立连接)和四次挥手关闭连接)
2020-11-22 13:59:51建立连接:理解:窗口和滑动窗口TCP的流量控制TCP使用窗口机制进行流量控制什么是窗口?连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端接收方发送的确认信息中包含了自己剩余的... -
linux tcp 丢包命令_实战!我用Wireshark让你看见 TCP!
2020-12-28 19:22:16”为了让大家更容易「看得见」 TCP,我搭建不少测试环境,并且数据包抓很多次,花费了不少时间,才抓到比较容易分析的数据包。接下来丢包、乱序、超时重传、快速重传、选择性确认、流量控制等等 TCP 的特性,都能「... -
实战中的TCP/UDP协议(wireshark抓包)
2019-08-06 22:56:22(换言之,通信的意义不正是双方能够准确接收到对方的消息么,不能保证对方一定能够接收信息,那这个协议是否有意义?) 在实际的网络应用程序中,如即时通讯的QQ,微信,或者网络游戏cs:go, 王者荣... -
tcpdump+wireshark抓包分析
2020-04-03 10:52:00某天,梳理kafka每个Topic流量,其中有个Topic...首先,在kafka的server端使用tcp抓包,并记录存到文件中。然后scp到本地使用wireshark分析。‘ TCP 知识点 一个TCP连接需要四个元组来表示是同一个连接(src_ip, s... -
wireshark 抓包 出现 SSL Continuation Data
2020-12-20 20:01:56使用 wireshark 抓包时,出现: 协议为 SSL Info 为 Continuation Data 但是 ……却无法展开分析: 原因分析 ssl continuation data? - Wireshark Q&A 当内容无法被完全理解时,该 Frame 会被标记为 ... -
通过tcpdump,wireshark抓包分析包解决实际工作中遇到问题
2020-07-06 16:10:08最近公司某应用一直报同一个错误,通过日志只能定位某个请求参数报错,不能定位到哪个用户,日志如下: 解决方法 1.在应用服务器上通过tcpdump抓包 tcpdump -s 0 tcp port 8080 -w http.cap 2.通过wireshark...