ネットワークスペシャリスト 2017年 午前2 問07
問題文
IPv4におけるICMPのメッセージに関する説明として、適切なものはどれか。
選択肢
ア:送信元が設定したソースルーティングが失敗した場合は、Echo Replyを返す。
イ:転送されてきたデータグラムを受信したルータが、そのネットワークの最適なルータを送信元に通知して経路の変更を要請するには、Redirectを使用する。(正解)
ウ:フラグメントの再組立て中にタイムアウトが発生した場合は、データグラムを破棄してParameter Problemを返す。
エ:ルータでメッセージを転送する際に、受信側のバッファがあふれた場合はTime Exceededを送り、送信ホストに送信を抑制することを促す。
IPv4におけるICMPのメッセージに関する説明【午前2 解説】
正解の理由
- イ(ルータが受信したデータグラムについて、送信元へ最適なルータを通知して経路変更を要請するにはRedirectを使用する)はICMPの標準的な機能そのもので、送信元が不適切な次ホップ(例えば同一ネットワーク内にある他のホストを経由している場合)へ送ってきたと判断したルータが、送信元に対してより良い(直接的または最短の)次ホップを知らせるためにRedirectメッセージを送信します。これにより以降の通信で送信元が新しい経路を使えるようになります。
解法ステップ
- 各選択肢に出てくるICMPメッセージ名(Echo Reply、Redirect、Parameter Problem、Time Exceeded)の意味を頭に入れる。
- 問題文の動作(送信元へ「より良いルータを通知して経路変更を要請」)がどのメッセージ仕様に合致するか照合する。
- RFCの定義や教科書的説明と照らし合わせ、最も適合するメッセージを選ぶ。
- 残りの選択肢がなぜ誤りかをICMPの用途で説明できれば確信度が上がる。
選択肢別の誤答解説
- ア: 送信元が設定したソースルーティングが失敗した場合にEcho Replyを返す、は誤り。Echo(Request/Reply)はICMPの疎通確認機能であり、ソースルートの失敗時の応答には用いられません。失敗状況に応じてDestination Unreachableなど別のICMPエラーメッセージが発生する場合があります。
- イ: 正解。ルータが受信したパケットのルーティングパスが最適でないと判断した場合、送信元に対して新しい最適次ホップを示すRedirectメッセージを送ることで、送信元に経路変更を促します。
- ウ: フラグメントの再組立て中にタイムアウトが発生した場合は、データグラムを破棄するのが正しく、Time Exceeded(再組立てタイムアウトに使われることがある)やDestination Unreachableで通知する場合があり得ますが、Parameter Problem(パラメータの不整合)はヘッダの形式エラー時に用いるため誤りです。
- エ: 受信側のバッファがあふれた場合にTime Exceededを送る、は誤り。Time ExceededはTTLの消耗や再組立てタイムアウト時に使われるもので、バッファあふれに対しては別の制御(TCPのフロー制御やICMP Source Quench(ほぼ廃止)や管理的な通知)が関係します。
よくある誤解
- 送信元が設定したソースルーティングが失敗したらEcho Replyを返す、という誤解:Echo/Replyはping(疎通確認)用であり、ソースルーティングの失敗時に返すメッセージではありません。
- フラグメントの再組立てタイムアウトでParameter Problemを返す、という誤解:再組立て不能になった場合は通常、関連するデータグラムを破棄しますが、Parameter Problemはヘッダの解釈不能や不正なフィールドに対して使われます。
- バッファあふれでTime Exceededを送る、という誤解:Time Exceededは主にTTL(生存時間)減少によるものや再組立てタイムアウトで使われる分類で、バッファあふれ時は通常Destination Unreachable(Code: fragmentation neededやcommunication administratively prohibitedなど)やICMP Source Quench(非推奨)等の扱いを連想しがちですが、Time Exceededは該当しません。
補足コラム
- ICMPはIP層のメッセージであり、エラー報告と診断(例:ping、traceroute)に使われます。ICMPメッセージを乱発するとセキュリティ上の問題(情報漏えいやDoS)に繋がるため、現代では一部のICMPメッセージ利用が制限されています。
- Redirectは便利ですが、悪意ある経路書き換えに利用されうるため、多くのネットワークでは転送ルータがRedirectを送る条件やファイアウォールでのフィルタリングを厳しくしています。
- よく使われるICMP種別の対応表(概要)
- Echo Request/Reply:疎通確認(ping)
- Destination Unreachable:到達不能(コードで詳細を示す)
- Time Exceeded:TTL切れや再組立てタイムアウト
- Redirect:送信元により適切な次ホップを通知
- Parameter Problem:IPヘッダに不正・解釈不能なフィールドがある場合
FAQ
Q1: Redirectは常に送られるのですか?
A1: いいえ。ルータは特定条件(同一ネットワークに由来する送信元、最適ではない経路を選んでいると判断した場合など)でのみ送ります。またセキュリティ上の理由で無効化している環境もあります。
A1: いいえ。ルータは特定条件(同一ネットワークに由来する送信元、最適ではない経路を選んでいると判断した場合など)でのみ送ります。またセキュリティ上の理由で無効化している環境もあります。
Q2: ICMP Redirectを受けた送信元は必ず経路を変更しますか?
A2: 実装や設定次第です。OSやホストのルーティングテーブルが自動で更新することもありますが、安全性のため無視する設定が一般的に可能です。
A2: 実装や設定次第です。OSやホストのルーティングテーブルが自動で更新することもありますが、安全性のため無視する設定が一般的に可能です。
Q3: Time ExceededとParameter Problemの違いは?
A3: Time ExceededはTTL切れや再組立て中のタイムアウト等、時間関連の経路問題を示し、Parameter ProblemはIPヘッダの不正や解釈不能なフィールドに対するエラー通知です。
A3: Time ExceededはTTL切れや再組立て中のタイムアウト等、時間関連の経路問題を示し、Parameter ProblemはIPヘッダの不正や解釈不能なフィールドに対するエラー通知です。
関連キーワード: ICMP、IPv4、Redirect、Echo、Destination Unreachable、Time Exceeded、Parameter Problem、ネットワーク診断、ルーティング、RFC 792

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

