さて今回からICMPヘッダについて見ていきましょう。
前にも説明したとおり、ICMPはOSI参照モデルの第3層(ネットワーク層)
で動作するプロトコルです。
ヘッダが付加される順番は以下の図のように、
Ethernetヘッダ、IPヘッダ、ICMPヘッダという順番になります。
![]()
ICMPヘッダの中身は以下のようになっています。

前から4バイトまでを「ICMP共通ヘッダ」といい、
すべてのICMPタイプ共通のヘッダになります。
そして最後の「各タイプごとのヘッダ」は、
ICMPタイプごとに個別のヘッダ情報が付与されます。
ICMP共通ヘッダの説明は以下の通りです。
○タイプ:1バイト
ICMPがどのタイプなのかをここで定義しています。
主要なICMPのタイプについては以下のようなものがあります。
タイプコード
| 内容 |
| 0 | エコー応答(Echo Reply) |
| 3 | 到達不能(Destination Unreachable) |
| 4 | 始点抑制(Souce Quench) |
| 5 | リダイレクト(Redirect) |
| 8 | エコー要求(Echo Request) |
| 9 | ルータ通知(Router Advertisement) |
| 10 | ルータ選択(Router Selection) |
| 11 | 時間超過(Time Exceeded) |
| 17 | アドレスマスク要求(Address Mask Request) |
| 18 | アドレスマスク応答(Address Mask Reply) |
※さらに詳細な情報は、下記を参照してください
http://www.iana.org/assignments/icmp-parameters
Pingで使用するタイプコードは以下の2つになります。
○コード(1バイト)
コードフィールドは、ICMPのタイプによって定義が異なります。
例えば、Pingで使用する「タイプ 8 エコー要求(Echo Request)」や、
「タイプ 0 エコー応答(Echo Reply)」の場合、このフィールドには
「00」がセットされて、特に使用されません。
このフィールドが活躍するのは、
「タイプ 3 到達不能(Destination Unreachable)」
の場合に威力を発揮します。
「タイプ 3 到達不能(Destination Unreachable)」とはその名の通り、
宛先に到達不能の場合に使用されるタイプコードです。
そしてこのコードフィールドで、なぜ到達できないのか、その理由を表す
値がセットされます。
以下が「タイプ 3 到達不能(Destination Unreachable)」のコード一覧です。
コード | 定義 |
| 0 | Network Unreachable 宛先ネットワークに到達できない |
| 1 | Host Unreachable 宛先ホストに到達できない |
| 2 | Protocol Unreachable 宛先ホストがプロトコルを使用できない |
| 3 | Port Unreachable 宛先ホストがポートを使用できない |
| 4 | Fragmentation blocked DF(Don't Fragment)ビットにより分割禁止で通信出来ない |
| 5 | Source Route Failed ソースルートオプションで指定された経路で通信できない |
| 6 | Target Network Unknown ルーティングテーブルに宛先ネットワークがない |
| 7 | Target Host Unknown ルーティングテーブルに宛先ホストがない |
| 8 | Source Host Isolated 宛先ホストが通信不能 |
| 9 | Target Network Prohibited 宛先ネットワークがアクセスを妨げている |
| 10 | Target Host Prohibited 宛先ホストがアクセスを妨げている |
| 11 | Destination network nrechable for Type of Service 指定したTOS(Type Of Service)ではネットワークに到達不可 |
| 12 | Destination host nrechable for Type of Service 指定したTOS(Type Of Service)ではホストに到達不可 |
| 13 | Communication Administratively Prohibited 通信が拒否されている |
| 14 | Host Preceedence Violation 要求したTOS(Type Of Service)では中継不可 |
| 15 | Precedence cutoff in effect 要求したTOS(Type Of Service)では中継不可 |
その他にも「タイプ 11 :時間超過(Time Exceeded)」の場合は、
IPヘッダのTTL(Time To Live)が0になった場合に「00」をセットしたり、
フラグメントされたデータがすべて到達する前にタイムアウトした場合に、
「01」をセットします。
このようにコードフィールドはタイプによって
それぞれ意味が違ってきます。
○チェックサム(2バイト)
チェックサムフィールドではエラーチェックを行うための
チェックサムとして定義されています。
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓