匿名希望さん、 返事遅くなりました。
フラグメンテーションの機能で分割されたパケットは 分割された姿で受信側まで中継されていきます。 そして、受信する際に、受信側のIPが、 分割された断片を結合して元のパケットに復元します。 そして、その復元したパケットを上位の階層(TCPが代表例)に渡します。
つまり、IPの上位にいるプロトコルが受信するのは、 復元したパケットであって、分割したパケットAとかパケットBではありませんから、 パケットBにTCPヘッダがないから困った、というような事態は起こりません。
それから、フラグメンテーションで分割したパケット断片を元に戻す際に参照するヘッダ情報は IPヘッダにあるフラグとフラグメントオフセットというフィールドです。 TCPのシーケンス番号ではありません。
質問内容から察するに、 IPのフラグメンテーションと、TCPのデータ分割を混同しているのでは?
両者は全然違うもので、 TCPのデータ分割はIPパケットを作成する前に行うのに対して、 IPフラグメンテーションはIPパケットを作成した後、 それをIPの下位のパケットシステムを使って運ぶ際に発生します。
その違いを整理すれば、疑問は解けるように思います。
More information about text formats
IPフラグメンテーションとTCPのデータ分割は違うもの
匿名希望さん、
返事遅くなりました。
フラグメンテーションの機能で分割されたパケットは
分割された姿で受信側まで中継されていきます。
そして、受信する際に、受信側のIPが、
分割された断片を結合して元のパケットに復元します。
そして、その復元したパケットを上位の階層(TCPが代表例)に渡します。
つまり、IPの上位にいるプロトコルが受信するのは、
復元したパケットであって、分割したパケットAとかパケットBではありませんから、
パケットBにTCPヘッダがないから困った、というような事態は起こりません。
それから、フラグメンテーションで分割したパケット断片を元に戻す際に参照するヘッダ情報は
IPヘッダにあるフラグとフラグメントオフセットというフィールドです。
TCPのシーケンス番号ではありません。
質問内容から察するに、
IPのフラグメンテーションと、TCPのデータ分割を混同しているのでは?
両者は全然違うもので、
TCPのデータ分割はIPパケットを作成する前に行うのに対して、
IPフラグメンテーションはIPパケットを作成した後、
それをIPの下位のパケットシステムを使って運ぶ際に発生します。
その違いを整理すれば、疑問は解けるように思います。