ICMPヘッダ

ICMPヘッダ

さて今回からICMPヘッダについて見ていきましょう。

前にも説明したとおり、ICMPはOSI参照モデルの第3層(ネットワーク層)
で動作するプロトコルです。

ヘッダが付加される順番は以下の図のように、
Ethernetヘッダ、IPヘッダ、ICMPヘッダという順番になります。

 

icmp

ICMPヘッダの中身は以下のようになっています。

 

icmp

前から4バイトまでを「ICMP共通ヘッダ」といい、
すべての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つになります。

  • タイプ0:エコー応答(Echo Reply)
  • タイプ8:エコー要求(Echo Request)

 

○コード(1バイト)
コードフィールドは、ICMPのタイプによって定義が異なります。
例えば、Pingで使用する「タイプ 8 エコー要求(Echo Request)」や、
「タイプ 0 エコー応答(Echo Reply)」の場合、このフィールドには
「00」がセットされて、特に使用されません。

このフィールドが活躍するのは、

「タイプ 3 到達不能(Destination Unreachable)」

の場合に威力を発揮します。

「タイプ 3 到達不能(Destination Unreachable)」とはその名の通り、
宛先に到達不能の場合に使用されるタイプコードです。

そしてこのコードフィールドで、なぜ到達できないのか、その理由を表す
値がセットされます。

以下が「タイプ 3 到達不能(Destination Unreachable)」のコード一覧です。

コード
定義
0Network Unreachable
宛先ネットワークに到達できない
1Host Unreachable
宛先ホストに到達できない
2Protocol Unreachable
宛先ホストがプロトコルを使用できない
3Port Unreachable
宛先ホストがポートを使用できない
4Fragmentation blocked
DF(Don't Fragment)ビットにより分割禁止で通信出来ない
5Source Route Failed
ソースルートオプションで指定された経路で通信できない
6Target Network Unknown
ルーティングテーブルに宛先ネットワークがない
7Target Host Unknown
ルーティングテーブルに宛先ホストがない
8Source Host Isolated
宛先ホストが通信不能
9Target Network Prohibited
宛先ネットワークがアクセスを妨げている
10Target Host Prohibited
宛先ホストがアクセスを妨げている
11Destination network nrechable for Type of Service
指定したTOS(Type Of Service)ではネットワークに到達不可
12Destination host nrechable for Type of Service
指定したTOS(Type Of Service)ではホストに到達不可
13Communication Administratively Prohibited
通信が拒否されている
14Host Preceedence Violation
要求したTOS(Type Of Service)では中継不可
15Precedence cutoff in effect
要求したTOS(Type Of Service)では中継不可

 

その他にも「タイプ 11 :時間超過(Time Exceeded)」の場合は、
IPヘッダのTTL(Time To Live)が0になった場合に「00」をセットしたり、
フラグメントされたデータがすべて到達する前にタイムアウトした場合に、
「01」をセットします。

このようにコードフィールドはタイプによって
それぞれ意味が違ってきます。

○チェックサム(2バイト)
チェックサムフィールドではエラーチェックを行うための
チェックサムとして定義されています。

 

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: