ICMP

ICMPとは

ICMP(Internet Control Message Protocol)とは、 TCP/IPのデータ通信において、 通信状態を確認するための 通信プロトコルです。 「エラー通知」や「制御メッセージ」を転送するプロトコルで、 IP(Internet Protocol)をサポートする役割を果たします。

Ptotocolとあるように 通信プロトコル の1つで、 OSI参照モデルではネットワーク層、 TCP/IPではインターネット層で動作します。 ICMPにはIPv4向けの「ICMPv4」とIPv6向けの「ICMPv6」があります。

ICMPを利用したコマンドでよく知られているのが 「ping」と「traceroute」コマンドです。

ping

pingはネットワーク機器の疎通確認(繋がっているかどうかの確認) に使われるコマンドです。

pingコマンドの後に、確認したいコンピュータ機器を指定し、 パケットが正常に届くかどうかを確認します。 正常に到達した場合、到達時間もわかるため、 コンピューターネットワークの 性能チェックにも利用できます。

以下はWebサーバーの「www.yahoo.co.jp」に対してpingコマンドを実行した際の結果です。

pingの実行結果

traceroute

tracetoute(Windowsではtracert)は、 指定したコンピュータにたどり着くまでに、 どのような経路(ルータ)を経由するのかがわかるコマンドです。

経由したルータがリスト表示され、 各ルータのレスポンスもわかるため、 ネットワーク上のボトルネックとなっている箇所も特定できます。

ICMPのメッセージ2種類

ICMPのメッセージには、 問い合わせに関する「Queryメッセージ」と、 エラー通知に関する「Errorメッセージ」の2種類があります。

Queryメッセージ

Query(問い合わせ) によって、 特定のノード間の通信状況を確認することができます。 その際にやりとりされるのがQueryメッセージです。

上で紹介したpingやtracerouteはQueryを利用した 通信プログラムです。

Errorメッセージ

コンピュータ間での通信途中にパケットが破棄されたり、 IPアドレス が見つからなかった場合に、 その原因を送信元にErrorメッセージとして通知します。

ICMPはIP(Internet Protocol)をサポートする役割

TCP/IP通信でのIP(Internet Protocol)は、 コネクションレス型といってデータを一方的に送るプロトコルです。 そのため、IPだけだとパケット転送に失敗した場合に、 失敗を検知することはできません。

そこで、ICMPはエラーが発生した場合に、 パケットの送信元に対してエラーメッセージを送信します。 データの送信元は、ICMPのおかげでエラーが発生したことがわかります。

このようにICMPは、 IPをサポート(補完)する役割を果たしています。