エンベデッドシステムスペシャリスト 2021年 午前2 問15
問題文
TCP/IPネットワークにおけるICMPの機能として、適切なものはどれか。
選択肢
ア:IPパケットが経由したルータの数が規定値に達したことを送信元に通知する。(正解)
イ:UDPパケットのチェックサムエラーを送信元に通知する。
ウ:イーサネットフレームのFCSエラーが発生したときに再送を要求する。
エ:データが途中で失われたときに、TCPヘッダのシーケンス番号を送信元に伝え再送を要求する。
🔒 解説は解答すると表示されます
ICMPの機能【午前2解説】
正解の理由
ICMPは、IP通信で発生したエラーや通信状態を通知するためのプロトコルです。
IPパケットのTTL(Time To Live)は、ルータを1台通過するごとに減少します。TTLが0になると、そのパケットは破棄され、ルータは送信元にICMPの「時間超過(Time Exceeded)」メッセージを送ります。
したがって、ルータを通過した数が上限に達したことを送信元へ通知するアが適切です。
解法ステップ
- ICMPが、IP通信に関するエラーや状態の通知に使われることを確認します。
- IPパケットのTTLが0になった場合の動作を思い出します。
- ルータがパケットを破棄し、送信元へICMPの時間超過メッセージを送るため、アを選びます。
選択肢別の誤答解説
- ア:適切です。TTLが0になると、ルータはパケットを破棄して、ICMPの時間超過メッセージを送信元に通知します。
- イ:UDPのチェックサムエラーを検出した場合、通常は該当のパケットが破棄されます。ICMPがUDPのチェックサムエラーを必ず送信元へ通知する、という機能ではありません。
- ウ:イーサネットフレームのFCSエラーは、イーサネットのデータリンク層で検出されます。ICMPが再送を要求するものではありません。
- エ:TCPの再送制御は、TCPの確認応答(ACK)やタイムアウトなどに基づいて行われます。ICMPがTCPのシーケンス番号を使って再送を要求するわけではありません。
よくある誤解
- TTLは時間を秒で測る値だと思い込む:TTLはルータを通過するたびに減る値です。現在のIPネットワークでは、主に通過できるルータ数の上限として働きます。
- エラー通知はすべてICMPの役割だと思い込む:FCSエラーの検出はイーサネット、TCPの再送制御はTCPの機能です。どの階層の機能かを区別しましょう。
- ICMPがパケットを再送すると思い込む:ICMPはエラーや状態の通知を行います。再送そのものは、必要に応じてTCPなどが行います。
補足コラム
通信経路を調べる
tracerouteやtracertは、TTLを段階的に変えたパケットを送信し、各ルータから返るICMPの時間超過メッセージを利用します。この仕組みにより、送信元から宛先までの経路を調べられます。FAQ
Q. TTLが0になったパケットは、宛先まで転送されますか?
A. いいえ。TTLが0になった時点でルータがパケットを破棄し、送信元へICMPの時間超過メッセージを送ります。
A. いいえ。TTLが0になった時点でルータがパケットを破棄し、送信元へICMPの時間超過メッセージを送ります。
Q. ICMPは、TCPやUDPのようにアプリケーションのデータを運ぶプロトコルですか?
A. 主な役割は、IP通信に関するエラーや状態の通知です。TCPやUDPのようなデータ転送用のプロトコルとは役割が異なります。
A. 主な役割は、IP通信に関するエラーや状態の通知です。TCPやUDPのようなデータ転送用のプロトコルとは役割が異なります。
関連キーワード: ICMP、TTL、時間超過、IP、traceroute

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

