ネットワークスペシャリスト 2017年 午前2 問07
問題文
IPv4におけるICMPのメッセージに関する説明として、適切なものはどれか。
選択肢
ア:送信元が設定したソースルーティングが失敗した場合は、Echo Replyを返す。
イ:転送されてきたデータグラムを受信したルータが、そのネットワークの最適なルータを送信元に通知して経路の変更を要請するには、Redirectを使用する。(正解)
ウ:フラグメントの再組立て中にタイムアウトが発生した場合は、データグラムを破棄してParameter Problemを返す。
エ:ルータでメッセージを転送する際に、受信側のバッファがあふれた場合はTime Exceededを送り、送信ホストに送信を抑制することを促す。
🔒 解説は解答すると表示されます
ICMPのRedirect【午前2解説】
正解の理由
ルータが受信したデータグラムの送信元ホストに対して、同一ネットワーク上により適切な次のホップ(最適ルータ)が存在することを通知して経路変更を促す機能は、ICMPのRedirectメッセージです。したがって選択肢イが正しいです。Redirectはルータがパケットを受信したインタフェースから同じインタフェースへ再送するときに、送信元が直接接続されたホストであると判断されれば送信されます(あくまでアドバイス的通知)。
解法ステップ
- ICMPの代表的なメッセージの目的を整理する(Echo, Echo Reply, Destination Unreachable, Redirect, Time Exceeded, Parameter Problem 等)。
- 各選択肢に対応するICMPメッセージの役割を照合する。
- 「送信元へ最適ルータを通知して経路変更を要請する」という記述はRedirectの定義に一致するため選択肢イを選ぶ。
- 残りはICMPの用途(TTL切れやフラグメント再組立てタイムアウトはTime Exceeded、ヘッダ異常はParameter Problem 等)と照らして排除する。
選択肢別の誤答解説
- ア: 送信元が設定したソースルーティングが失敗した場合に返されるのはEcho Replyではありません。ソースルーティング失敗時は通常 Destination Unreachable(該当する理由を示すコード)を返すのが妥当で、Echo Replyは単にpingの応答に使われるものです。
- イ: ルータが「この宛先へ向かうのにあなたのホストから見てもっと良い次のホップがある」と判断した場合に送るのがICMP Redirectです。送信元が直接接続されたホストであること、パケットが入ってきたインタフェースから同じインタフェースへ送られることなどが条件です。
- ウ: フラグメントの再組立て中にタイムアウトが発生した場合は、データグラムは破棄され、ICMPの Time Exceeded(再組立てタイムアウトを示す)を返すのが正しい扱いです。Parameter Problemはパケットヘッダの不正などパラメータ関連の問題に用いられます。
- エ: 受信側バッファのあふれ(転送時の輻輳や一時的なバッファ不足)に対して標準的にTime Exceededを返す、という扱いは誤りです。Time ExceededはTTLの減少による期限切れやフラグメント再組立てのタイムアウトに用いられます。輻輳に伴う送信抑制を示すICMP Source Quenchは歴史的に存在しましたが、現在は使用が推奨されず事実上廃止されています。実運用ではバッファ溢れは単にパケットを破棄されることが多く、ICMPが返されない場合が多い(管理的に明示的に拒否する場合は Destination Unreachable の該当コードを返すことがあるが、汎用ルールではない)。
よくある誤解
- 「Time Exceededは『何らかの理由で送信を抑制したいとき』に使う」
→ 誤り。Time ExceededはTTL切れやフラグメント再組立てタイムアウトに限定して使われます。輻輳通知用途ではないことを押さえてください。 - 「Source Quenchで輻輳を通知するのが標準」
→ Source Quenchは現代の標準的な手段ではなく廃止的扱いです。輻輳制御は主に上位プロトコル(TCP)の再送制御やECN等で行われます。 - 「Redirectは経路を強制変更する」
→ 誤り。Redirectはあくまで送信元ホストへの通知(アドバイス)であり、ホスト側がその情報を採用するかどうかは実装依存です。セキュリティ上の理由で無効化されることもあります。
補足コラム
- Redirectメッセージ条件(主なポイント)
- ルータがパケットを受信したインタフェースから同じインタフェースへ送信するときにのみ送る。
- 送信元がそのルータの直接接続ホストであることが前提。
- Redirectは「ネットワーク/ホストの方向(network/host)」「タイプ(host)」など、状況に応じたサブタイプがあります。
- セキュリティ面:偽のRedirectを用いたルーティング乗っ取り(ICMPリダイレクト攻撃)があるため、多くのホストやルータは受信したRedirectを慎重に扱うか無効化する設定があります。
- 実機での確認例(簡易)
- ICMPメッセージをキャプチャする:
sudo tcpdump -n -vv icmp - ルータのリダイレクト挙動はネットワーク構成やOS設定に依存するため、テスト環境で条件を揃えて検証してください。
- ICMPメッセージをキャプチャする:
FAQ
Q1: Redirectは必ず送信されますか?
A1: いいえ。送信条件を満たさない場合やセキュリティ上無効化されている場合は送信されません。ホストも受信したRedirectを採用しない実装があります。
A1: いいえ。送信条件を満たさない場合やセキュリティ上無効化されている場合は送信されません。ホストも受信したRedirectを採用しない実装があります。
Q2: フラグメント再組立てタイムアウトで返されるのは何ICMPか?
A2: Time Exceeded(フラグメント再組立てのタイムアウトを示す)。Parameter Problemではありません。
A2: Time Exceeded(フラグメント再組立てのタイムアウトを示す)。Parameter Problemではありません。
Q3: バッファあふれでSource Quenchが送られることはある?
A3: 歴史的にはありましたが、Source Quenchは現在は推奨されず廃止的扱いです。多くの場合、パケットは破棄されICMPは返されないか、管理的にDestination Unreachableなど別の応答が返される場合があります。
A3: 歴史的にはありましたが、Source Quenchは現在は推奨されず廃止的扱いです。多くの場合、パケットは破棄されICMPは返されないか、管理的にDestination Unreachableなど別の応答が返される場合があります。
関連キーワード: ICMP、Redirect、Time Exceeded、Destination Unreachable、Parameter Problem、Source Quench、フラグメント再組立て、輻輳、ルーティングセキュリティ

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

