プロが教えるわが家の防犯対策術!

こんにちは。

ネットワーク通信において、IPフラグメントが発生した場合、受信側では、IPヘッダ内の「フラグメントオフセット」フィールドから、受信したパケットが分割されたパケットのどの部分かを特定し、「フラグ」フィールドから、最後のフラグメントかフラグメントの途中かを判定すると思います。

そこで質問なのですが、フラグメント化されたパケットを受信側で再構築する際に、分割されたパケットを全て受信し終えたことを、どこで判断するのでしょうか。
仮に受信したパケットの「フラグ」フィルードが最後のフラグメントだとしても、それ以降に受信順番が逆転してしまったパケットが残っている可能性があります。
また、IPヘッダ内の「ヘッダ長」フィールドは、分割されたサイズが格納されているようなので、分割前の合計サイズは分かりません。

以上、よろしくお願いします。

A 回答 (2件)

>分割されたパケットを全て受信し終えたことを、どこで判断するのでしょうか。



受信側で「どこまで受信済みか」というテーブルを持ちます。また、タイマーも持っています。

フラグメントされたパケットが届いて、しかも受信済み確認テーブルの状態が未受信フラグメントの存在を示している場合、タイマーを起動し、一定時間待ちます。
タイマーがExpireするまでの間に、他のフラグメントされたパケットが届かないと、再構成をあきらめます。

>IPヘッダ内の「ヘッダ長」フィールドは、分割されたサイズが格納されているようなので、分割前の合計サイズは分かりません。

最後のフラグメントされたパケットを見れば、分割前の合計サイズは分かりますよね。

Total Length + Fragment Offset = 分割前の合計サイズ

確かに最後のパケットが来るまでは分からないので、再構成用のバッファは十分な大きさを確保してあります。

参考URL:http://www2s.biglobe.ne.jp/~hig/tcpip/ip.html
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

大変よく分かりました。
どうもありがとうございました。

お礼日時:2005/05/17 20:46
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

参考にさせて頂きます。
どうもありがとうございました。

お礼日時:2005/05/17 20:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!