2

IPERF を使用して、ある PC から別の PC にパケットを送信しています。IPERF で MSS (Maximum Segment Size) をテストしているときに、次のことが観察されました。

MSS = 20 バイトのパケットを送信します。

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

上記のコマンドは、MSS = 20 バイト、
MTU = MSS + 40 バイト = 60 バイトのパケットを送信すると予想していましたが、IPERF は MSS = 36 バイト (MTU = 76 バイト) を示しています。

IPERF は常に、指定したサイズよりも 12 バイト小さいサイズの MSS を送信することがわかりました。

ここで、パケットを送信する PC は Linux マシンであり、これらのパケットを受信する PC は Windows マシンであることに注意してください。Linux では IPERF コマンドを使用してパケットを生成しますが、Windows では JPERF の照合が実行され、着信パケットに関する情報が表示されます。

もう 1 つの重要なことは、送信したパケットを受信した後の Windows マシン上の JPERF が次のように表示することです: MSS および MTU サイズが不明です (TCP_MAXSEG は OS でサポートされていませんか?)

MSSがどのように/なぜ減少するのか考えていますか?

4

1 に答える 1

1

私はこのMSSとMTUのことをよく理解していませんが、しようとしているときに、 MicrosoftのMSDNサイトのPathMTUDiscoveryから次のことに出くわしました。

「これまで、ホストのMSSは、リンク層のMTUからインターネットプロトコル(IP)およびTCPヘッダーの40バイトを引いたものであり、IPまたはTCPオプションは使用されていませんでした。[...]

ただし、Windows 2000、Windows XP、およびWindows Server 2003でのタイムスタンプなどの追加のTCPオプションのサポートにより、通常のTCP/IPヘッダーが52オクテット以上に増加しました。」

これは、観察した12バイトの違いは、接続のWindows側で使用されているオプションが原因である可能性があることを示しています。

于 2011-11-03T12:42:17.837 に答える