IPフラグメンテーションにつきまして

先生
質問したい点があります。
よろしくお願いします。

IPフラグメンテーションでのについてです。
分割処理するのは、ルータであるようですが、
疑問に思っている部分があります。

TCPでは、コネクションの確立時にデータリンクに
応じたMSSを送信受信側で小さいほうのMSS値を用いて
いると思っています。
従いまして、その時点でIPで分割処理されない最大の
大きさであり、ルータで分割処理が行われないのでは?と
思っています。
つまり、TCP通信時は、IPヘッダーのID番号は必要ない
ですし、ルータでフラグメント処理する必要はないと
理解しても良いのでしょうか?

お忙しい中すいませんが、よろしくお願いします。
以上です

名前: 
クリス・ヘグリウス
日時: 
11/07/17 08:14

コメント

クリスさん,こんにちわ。

> TCPでは、コネクションの確立時にデータリンクに応じたMSSを...(以下省略)

そうですね。
パケットが通る道筋の全てのリンクのパケット長(MTU)が
送信側のMTUと同じか,あるいは大きければ,
IPフラグメンテーションは不要かもしれませんが,
そうとも限りません。
途中でMTUが短いリンクを通る可能性もあります。

現実に,そういう例があります。
たとえば,光ファイバでインターネットに接続してPPPoEを用いる場合,
PPPoEなどのヘッダが追加される分だけ,MTUは小さくなります。

たとえば,会社や家庭内のLANは,通常,MTUが1500バイトですから,
そこから送信されるIPパケットは最大1500バイトになります。
それが,PPPoEの箇所に来て,そこのMTUが1492バイトと短くなっていたとしたら,どうなるでしょう?
1492バイトを越えるパケットはその先に進めませんよね。

IPフラグメンテーションが必要なのは,そんなケースです。
IPフラグメンテーションの機能でパケットを分割して小さくしてあげれば,その先に進むことができるわけです。
これがIPフラグメンテーションの発想です。
つまり,パケットの通り道をたどったときに,MTUが小さい箇所があるかもしれないから,
そこにパケットを通すために,パケットを小さく分割する機能が必要だということです。

TCPのセグメント分割とは考え方や目的が全然違うものですから,
TCPにセグメント分割の機能があったからといって,
IPフラグメンテーションが不要になるわけではありません。

早速の返信ありがとうございます。
ルータによって、分割するケースがあるからIPヘッダーにはフラグメントのID番号を持っている
ということですね。たしかにフラグメントが起こらないことありそうですが、起こりえるなら
その対処は施しているといった感じですね。
ありがとうございます。スッキリしました。

以上です。