ICMP

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ずつ変更したもの)を 設定して送り、応答パケットから、 応答時間などを測定したりする通信状況の解析に使われます。