ICMP

インターネット制御情報プロトコル

 ICMP はデバイスによって、主にルータなのですが、通信に関連する広い範囲の情報を知り、報告するために使われます。 なぜデバイスが情報を知り、報告するのでしょうか。以下の状況について、理由を考えてみましょう。

ルータが宛先ネットワークのコンピュータを見つけることができません。 生存時間フィールドの値がゼロになるまで、フレームがループし、ルータはフレームを捨てます。
ユーザがあるコンピュータでは提供していないプログラム( Telnet を提供していないファイルサーバに対して Telnet するなど)に対して接続しようとしたので、 サーバはフレームを捨てます。
ホストが遠隔地の宛先に接続しようとしますが、経由すべきルータが間違っています。 ホストに正しい経路を教えなければなりません。

 上記のどの場合においても、ICMP には発信元にエラー状態を報告するために使う特定の形式があります。 ICMP は RFC 792 に詳しく書かれているので、ここでは簡単な説明だけにします。

Echo と Echo 応答
PING として使われます。ICMP Echo を受けたら、ICMP Echo 応答を返します。
※ echo (エコー)とは「こだま、反響」のことです。
目的地到達不可能
宛先 IP へ到達できない場合、それにはいくつか訳があります。そこで ICMP はその理由を報告します。 このような場合、設定あるいは何らかの通信上の問題であることが多いようです。 IP サービスタイプへの設定が間違っているために起こったとすれば、RFC 1349 を見る必要があるでしょう。
始点経路制御
処理能力の高いホストに追いつけず、ルータが過負荷状態になっているときに、 ルータは始点経路制御メッセージを送り、処理に追いつくまでの短い時間、通信を止めるようにホストに知らせます。このような状態はめったに起こりません。
経路変更要求
ルータは別のアドレスを使用して、フレームを送るようホストに指示することができます。 これは新しい通信が始まるときに普通に見られる動作です。
時間超過
ルータは、生存時間フィールドが1にまで減ったフレームを受取りました。 ルータはこのフィールドをゼロにし、フレームを捨てます。これは、フレームが捨てられたことを送信元に伝えるものです。
パラメータ障害
IP データグラムの構築においてエラーが生じました(おそらく通信ソフトウェアのバグでしょう)。 このメッセージを見たら、ベンダに知らせましょう。
タイムスタンプ
ICMP は通信経路の往復時間を調べるプログラムにも使われます。このようなフレームもめったに見られないでしょう。
アドレスマスク要求と応答
ICMP は他のマシンのアドレスマスク値を読むプログラムにも使われます。これも珍しいでしょう。

補足

RFC 792
ICMP の使うことのできるメッセージと応答について説明をしています。 フレームのヘッダ構成や動作についてです。
RFC 1349
様々な IP サービスタイプに対する ICMP の応答動作について説明しています。