IPパケット転送でエラーがあった時の通知用などで、使われるプロトコルが
ICMP(Internet Control Message Protocol:インターネット制御メッセージプロトコル)です。
例えばルータのなどネットワーク機器は、
受信したパケットが壊れたと判断される場合や、間違った送り先と判断される場合は、
その異常パケットを捨てます。
そしてこの時、送り元へ知らせる必要がありますが、この時に使う規則が
このICMPで決められています。<(ICMPメッセージは、RFC792で規定)
以下にICMPパケットの構造を示します。
この構造の直前にIPパケットのヘッダ部分があり、
この通信先や通信元の情報があります。
つまり、IPパケットのデータ部として、このICMP構造が続くわけです。
このType認識コードの意味を次の表で示します。
Type | 意味 | meaning |
---|---|---|
0 | エコー応答 | echo reply |
3 | あて先port到達不能 | destination port unreachable |
4 | 送信元抑制 | source quench |
5 | 経路変更要求 | redirect |
8 | エコー要求 | echo request |
11 | 時間超過 | time exceeded |
12 | パラメータ異常 | parameter problem |
13 | タイムスタンプ要求 | timestamp request |
14 | タイムスタンプ応答 | timestamp reply |
15 | 情報要求 | information request |
16 | 情報応答 | information reply |
17 | アドレス・マスク要求 | address mask request |
18 | アドレス・マスク応答 | address mask reply |
ICMPは、IP層のプロトコルで、pingコマンドなどはこれを利用しています。
pingコマンドで使われるエコー要求と応答の構造を示します。
このICMPエコーの送信元が送ったデータ・パケットが相手のノードに届くと、
そのデータがそっくりそのまま元のノードへと送り返します。
[ID]と[シーケンス番号]は、
このメッセージを利用するアプリケーションが自由に利用できるフィールドです。
通常は、エコー・メッセージを送信する側において、
送信したパケットを一意に識別できるような数値をセットします。
エコー・メッセージでは、これらのフィールドの内容もそのまま変更せずに
パケットを送り返してきます。
[echoデータ]のフィールドは、ICMPエコー・メッセージを
利用するアプリケーションが自由に使えます。
一般的には、バイナリ・データ(0x00〜0xffまでを順番に1ずつ変更したもの)を
設定して送り、応答パケットから、
応答時間などを測定したりする通信状況の解析に使われます。