本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
令和5年度 ネットワークスペシャリスト試験 午前Ⅱ 問15 IPv4フラグメンテーション
IPパケットの分割におけるサイズ計算を問う問題です。MTUとヘッダーサイズの差分から、分割後のデータ長を導き出すのが解法の鍵です。
IPヘッダーの長さが20バイト、IPデータ部の長さが4,000バイトのIPv4パケットを、MTUが1,500バイトのネットワークに送出するために、フラグメンテーション(分割)を行う。第2番目のパケットの「全長(Total Length)」は何バイトか。
【解説】
IPフラグメンテーション(パケット分割)における計算手順は以下の通りです。
1パケットあたりの最大データ長の算出 MTU(最大転送単位)は、IPヘッダーを含むパケット全体の最大サイズです。ここからIPヘッダー長を引くことで、1フラグメントに載せられるデータの最大長を求めます。 $$1,500 (\text{MTU}) – 20 (\text{Header}) = 1,480 (\text{bytes})$$
フラグメントオフセットの制約確認 IPv4のフラグメントオフセットは8バイト単位で管理されるため、分割されるデータ長は「8の倍数」である必要があります。 $$1,480 \div 8 = 185$$ 割り切れるため、1,480バイトをそのままデータ部として使用可能です。
分割プロセスの特定 元のデータ4,000バイトを、1,480バイトずつ順次切り出します。
第1パケット:データ1,480バイト(累積1,480)
第2パケット:データ1,480バイト(累積2,960)
第3パケット:データ1,040バイト(残り全部)
第2パケットの「全長」の計算 問題が問うているのは、第2番目のパケットの「全長(IPヘッダー + データ部)」です。 $$20 (\text{Header}) + 1,480 (\text{Data}) = 1,500 (\text{bytes})$$
graph TD
Original["Original: 4020B"] --> H["Header: 20B"]
Original --> D["Data: 4000B"]
D --> P1["Frag1: 1500B"]
D --> P2["Frag2: 1500B"]
D --> P3["Frag3: 1060B"]
subgraph "2nd Packet"
P2
end
【選択肢の吟味】
| 選択肢 | 判定 | 解説 |
|---|---|---|
| ア | 誤り | 1,480バイトは第2パケットの「データ部のみ」の長さです。 |
| イ | 正解 | MTU上限までデータが入るため、全長は1,500バイトとなります。 |
| ウ | 誤り | 2,500バイトは、分割計算にMTUの概念を誤用した数値と考えられます。 |
| エ | 誤り | 2,520バイトは、単に4,000から1,480を引いた残りにヘッダーを足しただけの計算ミスです。 |
【ポイント】
MTUはIPヘッダー(通常20B)を含んだ値である。
分割されるデータサイズは必ず「8の倍数」でなければならない。
全長(Total Length)を問われているのか、データ長のみを問われているのかを確認する。

