ネットワークスペシャリスト 2015年 午前2 問07
問題文
IPv4におけるICMPのメッセージに関する説明として、適切なものはどれか。
選択肢
ア:送信元が設定したソースルーティングが失敗した場合は、EchoReplyを返す。
イ:転送されてきたデータグラムを受信したルータが、そのネットワークの最適なルータを送信元に通知して経路の変更を要請するには、Redirectを使用する。(正解)
ウ:フラグメントの再組立て中にタイムアウトが発生した場合は、データグラムを破棄してParameterProblemを返す。
エ:ルータでメッセージを転送する際に、受信側のバッファがあふれた場合はTimeExceededを送り、送信ホストに送信を抑制することを促す。
🔒 解説は解答すると表示されます
ICMPメッセージの用途【午前2解説】
正解の理由
ルータがホストに「より適切な次のホップ(経路)」を知らせるために使うICMPメッセージは、ICMP Redirect(Type 5)です。選択肢の中では、経路変更を要請する機能を正しく説明しているのは イ だけです。したがって、ルータが受信したデータグラムの送信元ホストに対して「この宛先への送出は別のルータへ送ればよい」と通知する用途を持つメッセージとして、イ が正解になります。
解法ステップ
- 各選択肢が述べている「通知・応答」の内容をICMPの代表的メッセージ(Echo Reply、Destination Unreachable、Redirect、Time Exceeded、Parameter Problem 等)と対応させる。
- 正しい用途・条件(例:Fragmentation Needed は DF セット時の MTU 問題、Time Exceeded は TTL 切れや再組立てタイムアウト等)を思い出して、合致しない選択肢を削る。
- ルータが「経路を変えろ」とホストに知らせる用途はRedirect(Type 5)であることを確認して イ を選ぶ。
選択肢別の誤答解説
-
ア: 「ソースルーティングが失敗した場合に Echo Reply を返す」
誤り。Echo Reply(Type 0)はEcho Request(Type 8)への応答であり、ソースルーティング失敗は ICMP Destination Unreachable の該当コード(code 5: source route failed)で通知されます。よって Echo Reply は不要です。 -
イ: 「転送ルータが最適ルータを送信元に通知するには Redirect を使用する」
正しい。ICMP Redirect(Type 5)は、ホストが非最適な第一ホップへ送ったときに、その送信元ホストへより良い次ホップを知らせるために使われます(ただし送信元が同一ネットワーク上にある等、送信条件があります)。 -
ウ: 「フラグメント再組立て中にタイムアウトが発生した場合に Parameter Problem を返す」
誤り。フラグメントの再組立てタイムアウトが発生したときは、ICMP Time Exceeded(Type 11)で再組立て時間超過(code 1)を通知します。Parameter Problem(Type 12)はヘッダの不正やオプションポインタの問題など、IPヘッダ処理中の異常に使われます。 -
エ: 「ルータの受信バッファあふれ時に Time Exceeded を送り、送信抑制を促す」
誤り。Time Exceeded は TTLの減少による到達不能や再組立てタイムアウトを示すメッセージであり、受信バッファあふれ(バッファオーバーフロー)に対する標準的なICMP通知は存在しません。なお、かつて輻輳制御目的に Source Quench(Type 4)が使われたことがありますが、現在は非推奨/廃止扱いで、実運用では期待できません。
よくある誤解
- Fragmentation Needed(Destination Unreachable、code 4)を「バッファあふれ時の通知」と混同する誤解。実際は DF(Don't Fragment)がセットされたパケットがMTUを超えて到着した場合に送られるもので、バッファあふれとは無関係です。
- Source Quench は輻輳を通知するために使われたとする記述。現在は非推奨(廃止)であり、現代のネットワークでは使われない/使ってはいけないと考えるべきです。
- Redirect を見て「どんな場合でもルータが経路情報をホストへ更新する」と誤認するケース。Redirect は特定条件(送信元が同ネットワーク上、ルータが転送パス上にある等)でのみ送られます。
補足コラム
代表的なICMPメッセージ(簡潔)
- Echo Request/Reply(Type 8/0): pingの要求/応答。
- Destination Unreachable(Type 3): ネットワーク/ホスト到達不能、ポート到達不能、Fragmentation Needed(code 4)、source route failed(code 5)など複数コードあり。
- Redirect(Type 5): ホストへより良い次ホップを通知。
- Time Exceeded(Type 11): TTL経過(code 0)やフラグメント再組立て時間超過(code 1)を通知。
- Parameter Problem(Type 12): IPヘッダの処理で問題があったとき。
- Source Quench(Type 4): 歴史的に輻輳制御用に使われたが現在は非推奨。
補足として、Path MTU Discovery の流れでは、DF ビットがセットされたパケットが経路上でMTU不足に遭うと「Destination Unreachable — Fragmentation Needed(code 4)」が返され、それを受けて送信側がパケットサイズを下げる、というやり取りが行われます。
FAQ
Q1: ルータのバッファがあふれたら送信元にどのICMPが返るのですか?
A1: 標準のICMPで「バッファあふれ」を直接通知する種類は定義されていません。過去に Source Quench が輻輳抑制として使われたことはありますが、現在は非推奨のため実際のネットワークでは期待できません。多くの場合は単にパケットが破棄され、上位プロトコル(例:TCP)が再送や輻輳制御で対応します。
A1: 標準のICMPで「バッファあふれ」を直接通知する種類は定義されていません。過去に Source Quench が輻輳抑制として使われたことはありますが、現在は非推奨のため実際のネットワークでは期待できません。多くの場合は単にパケットが破棄され、上位プロトコル(例:TCP)が再送や輻輳制御で対応します。
Q2: フラグメント再組立てタイムアウトとTTL切れは同じメッセージで通知されますか?
A2: はい。どちらもICMP Time Exceeded(Type 11)で通知されます。コードで区別され、TTL超過は code 0、再組立て時間超過は code 1 です。
A2: はい。どちらもICMP Time Exceeded(Type 11)で通知されます。コードで区別され、TTL超過は code 0、再組立て時間超過は code 1 です。
関連キーワード: ICMP, Redirect, Destination Unreachable, Time Exceeded, Fragmentation Needed, Source Quench, Parameter Problem, TTL, 再組立てタイムアウト, Path MTU Discovery

\ せっかくなら /
ネットワークスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

