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