ICMP

ICMPとは

ICMP(Internet Control Message Protocol)は、IP通信のエラー通知と状態確認を担うプロトコルです。[[TCP/IP]] のIP層(ネットワーク層)で動作し、「宛先に届かなかった」「経路の途中で破棄された」といった情報を送信元へ知らせます。

IPそのものは送りっぱなし(ベストエフォート)の仕組みで、届いたかどうかを確認する機能を持ちません。その足りない部分を補う「連絡係」がICMPです。データを運ぶプロトコルではなく、通信の裏方として制御情報だけをやり取りします。

代表的なメッセージ

タイプ名前意味
8 / 0エコー要求 / エコー応答疎通確認(ping が使う)
3宛先到達不能(Destination Unreachable)宛先ホストやポートに届けられない
11時間超過(Time Exceeded)TTLが0になりパケットが破棄された
5リダイレクトもっと良い経路があることの通知

TTL(Time To Live)は、パケットが [[ルーティング]] でルーターを1つ通過するたびに1減る値です。0になるとパケットは破棄され、破棄したルーターが時間超過メッセージを送信元へ返します。これにより、経路がループしてもパケットが永遠に回り続けることを防ぎます。

pingとtracerouteの仕組み

  • ping — エコー要求を送り、エコー応答が返るまでの時間を測る。「相手まで届くか」「往復に何ミリ秒かかるか」が分かる
  • traceroute — TTLを1、2、3…と増やしながら送信し、各ルーターから返る時間超過メッセージを集めて経由するルーターの一覧を描き出す

どちらも [[ネットワーク診断コマンド]] の代表格で、ICMPの仕組みをそのまま応用したツールです。

初学者向けポイント

  • [[ファイアウォール]] がICMPを遮断していると、通信は正常でもpingだけ失敗することがある。「ping不通=障害」と即断しない
  • ICMPはTCPでもUDPでもなく、IPの上に直接乗る独立したプロトコル。ポート番号の概念がない
  • [[IPv6]] ではICMPv6に置き換わり、エラー通知に加えてアドレス解決(近隣探索)まで担う、より重要な存在になっている

関連技術とのつながり

  • [[ネットワーク診断コマンド]] — ping・tracerouteはICMPメッセージを利用して動く
  • [[TCP/IP]] — ICMPはIP層の補助プロトコルとして位置づけられる
  • [[IPアドレスとサブネット]] — エラー通知は宛先IPアドレスへの到達可否を知らせる
  • [[ルーティング]] — TTL超過や到達不能の通知は経路上のルーターから返される
Q: ICMPの役割として正しいのはどれ?
- [x] IP通信のエラー通知や疎通確認などの制御情報をやり取りする
- [ ] Webページの内容を転送する
- [ ] IPアドレスを自動で割り当てる
解説: ICMPはデータを運ぶのではなく、「届かなかった」「破棄された」といった通信の制御情報を伝える裏方のプロトコルです。

Q: パケットのTTLが0になったとき何が起きる?
- [ ] パケットが優先的に転送される
- [x] ルーターがパケットを破棄し、時間超過メッセージを送信元へ返す
- [ ] パケットが自動で再送される
解説: TTLはルーター通過ごとに1減り、0で破棄されます。経路ループでパケットが回り続けるのを防ぐ仕組みです。

Q: pingが失敗したときの判断として本文の内容に合うのはどれ?
- [ ] ping不通なら必ずネットワーク障害が起きている
- [x] ファイアウォールがICMPを遮断している可能性もあるため、即断しない
- [ ] pingはICMPと無関係なので原因の切り分けには使えない
解説: ICMPを遮断する設定のサーバーやファイアウォールは珍しくなく、通信自体は正常でもpingだけ失敗することがあります。