linux 为什么我得到的数据包的数据大小大于mss?

xyhw6mcr  于 2022-11-02  发布在  Linux
关注(0)|答案(1)|浏览(152)

我在两台电脑上用“ifconfig ethX mtu 300”修改了MTU。并用netperf测试网络。我用WireShark在SYN数据包中嗅探到MSS=260。但我在数据包中得到了一些大于260的数据。为什么?

xmakbtuz

xmakbtuz1#

嗅探器捕获内核和设备驱动程序之间的数据包。如果驱动程序对数据包进行了额外的更改,则捕获的内容与网络上的数据包不同。
这是TCP分段卸载的情况,其中驱动程序或硬件设备拆分(或组合)数据包以遵守正确的TCP MSS(最大分段大小)。
您可以(临时)禁用卸载以查看正确的段:

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

信息来自问题评论中链接的文章:https://rtodto.net/generic_segmentation_offload_and_wireshark/
在Linux上,这种卸载也发生在环回接口上!

相关问题