2011-07-08 17 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端使用的選項造成的。