【あいしーえむぴー】

ICMP とは?

最終更新:
💡 ネットワークの「エラー報告と点検ツール」

IP通信でエラー通知や疎通確認などに使う制御メッセージのプロトコル。pingのエコー要求・応答が身近な利用例で、IPv6ではICMPv6を使う。

📌 このページのポイント
ICMP:疎通確認とエラー通知 送信元 相手 エコー要求 エコー応答 IPv4のエラー通知の例 送信元 ルーター 宛先に到達できない 時間超過など IPv6ではICMPv6を使う
上段はpingで使う要求と応答。下段の矢印はエラーの通知先が送信元であることを示す。
ひよこ ひよこ
ICMPって何のためにあるの?
ペンギン先生 ペンギン先生
IP通信のエラー報告や診断に使うよ。たとえば「宛先に届かない」「途中で時間切れになった」といった通知だね。TCPやUDPのようにアプリのデータを運ぶための仕組みとは役割が違うんだ。
ひよこ ひよこ
pingと関係あるの?
ペンギン先生 ペンギン先生
あるよ。エコー要求を送り、相手からエコー応答が戻るかを調べるんだ。ただし応答が返ることと、相手のWebサイトなどのサービスが正常に動くことは別だよ。
ひよこ ひよこ
返ってこなければ相手が停止している?
ペンギン先生 ペンギン先生
それだけでは判断できないよ。途中の通信障害のほか、ファイアウォールなどで要求や応答を遮断している可能性もあるんだ。サービスへの接続など、別の確認と合わせて考えよう。
ひよこ ひよこ
経路を調べるときにも使うの?
ペンギン先生 ペンギン先生
たとえばWindowsのtracertは、TTLを少しずつ増やして送信し、途中のルーターから返る時間超過メッセージなどを利用するよ。応答しないルーターは表示できない場合があるんだ。
ひよこ ひよこ
IPv6でも同じ?
ペンギン先生 ペンギン先生
IPv6ではICMPv6という別の形式を使うよ。エコー要求・応答やエラー通知という役割は共通だけれど、メッセージの種類を表す番号などが異なる。IPv4向けの番号をそのまま当てはめないようにしよう。
もっと詳しく知りたい人へ

安全のためにICMPを全部遮断してよい?

一括遮断ではなく、メッセージの種類や通信の用途に応じて判断しよう。特にICMPv6には、パケットが大きすぎることの通知などIPv6通信に必要なものがある。RFC 4890は通過させる通信と機器自身宛ての通信を分け、種類ごとのフィルタリングを説明しているよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ICMP」って出てきたら「ネットワークの疎通確認やエラー報告に使うルールのことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Internet Control Message Protocol」 = インターネット制御メッセージプロトコル
💬 Controlは「制御」、Messageは「メッセージ」。ネットワークを制御するためのメッセージを送るプロトコルという意味だよ

参考資料

← 用語集にもどる