ICMPヘッダのフォーマットとサイズの基本-ICMP(Internet Control Message Protocol)は、ネットワークの通信で利用するOSI参照モデルのレイヤ3に該当するネットワーク層のプロトコル。ここではICMPヘッダのフォーマットとサイズについて基本を説明しています。
ICMPの特徴
・IP通信の通信エラーに関する内容を通知する機能をもつ
・32bitで構成されるIPアドレスを使用する
・pingやtracerouteなどのコマンドで使われる
呼び方
ICMPヘッダを付与したデータの通信単位を「ICMPパケット」と呼ぶ。

ネットワーク層
トランスポート層からネットワーク層に渡されたデータは使用するプロトコルにICMPを選択することでICMPヘッダを付与します。同じネットワーク層のIPヘッダも同時に追加されICMPは上位層のように扱われる。

ICMPヘッダのフォーマット
ICMPヘッダの基本フォーマット
ICMPヘッダの内容はIP通信のさまざまなタイプの通知メッセージを情報として格納できるようになっている。

タイプ | 番号で通知メッセージの種類を示す。 たとえば、Pingコマンドで使われるエコー応答(0)やエコー要求(8)など。 詳しくは「IANA ICMP Parameters」参照。 |
コード | コード番号でタイプの通知メッセージの補足情報を示す。 |
チェックサム | ICMPヘッダとデータ含む全体のチェックサム結果を格納。 |
タイプの異なるICMPヘッダのフォーマット
ICMPヘッダの基本フォーマットは「タイプ」によってはフォーマットが変わる。たとえばPingなどで使用するエコー要求・エコー応答のフォーマットでは以下のようになる。
例)ICMPエコー要求・エコー応答

追加されたIDとシーケンス番号には、エコー要求時に入れた値と同じ値を応答時に返すことでどの要求に対する応答かを判別するために利用される。
そのほかのタイプのフォーマットについては以下のRFCを参照。
RFC792 INTERNET CONTROL MESSAGE PROTOCOL
ICMPヘッダのサイズ
ICMPヘッダのサイズ
ICMPヘッダの基本サイズを以下に示す。

ICMPヘッダサイズ [エコー要求・エコー応答]
例としてICMPエコー要求・エコー応答の場合のサイズを以下に示す。

・タイプ
8bit
・コード
8bit
・チェックサム
16bit
・ID
8bit
・シーケンス番号
16bit
コメント