我在两台电脑上使用"ifconfig ethX mtu 300"修改了MTU,并使用netperf测试了网络。我用WireShark嗅探到SYN数据包中的MSS为260。 但是我发现有些数据包的数据量却大于260。为什么呢?
我在两台电脑上使用"ifconfig ethX mtu 300"修改了MTU,并使用netperf测试了网络。我用WireShark嗅探到SYN数据包中的MSS为260。 但是我发现有些数据包的数据量却大于260。为什么呢?
Sniffer可以捕获内核和设备驱动程序之间的数据包。如果驱动程序对数据包进行了其他更改,则捕获到的内容与线上数据包不同。
这是TCP分段卸载的情况,其中驱动程序或硬件设备将数据包拆分(或合并)以遵守正确的TCP MSS(最大段大小)。
您可以(暂时)禁用卸载以查看正确的数据段:
ethtool -k eth0
— 查看设置ethtool -K eth0 tso off
— 禁用 tcp-segmentation-offload
这些信息来自于问题评论中连接的文章:https://rtodto.net/generic_segmentation_offload_and_wireshark/
在Linux上,此卸载也会发生在环回接口上!