主にネットワークのトラブルシューティングの際に、ping や traceroute で利用します。
ICMP のフォーマット
ICMP のフォーマットは以下のとおりです。
フィールド | bit 数 | フィールドの説明 |
---|---|---|
タイプ | 8 bit | ICMPメッセージの機能タイプ |
コード | 8 bit | ICMPメッセージの機能コード |
チェックサム | 16 bit | エラーがないかことをチェック |
データ | 可変長 | タイプに応じてデータを入れる |
ICMP のタイプ一覧
ICMP のタイプは、通知する「エラー」や「状態」の種類を示します。
よく利用するタイプは、以下の通りです。
タイプ | 内容 | 意味 |
---|---|---|
0 | Echo Reply | エコーの応答 |
3 | Destination Unreachable | 宛先に到達できない |
5 | Redirect | 経路変更の通知 |
8 | Echo | エコーの要求 |
9 | Router Advertisement | ルーターの広告 |
10 | Router Soliciation | ルーターの要請 |
11 | Time Exceeded | 時間超過 |
Echo (Type 8) を送り、Echo Reply (Type 0) が返ってくれば到達可能と言えます。
ping は、この ICMP タイプを利用しています。
到達できない理由は、ICMP のコードに記載されています。
コード | メッセージ | メッセージの意味 |
---|---|---|
0 | Net Unrechable | 宛先ネットワークに到達できない |
1 | Host Unreachable | 宛先ホストに到達できない |
2 | Protocol Unreachable | プロトコルに到達できない |
3 | Port Unreachable | ポートに到達できない |
4 | Fragment Needed and DF was Set | パケットの分割が必要だが、 分割禁止フラグが設定されている |
5 | Source Route Failed | ソースルーティングが失敗 |
6 | Destination Network Unknown | 宛先ネットワークが不明 |
7 | Destination Host Unkown | 宛先ホストが不明 |
8 | Source Host Isolated | 送信元ホストが孤立している |
9 | Communication with Destination Network is Administratively Prohibited | 宛先ネットワークとの通信が、 管理上禁止されている |
10 | Communication with Destinaltion Host is Administratively Prohibited | 宛先ホストとの通信が、 管理上禁止されている |
11 | Destination Network Unreachable for ToS | 指定された優先制御値では、 宛先ネットワークに到達できない |
12 | Destination Host Unreachable for ToS | 指定された優先制御値では、 宛先ホストに到達できない |
13 | Communication Administratively Prohibited | 通信が管理上が禁止されている |
14 | Host Precedence Violation | ホストの優先度が違反している |
15 | Precedence cutoff in effect | 優先度によるカットオフが有効 |
ルーターがホストより最適な経路を持っている場合に、ホストに対して送信します。
通知の詳細は、ICMP のコードによって表現します。
コード | メッセージ | メッセージの意味 |
---|---|---|
0 | Redirect Datagram for the Network | ネットワークへ最適経路を通知 |
1 | Redirect Datagram for the Host | ホストへ最適経路を通知 |
2 | Redirect Datagram for the ToS and Network | 優先制御時に、ネットワークへ最適経路を通知 |
3 | Redirect Datagram for the ToS and Host | 優先制御時に、ホストへ最適経路を通知 |
ホストが Router Solicitations (Type 10) を送り、ルーターが Router Advertisements (Type 9) を返すことで、ルーターの IP アドレスを知ることができます。
Router Advertisement (Type 9) の広告の種類は、ICMP のコードで表現します。
コード | メッセージ | メッセージの意味 |
---|---|---|
0 | Normal Router Advertisement | 通常のルーター広告 |
16 | Does not route common traffic | 一般的なトラフィックをルーティングしない |
IP パケットには TTL という、ルーターを通過する度に値が1ずつ減るフィールドがあります。
この値が 0 になった時、IP パケットは破棄され、ICMP は Time Exceeded を通知します。
TTL は、経路に無限ループが存在する際に、ネットワーク上に IP パケットが回り続けることを防ぐために利用します。
また、traceroute コマンドでは、TTL を利用してネットワークの経路を表示します。
(TTL が 0 になり、Time Exceeded を返したルーターの IP アドレスを順に表示)
ICMP のタイプとコードの一覧
最後に ICMP のタイプとコードの一覧をまとめます。
タイプ | コード | メッセージ | ICMP の意味 |
---|---|---|---|
0 - Echo Reply | 0 | メッセージ無し | エコー応答 |
3 - Destination Unreachable | 0 | Net Unrechable | 宛先ネットワークに到達できない |
1 | Host Unreachable | 宛先ホストに到達できない | |
2 | Protocol Unreachable | プロトコルに到達できない | |
3 | Port Unreachable | ポートに到達できない | |
4 | Fragment Needed and DF was Set | パケットの分割が必要だが、分割禁止フラグが設定されている | |
5 | Source Route Failed | ソースルーティングが失敗 | |
6 | Destination Network Unknown | 宛先ネットワークが不明 | |
7 | Destination Host Unkown | 宛先ホストが不明 | |
8 | Source Host Isolated | 送信元ホストが孤立している | |
9 | Communication with Destination Network is Administratively Prohibited | 宛先ネットワークとの通信が、管理上禁止されている | |
10 | Communication with Destinaltion Host is Administratively Prohibited | 宛先ホストとの通信が、管理上禁止されている | |
11 | Destination Network Unreachable for ToS | 指定された優先制御値では、宛先ネットワークに到達できない | |
12 | Destination Host Unreachable for ToS | 指定された優先制御値では、宛先ホストに到達できない | |
13 | Communication Administratively Prohibited | 通信が管理上が禁止されている | |
14 | Host Precedence Violation | ホストの優先度が違反している | |
15 | Precedence cutoff in effect | 優先度によるカットオフが有効 | |
5 - Redirect | 0 | Redirect Datagram for the Network | ネットワークの最適経路を通知 |
1 | Redirect Datagram for the Host | ホストの最適経路を通知 | |
2 | Redirect Datagram for the ToS and Network | 優先制御時に、ネットワークの最適経路を通知 | |
3 | Redirect Datagram for the ToS and Host | 優先制御時に、ホストの最適経路を通知 | |
8 - Echo | 0 | メッセージ無し | エコー要求 |
9 - Router Advertisement | 0 | Normal Router Advertisement | 通常のルーター広告 |
16 | Does not route common traffic | 一般的なトラフィックをルーティングしない | |
10 - Router Soliciation | 0 | メッセージ無し | ルータ要請 |
11 - Time Exceeded | 0 | Time to Live exceeded in Transit | 転送中に TTL の値が超過 |
1 | Fragment Reassembly Time Exceeded | 分割パケットを組み立て中に時間超過 |
ICMP のポート番号
以下のとおり ICMP はインターネット層なので、ポートという概念はありません。
ポートは、上位層にあるトランスポート層の概念です。