ICMPプロトコル

IPは、宛先にパケットが問題なく配送されたかどうかの確認や、再送の制御などは行いません。つまりそれは、IPはルーティングはしてくれるが、宛先までちゃんと届いたかどうかの確認まではしてくれないということです。そのため、伝送経路上に障害が起こったり、サーバーが正しく受信できていなかったとしても、それを送信元に的確に伝えることができません。

そこで、IPルーティングにかかわるエラー通知や診断などの役割を担当しているのがICMP(Internet Control Messae Protocol)です。
ICMPは、IPと同じインターネット層に位置します。

ICMPの役割

ICMPの役割は、「診断」と「通知」の2つに分類できます。「診断」は、送信元と宛先ホスト間の、IPの接続性の診断などを行います。「通知」はルーティングにかかわるエラーや情報を送信元ホストに通知します。

つまり、IPの通信ができるのか確かめたり、ネットワーク上で発生しているエラーを通知するといった機能を提供します。

ICMPパケットの構造

ICMPパケットの構造は以下のようになっています。ICMPメッセージはIPパケットのデータ部分に入っています。
ICMPパケットの構造

上図のとおり、ICMPメッセージは、①タイプ、②コード、③チェックサム、④データの4つで構成されています。この中で重要なのは、タイプとコードになります。

ICMPメッセージの種類はタイプによって決まります。例えば、タイプ0は「エコー応答」、3は「宛先到達不能」、8は「エコー要求」を示します。
タイプ5の「経路変更」は、ネットワーク内に複数のルーターがある場合に、最適経路となるルーターを通知するメッセージです。
タイプ11の「時間超過」は、TTLの値が0になるなどしてパケットが破棄された場合に使われます。

タイプで示した内容のさらに細かい情報は「コード」に示されています。

以下に代表的なタイプとコードを示します。

タイプ コード 内容
0 エコー応答 0 エコー応答
3 宛先到達不能 0 宛先ネットワークに到達できない
1 宛先ホストに到達できない
2 プロトコルに到達できない
3 ポートに到達できない
4 パケットの分割が必要だが、分割を禁止する設定になっているため不可能
5 ソース・ルートが不明
6 宛先ネットワークが不明
7 宛先ホストが不明
8 ソース・ホストが孤立(現在は使われていない)
9 宛先ネットワークとの通信が管理上禁止されている
10 宛先ホストとの通信が管理上禁止されている
11 指定された優先制御の値では宛先ネットワークに到達できない
12 指定された優先制御の値では宛先ホストに到達できない
13 管理上、通信が禁止されている
14 ホストの優先度が違反している
15 有線制御が事実上切断された
5 経路変更 0 ネットワークへの経路変更を通知
1 ホストへの経路変更を通知
2 優先制御時に、ネットワークへの経路変更を通知
3 優先制御時に、ホストへの経路変更を通知
8 エコー要求 0 エコー要求
11 時間経過 0 転送中にTTLの値が超過した
1 分割されたパケットを組み立て中に時間が経過した

次のページでは、ICMPを実装した代表的なコマンドについて見ていきます。