为什么我收到的数据包大小超过了最大分段大小?

3

我在两台电脑上使用"ifconfig ethX mtu 300"修改了MTU,并使用netperf测试了网络。我用WireShark嗅探到SYN数据包中的MSS为260。 但是我发现有些数据包的数据量却大于260。为什么呢?


3
答案在这里:http://rtoodtoo.net/2011/08/16/generic_segmentation_offload_and_wireshark/ - Will
1个回答

0

Sniffer可以捕获内核和设备驱动程序之间的数据包。如果驱动程序对数据包进行了其他更改,则捕获到的内容与线上数据包不同。

这是TCP分段卸载的情况,其中驱动程序或硬件设备将数据包拆分(或合并)以遵守正确的TCP MSS(最大段大小)。

您可以(暂时)禁用卸载以查看正确的数据段:

  • ethtool -k eth0 — 查看设置
  • ethtool -K eth0 tso off — 禁用 tcp-segmentation-offload

这些信息来自于问题评论中连接的文章:https://rtodto.net/generic_segmentation_offload_and_wireshark/

在Linux上,此卸载也会发生在环回接口上!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接