<p><!-- style_prompt: detailed_commentary_v1 -->本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">令和5年度 ネットワークスペシャリスト試験 午前Ⅱ 問15 IPv4フラグメンテーション</h1>
<p>IPパケットの分割におけるサイズ計算を問う問題です。MTUとヘッダーサイズの差分から、分割後のデータ長を導き出すのが解法の鍵です。</p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>IPヘッダーの長さが20バイト、IPデータ部の長さが4,000バイトのIPv4パケットを、MTUが1,500バイトのネットワークに送出するために、フラグメンテーション(分割)を行う。第2番目のパケットの「全長(Total Length)」は何バイトか。</p>
</blockquote>
<h3 class="wp-block-heading">【解説】</h3>
<p>IPフラグメンテーション(パケット分割)における計算手順は以下の通りです。</p>
<ol class="wp-block-list">
<li><p><strong>1パケットあたりの最大データ長の算出</strong>
MTU(最大転送単位)は、IPヘッダーを含むパケット全体の最大サイズです。ここからIPヘッダー長を引くことで、1フラグメントに載せられるデータの最大長を求めます。
$$1,500 (\text{MTU}) – 20 (\text{Header}) = 1,480 (\text{bytes})$$</p></li>
<li><p><strong>フラグメントオフセットの制約確認</strong>
IPv4のフラグメントオフセットは8バイト単位で管理されるため、分割されるデータ長は「8の倍数」である必要があります。
$$1,480 \div 8 = 185$$
割り切れるため、1,480バイトをそのままデータ部として使用可能です。</p></li>
<li><p><strong>分割プロセスの特定</strong>
元のデータ4,000バイトを、1,480バイトずつ順次切り出します。</p>
<ul>
<li><p>第1パケット:データ1,480バイト(累積1,480)</p></li>
<li><p>第2パケット:データ1,480バイト(累積2,960)</p></li>
<li><p>第3パケット:データ1,040バイト(残り全部)</p></li>
</ul></li>
<li><p><strong>第2パケットの「全長」の計算</strong>
問題が問うているのは、第2番目のパケットの「全長(IPヘッダー + データ部)」です。
$$20 (\text{Header}) + 1,480 (\text{Data}) = 1,500 (\text{bytes})$$</p></li>
</ol>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
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
</pre></div>
<h3 class="wp-block-heading">【選択肢の吟味】</h3>
<figure class="wp-block-table"><table>
<thead>
<tr>
<th style="text-align:left;">選択肢</th>
<th style="text-align:left;">判定</th>
<th style="text-align:left;">解説</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">ア</td>
<td style="text-align:left;">誤り</td>
<td style="text-align:left;">1,480バイトは第2パケットの「データ部のみ」の長さです。</td>
</tr>
<tr>
<td style="text-align:left;"><strong>イ</strong></td>
<td style="text-align:left;"><strong>正解</strong></td>
<td style="text-align:left;">MTU上限までデータが入るため、全長は1,500バイトとなります。</td>
</tr>
<tr>
<td style="text-align:left;">ウ</td>
<td style="text-align:left;">誤り</td>
<td style="text-align:left;">2,500バイトは、分割計算にMTUの概念を誤用した数値と考えられます。</td>
</tr>
<tr>
<td style="text-align:left;">エ</td>
<td style="text-align:left;">誤り</td>
<td style="text-align:left;">2,520バイトは、単に4,000から1,480を引いた残りにヘッダーを足しただけの計算ミスです。</td>
</tr>
</tbody>
</table></figure>
<h3 class="wp-block-heading">【ポイント】</h3>
<ul class="wp-block-list">
<li><p>MTUはIPヘッダー(通常20B)を含んだ値である。</p></li>
<li><p>分割されるデータサイズは必ず「8の倍数」でなければならない。</p></li>
<li><p>全長(Total Length)を問われているのか、データ長のみを問われているのかを確認する。</p></li>
</ul>
本記事は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)を問われているのか、データ長のみを問われているのかを確認する。
ライセンス:本記事のテキスト/コードは特記なき限り
CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。
コメント