ホスト A とホスト B の 2 つのホストがあり、ホスト A が 1500 バイトのパケットを B に送信し、それらの間に 2 つのルーターがあり、最初のリンクの MTU が 800 バイトで、2 番目のリンクの MTU が 500 バイトであるとします。彼ら。
私が理解しているように、パケットは両方ともフラグメント化する必要があります。パケットは 3 つのパケット (2 つの同じサイズのパケットと 1 つの小さいパケット) にフラグメント化する必要があります。
次に、この 2 番目のルーターに到達すると、最初の 2 つのフラグメント化されたパケットがそれぞれもう一度フラグメント化されます。最初の 2 つの元のフラグメントは、1 つの大きなフラグメント (500 バイトに近い) と、1 つの小さなフラグメントを生成します。
これは私が混乱しているところです。
「More Fragment」ビットは、パケットが「More Fragment」が 0 に設定された次のパケットまでのフラグメントの一部であることを示す最後のものを除いて、最初の 3 つのフラグメントすべてで 1 に設定する必要があることを知っています。ただし、 、フラグメントの 2 番目のセットについては、よくわかりません。パケットが初めてフラグメント化された場合、最後のフラグメントの「More Fragment」は 0 になりますが、これは実際には元のメッセージの途中にあるフラグメントにすぎないため、1 である必要があると感じています。
より多くの経験を持つ誰かが私のためにこれに光を当ててくれることを願っています. 「More Fragment」ビットは再構成に使用されますか? もしそうなら、フラグメントがフラグメント化されたときに、最後のフラグメントを 0 に設定しないと想像できます。
したがって、アルゴリズムは次のようになります。
If fragmenting a packet with 'More Fragment' set to 0,
then set 'More Fragment' to 1 in all fragmented packets except the last.
Else If fragmenting a packet with 'More Fragment' set to 1,
then set 'More Fragment' to 1 in all of the fragmented packets.
ここでの私の仮定は正しいですか?