MTU (Maximum Transmission Unit)が1,500バイトに設定されたIPv4ネットワークで,2,000バイトのデータをTCPを用いて送信するときに,二つ目に送信されるパケットに含まれるデータは何バイトか。
ここで,TCPヘッダー長は20バイト,IPヘッダー長は20バイト,イーサネットのヘッダー長とトレーラー長は,それぞれ14バイトと4バイトとする。
また,データを複数パケットに分割して送信するときは,先に送信するパケットに格納できる上限までデータを含めて送信するものとする。
正答2
解説
正解は2です。
MTU(Maximum Transmission Unit)は、イーサネットのフレームに載せられるIPパケットの最大長です。
MTUにはIPヘッダーとTCPヘッダーが含まれますが、イーサネットのヘッダーとトレーラーは含まれません。
1パケットに格納できるデータの上限(MSS:Maximum Segment Size)を求め、二つ目のパケットに残るデータ量を計算します。
【計算】
1パケットのデータの上限は、1,500-20(IPヘッダー)-20(TCPヘッダー)=1,460バイトです。
一つ目のパケットには、上限いっぱいの1,460バイトを格納します。
二つ目のパケットのデータは、2,000-1,460=540バイトです。
【選択肢別解説】
1:× 500バイトは、一つ目のパケットに1,500バイトのデータが入ると考えた値です。
MTUにはIPヘッダーとTCPヘッダーの40バイトが含まれるので、データは1,460バイトまでしか入りません。
2:○ 一つ目のパケットに1,460バイトを格納すると、残りの540バイトが二つ目のパケットのデータになります。
3:× 580バイトは、二つ目のパケットのデータ540バイトにIPヘッダーとTCPヘッダーの40バイトを足した、IPパケット全体の長さです。
問われているのはデータの量です。
4:× 598バイトは、580バイトにさらにイーサネットのヘッダー14バイトとトレーラー4バイトを足した、フレーム全体の長さです。
データの量ではありません。
【ポイント】
TCPのデータ上限(MSS)は、MTUからIPヘッダーとTCPヘッダーを引いた値で、オプションがなければ1,460バイトです。
イーサネットのヘッダーとトレーラーはMTUの外側にあることに注意しましょう。