ICMP プロトコルとは。Type と Code の一覧を紹介

ICMP(Internet Control Message Protocol)ICMP とは、IP プロトコルの「エラー」や「状態」を通知するプロトコルです。

主にネットワークのトラブルシューティングの際に、pingtraceroute で利用します。

スポンサーリンク

ICMP のフォーマット

ICMP のフォーマットは以下のとおりです。

フィールドbit 数フィールドの説明
タイプ8 bitICMPメッセージの機能タイプ
コード8 bitICMPメッセージの機能コード
チェックサム16 bitエラーがないかことをチェック
データ可変長タイプに応じてデータを入れる

ICMP のタイプ一覧

ICMP のタイプは、通知する「エラー」や「状態」の種類を示します。

よく利用するタイプは、以下の通りです。

タイプ内容意味
0Echo Replyエコーの応答
3Destination Unreachable宛先に到達できない
5Redirect経路変更の通知
8Echoエコーの要求
9Router Advertisementルーターの広告
10Router Soliciationルーターの要請
11Time Exceeded時間超過
タイプの一覧はこちら

Echo (Type 0, 8)

Echo (Type 0, 8) は、IP パケットが到達可能かどうかを確認するために利用します。

Echo (Type 8) を送り、Echo Reply (Type 0) が返ってくれば到達可能と言えます。

ping は、この ICMP タイプを利用しています。

Destination Unreachable (Type 3)

Destination Unreachable とは、宛先に到達できない場合に利用します。

到達できない理由は、ICMP のコードに記載されています。

コードメッセージメッセージの意味
0Net Unrechable宛先ネットワークに到達できない
1Host Unreachable宛先ホストに到達できない
2Protocol Unreachableプロトコルに到達できない
3Port Unreachableポートに到達できない
4Fragment Needed and DF was Setパケットの分割が必要だが、
分割禁止フラグが設定されている
5Source Route Failedソースルーティングが失敗
6Destination Network Unknown宛先ネットワークが不明
7Destination Host Unkown宛先ホストが不明
8Source Host Isolated送信元ホストが孤立している
9Communication with Destination
Network is Administratively Prohibited
宛先ネットワークとの通信が、
管理上禁止されている
10Communication with Destinaltion
Host is Administratively Prohibited
宛先ホストとの通信が、
管理上禁止されている
11Destination Network Unreachable for ToS指定された優先制御値では、
宛先ネットワークに到達できない
12Destination Host Unreachable for ToS指定された優先制御値では、
宛先ホストに到達できない
13Communication Administratively Prohibited通信が管理上が禁止されている
14Host Precedence Violationホストの優先度が違反している
15Precedence cutoff in effect優先度によるカットオフが有効

Redirect (Type 5)

Redirect は、経路変更の通知に利用します。

ルーターがホストより最適な経路を持っている場合に、ホストに対して送信します。

通知の詳細は、ICMP のコードによって表現します。

コードメッセージメッセージの意味
0Redirect Datagram for the Networkネットワークへ最適経路を通知
1Redirect Datagram for the Hostホストへ最適経路を通知
2Redirect Datagram for the ToS and Network優先制御時に、ネットワークへ最適経路を通知
3Redirect Datagram for the ToS and Host優先制御時に、ホストへ最適経路を通知

Router Discovery (Type 9, 10)

Router Discovery は、自分のネットワークにあるルーターを探索する際に利用します。

ホストが Router Solicitations (Type 10) を送り、ルーターが Router Advertisements (Type 9) を返すことで、ルーターの IP アドレスを知ることができます。

通常はルーターが Router Advertisements を定期的に送っているので、ホストはそれをリッスンすればいい
ルーターからの次の定期的な広告をホストが待てない場合、Router Solicitations を使う (詳細)

Router Advertisement (Type 9) の広告の種類は、ICMP のコードで表現します。

コードメッセージメッセージの意味
0Normal Router Advertisement通常のルーター広告
16Does not route common traffic一般的なトラフィックをルーティングしない

Time Exceeded (Type 11)

Time Exceeded (Type 11) は、時間内にパケットが送信できなかった際に利用します。

IP パケットには TTL という、ルーターを通過する度に値が1ずつ減るフィールドがあります。

この値が 0 になった時、IP パケットは破棄され、ICMP は Time Exceeded を通知します。

ルーターの設定ミスなどで無限ループが発生すると、IP パケットネットワークを逼迫し続けてしまう

TTL は、経路に無限ループが存在する際に、ネットワーク上に IP パケットが回り続けることを防ぐために利用します。

また、traceroute コマンドでは、TTL を利用してネットワークの経路を表示します。
(TTL が 0 になり、Time Exceeded を返したルーターの IP アドレスを順に表示)

ICMP のタイプとコードの一覧

最後に ICMP のタイプとコードの一覧をまとめます。

タイプコードメッセージICMP の意味
0 - Echo Reply0メッセージ無しエコー応答
3 - Destination
Unreachable
0Net Unrechable宛先ネットワークに到達できない
1Host Unreachable宛先ホストに到達できない
2Protocol Unreachableプロトコルに到達できない
3Port Unreachableポートに到達できない
4Fragment Needed and DF was Setパケットの分割が必要だが、分割禁止フラグが設定されている
5Source Route Failedソースルーティングが失敗
6Destination Network Unknown宛先ネットワークが不明
7Destination Host Unkown宛先ホストが不明
8Source Host Isolated送信元ホストが孤立している
9Communication with Destination
Network is Administratively Prohibited
宛先ネットワークとの通信が、管理上禁止されている
10Communication with Destinaltion
Host is Administratively Prohibited
宛先ホストとの通信が、管理上禁止されている
11Destination Network Unreachable for ToS指定された優先制御値では、宛先ネットワークに到達できない
12Destination Host Unreachable for ToS指定された優先制御値では、宛先ホストに到達できない
13Communication Administratively Prohibited通信が管理上が禁止されている
14Host Precedence Violationホストの優先度が違反している
15Precedence cutoff in effect優先度によるカットオフが有効
5 - Redirect0Redirect Datagram for the Networkネットワークの最適経路を通知
1Redirect Datagram for the Hostホストの最適経路を通知
2Redirect Datagram for the ToS and Network優先制御時に、ネットワークの最適経路を通知
3Redirect Datagram for the ToS and Host優先制御時に、ホストの最適経路を通知
8 - Echo0メッセージ無しエコー要求
9 - Router Advertisement0Normal Router Advertisement通常のルーター広告
16Does not route common traffic一般的なトラフィックをルーティングしない
10 - Router Soliciation0メッセージ無しルータ要請
11 - Time Exceeded0Time to Live exceeded in Transit転送中に TTL の値が超過
1Fragment Reassembly Time Exceeded分割パケットを組み立て中に時間超過
https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml
スポンサーリンク

ICMP のポート番号

以下のとおり ICMP はインターネット層なので、ポートという概念はありません。

ポートは、上位層にあるトランスポート層の概念です。