事情是这样, 我发现 tcp 实际的 payload 长度和握手时协商的 MSS 长度多出很多.  

按理来说根据不同的路由环境 segment 的长度比 mss 小可以理解,但是比 mss 大这就有点诡异了

下图时我的问题发生现场, 图 1 确认 mss 长度(图片有点模糊 显示的是 1357), 图 2 中 192.168.8.104 发送的 tcp segment 却比 mss 大很多  

> 图 2 中的 segment 长度正好是 mss 的两倍 但在别的 frame 中也能找到非整数倍的 segment  
<br/>
<br/>
<br/>


![]( https://i.ibb.co/31knBBp/1.png)

<center>图 1</center>

<br/>
<br/>
<br/>
  

![]( https://i.ibb.co/rc9yqPB/2.png)
<center>图 2</center>


我想知道的是 wireshark 是如何确认一个 tcp frame 是否为 segment 一开始以为是通过 mss 长度但发现这并不可靠, 也有很多特别小的 segment.   是通过应用层?
举报· 130 次点击
登录 注册 站外分享
3 条回复  
turi 初学 2024-10-9 09:17:33
tcp tso
quanyajian 初学 2024-10-9 09:33:03
看你的第二个握手包 SYN-ACK ,里面应该也有一个 MSS 。
swananan 初学 2024-10-9 10:01:52
抓包是在 网卡 tso 生效之前,所以还是大于 mtu 的报文,然后也符合 tcp 的格式,所以 wireshark 能够正常解析。
你要是在对端抓包,应该就是 网卡 tso 切分后的报文。
返回顶部