ICMP あいしーえむぴー
ICMPInternet Control Message Protocolpingtracerouteエラー通知
ICMPについて教えて
簡単に言うとこんな感じ!
ネットワークの「状況報告係」みたいなプロトコルだよ。「その宛先には届かないよ」とか「ルーターを越えすぎたから捨てたよ」って知らせてくれるんだ。pingコマンドも実はICMPを使ってるんだよ!
ICMPとは
ICMP(Internet Control Message Protocol)は、IP通信のエラー報告や診断に使われる補助プロトコルです。IPパケットが宛先に届かなかったときや、ネットワーク上で問題が発生したときに、送信側に状況を知らせる役割を担います。
ICMPはIPと同じネットワーク層(OSI第3層)で動作し、IPパケットに内包されて送られます。アプリケーションが直接使うプロトコルではなく、主にネットワーク機器やOS内部で自動的に使われます。
最も身近なICMPの活用例はpingコマンドです。pingは「ICMP Echo Request」を送り、相手が「ICMP Echo Reply」を返すことで、通信経路が生きているかを確認します。またtraceroute(Windowsではtracert)コマンドも、ICMPの「Time Exceeded」メッセージを利用して経路上のルーターを特定します。
主なICMPメッセージの種類
| タイプ番号 | 名前 | 用途 |
|---|---|---|
| 0 | Echo Reply | pingへの応答 |
| 3 | Destination Unreachable | 宛先に届かない(ポートなし、ルートなし等) |
| 5 | Redirect | より良い経路への誘導 |
| 8 | Echo Request | ping送信 |
| 11 | Time Exceeded | TTLが0になった(tracerouteで活用) |
| 12 | Parameter Problem | ヘッダの不正 |
歴史と背景
- 1981年:RFC 792でICMPがIPv4と同時に標準化
- 1996年:ICMPv6(RFC 2463)がIPv6用として策定。IPv6ではARPの機能もICMPv6に統合
- 2000年代:DDoS攻撃(smurf攻撃等)でICMPが悪用されるようになり、ファイアウォールでの制限が普及
- 現在:セキュリティのためにICMPをすべてブロックする設定は避けられるようになってきた(pingブロックによるMTU問題等)
pingの動作フロー
ICMPv6との違い
IPv6ではICMPv6(RFC 4443)が使われます。IPv4のICMPより役割が拡張されており、NDP(近隣探索プロトコル)の機能も含まれています。IPv4でARPが担っていたMACアドレス解決も、IPv6ではICMPv6が担当します。
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 792 | ICMP(IPv4用) |
| RFC 4443 | ICMPv6(IPv6用) |
| RFC 4890 | IPv6ネットワークにおけるICMPv6のフィルタリングガイドライン |