さて今回から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バイト)
チェックサムフィールドではエラーチェックを行うための
チェックサムとして定義されています。
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓