2011-07-08 20 views
2

我正在使用IPERF从一台PC发送一些数据包到另一台。在使用IPERF测试MSS(最大段大小)时观察到以下情况。奇怪的IPERF观察:MSS大小从指定的减少

与MSS = 20个字节发送数据包:

iperf -c 192.168.1.98 -P 1 -i 5 -p 5001 -M 20 -m 

我们预期的是,上面的命令将数据包发送与MSS = 20个字节,
MTU = MSS + 40Bytes = 60个字节,但iperf的节目MSS = 36字节(MTU = 76字节)。

我们看到IPERF总是发送MSS的大小,比我们指定的小12个字节。

这里我要指出,我发送数据包的PC是Linux机器,而接收这些数据包的PC是Windows机器。我们在Linux中使用IPERF命令生成数据包,而在Windows机器上JPERF正在运行,我们可以看到有关传入数据包的信息。

另一个重要的事情是,收到我们发送的数据包后JPERF在Windows机器上,说以下内容: MSS和MTU大小未知(TCP_MAXSEG不受操作系统支持?)

任何想法如何/为什么MSS得到降低?

回答

1

我不太明白这个MSS和MTU的东西,但在尝试,我来到对面Path MTU Discovery微软MSDN网站上的以下内容:

“在过去,MSS的主机有一直是MTU的链路层 减去互联网协议(IP)和TCP报头,其中 没有IP或TCP选项都在使用40个字节。[...]

但是,在Windows 2000支持,Windows XP和Windows Server 2003 对于其他TCP选项(例如时间戳)增加了 典型的TCP/IP标头为52个或更多八位字节。“

这表明您观察到的12个字节的差异可能是由于连接的Windows端使用的选项造成的。