4

IPペイロード>MTUの場合、ルーターは通常IPパケットをフラグメント化します。最後に、すべてのフラグメント化されたパケットは、フィールドIP-ID、IPフラグメントオフセット、およびフラグメンテーションフラグを使用して宛先でアセンブルされます。IPペイロードの最大長は64Kです。したがって、L4が64Kのペイロードを引き渡すのは非常に妥当です。L2プロトコルがイーサネットの場合(これはよくあることですが)、MTUは約1600バイトになります。したがって、IPパケットは送信元ホスト自体でフラグメント化されます。ただし、LinuxでのIP実装について簡単に検索すると、最近のカーネルでは、L4プロトコルはフラグメントに対応していることがわかります。つまり、MTUに近いサイズのバッファーを渡すことで、IPのフラグメント化作業を節約しようとします。

これらの2つの事実を考慮すると、IPパケットが送信元ホスト自体でフラグメント化される頻度について疑問に思っています。それは時々/まれに/決して起こりませんか?Linuxカーネルの断片化のルールに例外があるかどうか(つまり、L4プロトコルが断片に対応していない状況があるかどうか)を知っている人はいますか?これは、Windowsなどの他の一般的なOSでどのように処理されますか?一般に、IPパケットはどのくらいの頻度で断片化されますか?

4

1 に答える 1

4

技術的には、IP フラグメンテーションを正しく処理しないプロトコルは存在しないはずですが、フラグメンテーションがないことで大きなメリットが得られるプロトコル (NFS など) がいくつかあります。

フラグメント化されたパケットが表示される頻度は、主にネットワーク環境の関数です。VPN のパケット カプセル化、不十分な設計または実装の UDP プロトコル、およびエンドツーエンド MTU をエンドポイント値未満に落とす L1/L2 プロトコルはすべて、IP フラグメンテーションを引き起こす可能性があります。

最新のホストのほとんどはPTMUDを実装しており、準拠していないデバイスや過度に偏執的なファイアウォールが関係していない限り、MTU サイズを自動的に検出します。Ethernet Everywhere の最近では、インターネット全体でこれらが特に一般的になるとは思いません。

于 2009-03-08T18:58:12.417 に答える