目 次
目 次/関連項目

2.2 ICMPメッセージタイプ

 そのメッセージが何を意味するかを表すタイプ番号が決められている。以下に主なタイプごとのメッセージを示す。

表2.2.1:ICMPメッセージタイプ
Type
メッセージ
0
Echo Reply (エコー応答)
3

Destination Unreachable (宛先到達不能)

4
Source Quench (発信抑制)
5
Redirect (ルート変更)
8
Echo Request (エコー要求)
11
Time Exceeded for Datagram (パケットの時間超過)
12
Parameter Problem on Datagram (パケットのパラメータ異常)
13
Timestamp Request (タイムスタンプ要求)
14
Timestamp Reply (タイムスタンプ応答)
17
Address Mask Request (アドレスマスク要求)
18
Address Mask Reply (アドレスマスク応答)

 また、全てのメッセージタイプは以下のサイトで参照できる。
 http://www.iana.org/assignments/icmp-parameters

2.2.1 宛先到達不能メッセージ

 宛先到達不能メッセージのフォーマットを以下に示す。
0 8 16 24
31
Type
Code
Checksum
Unused
Internet Header
+
64 bits of Original Data Datagram

Type :
  3

Code :
  表2.2.3参照

Checksum :
  ICMPパケットの中身が正しいかどうかを表す値

unused :
  未使用(必ず0)

Internet Haeder + 64 bits of original Data Datagram :
  元のIPヘッダとIPデータの最初の64ビット

図2.2.2:宛先到達不能メッセージのフォーマット


 送信元ホストから配送されたIPパケットが宛先ホストに届かなかった場合にルータまたは宛先ホストからこのメッセージが送られる。パケットが相手先に到達しない状況として次のような事がある。
  • ルータが受け取ったパケット内の宛先IPアドレスが不明、またはそのIPアドレスのホストに接続不可能なとき(ルータから送られる)。
     
  • IPヘッダのフラグメントオフセットがフラグメントを許可していない状況で、フラグメントしなければならなくなったとき。(ルータから送られる)
     
  • IPパケット内のプロトコルが宛先ホストで使用不可能なとき、またはポートが利用できないとき。(宛先ホストから送られる)
 このメッセージはさらにどのような原因で配送する事ができなかったのかを示すようになっている。その内容はメッセージ内のCodeフィールドの内容により分かる。

表2.2.3:宛先到達不能メッセージのcodeフィールド
Code
到達不能の原因
1
Network Unreachable
(ネットワークに到達不能)
2
Host Unreachable
(ホストに到達不能)
3
Protocol Unreachable
(プロトコルに到達不能)
4
Fragmentation Needed and Don't Fragment 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 Destination Host is Administratively Prohibited
(宛先ホストとの通信が禁止されている)
11
Destination Network Unreachable for Type of Service
(指定のサービスタイプでは宛先ネットワークに到達不能)
12
Destination Host Unreachable for Type of Service
(指定のサービスタイプでは宛先ホストに到達不能)


2.2.2 時間超過メッセージ

 時間超過メッセージのフォーマットを以下に示す。

0 8 16 24
Type
Code
Checksum
Unused
Internet Header
+
64 bits of Original Data Datagram

Type :
  11

Code :
  表2.2.6参照

Checksum :
  ICMPパケットの中身が正しいかどうかを表す値

Unused :
  未使用(必ず0)

Internet Haeder + 64 bits of original Data Datagram :
  元のIPヘッダとIPデータの最初の64ビット

図2.2.4:時間超過メッセージのフォーマット

 次のようなときに時間超過メッセージが送信される。

  • IPヘッダのTTLが0になったとき(図2.2.5)。

  • 分割されたパケットを宛先ホストが最初に受け取ってから一定時間以内に全てのパケットを再構築できなかったとき。
 前者はルータから、後者は宛先ホストから送られる。

図2.2.5:時間超過メッセージの仕組み


表2.2.6:時間超過メッセージのcodeフィールド
code 番号
時間超過の原因
0
time to live exceeded in transit
(生存時間終了)
1
fragment reassembly time exceeded
(リアセンブリ時間終了)


2.2.3 パラメータ問題メッセージ

 パラメータ問題メッセージのフォーマットを以下に示す。

0 8 16 24
Type
Code
Checksum
Pointer
Unused
Internet Header
+
64 bits of Original Data Datagram

Type :
  12

Code :
  0

Checksum :
  ICMPパケットの中身が正しいかどうかを表す値

Pointer :
  エラーのある位置を示す

unused :
  未使用(必ず0)

Internet Haeder + 64 bits of original Data Datagram :
  元のIPヘッダとIPデータの最初の64ビット

図2.2.7:パラメータ問題メッセージのフォーマット

 IPヘッダに問題があるときにこのメッセージが送られる。エラーが検知された場合、pointerフィールドはエラーがあるオクテットを示す。例えば1ならTOSに異常があることを示す。また、20のときはオプションに問題があることを示す。



2.2.4 発信抑制メッセージ

 発信抑制メッセージのフォーマットを以下に示す。

0 8 16 24
Type
Code
Checksum
Unused
Internet Header
+
64 bits of Original Data Datagram

Type :
  4

Code :
  0

Checksum :
  ICMPパケットの中身が正しいかどうかを表す値

unused :
  未使用(必ず0)

Internet Haeder + 64 bits of original Data Datagram :
  元のIPヘッダとIPデータの最初の64ビット

図2.2.8:発信抑制メッセージのフォーマット

 ルータがバッファを処理しきれないほどの速さでIPパケットが送り込まれたときに発信抑制メッセージが送信される。送信元ホストはこのメッセージを受け取るとパケットを送る速度を落とす。そして再びこのメッセージを受け取るまで少しずつ速度を上げる。


2.2.5 ルート変更メッセージ

 ルート変更メッセージのフォーマットを以下に示す。

0 8 16 24
Type
Code
Checksum
Gateway Internet Address
Internet Header
+
64 bits of Original Data Datagram

Type :
  5

Code :
  表2.2.10参照

Checksum :
  ICMPパケットの中身が正しいかどうかを表す値

Gateway Internet Address
  ルータのIPアドレス

Internet Haeder + 64 bits of original Data Datagram :
  元のIPヘッダとIPデータの最初の64ビット

図2.2.9:ルート変更メッセージのフォーマット

表2.2.10:ルート変更メッセージのcodeフィールド
code 番号
ルート変更の原因
0
Redirect datagrams for the Network
(ネットワークに関するルート変更)
1
Redirect datagrams for the Host
(ホストに関するルート変更)
2
Redirect datagrams for the Type of Service and Network
(TOS とネットワークに関するルート変更)
3
Redirect datagrams for the Type of Service and Host
(TOS とホストに関するルート変更)


 ルータは互いに経路情報を交換し、常に最適なルーティングテーブルを作成している。新しいルータがネットワークに追加されるとすぐに他のルータにその情報が伝達される。しかし、ホストにはその事実は知らされない。ルート変更メッセージは、より短い経路でパケットを配送できることが分かったときにルータから送信元ホストへ送られるメッセージである。より短い経路で送るときにホストがどのルータに送信したらいいかの情報はこのメッセージのGateway Internet Addressフィールドに示される。

2.2.6 エコー要求メッセージ / エコー応答メッセージ

 エコー要求メッセージ/エコー応答メッセージのフォーマットを以下に示す。

0 8 16 24
Type
Code
Checksum
Identifier
Sequence Number
Data ....

Type :
  0 or 8

Code :
  0

Checksum :
  ICMPパケットの中身が正しいかどうかを表す値

Identifier
  要求と応答で内容が一致しているかを確かめるために使用する

Sequence Number
  要求と応答で内容が一致しているかを確かめるために使用する

Data :
  データ

図2.2.11:エコー要求/応答メッセージのフォーマット

 そのホストが接続可能な状態かどうかを調べるときに利用される。送信元はTypeフィールドを8にしてエコー要求メッセージを送る。宛先ホストがそのメッセージを受け取るとTypeフィールドを0に書き換えてエコー応答メッセージを送信元ホストへ返す(図2.2.12)。Identifier と Sequence Numberフィールドの値は変更しない。

図2.2.12:エコー要求/応答メッセージの仕組み



2.2.7 タイムスタンプ要求メッセージ/
   タイムスタンプ応答メッセージ

 タイムスタンプ要求メッセージ/タイムスタンプ応答メッセージのフォーマットを以下に示す。

0 8 16 24
Type
Code
Checksum
Identifier
Sequence Number
Originate Timestamp
Receive Timestamp
Transmit Timestamp

Type :
  13 or 14

Code :
  0

Checksum :
  ICMPパケットの中身が正しいかどうかを表す値

Identifier
  要求と応答で内容が一致しているかを確かめるために使用する

Sequence Number
  要求と応答で内容が一致しているかを確かめるために使用する

Originate Timestamp :
  送信元ホストがパケットを送信した時間

Receive Timestamp :
  宛先ホストがパケットを受信した時間

Transmit Timestamp :
  宛先ホストがパケットを返信した時間

図2.2.13:タイムスタンプ要求/応答メッセージのフォーマット

 送信元ホストからから宛先ホストへパケットを送る際にかかる時間を調べるときにこのメッセージが利用される。送信元ホストは Typeフィールドを13に指定し、Originate Timestampに送信時の時間を書き込む。宛先ホストがこのメッセージを受け取ったら Typeフィールドを14に指定し、Receive Timestampフィールドに受け取った時間、Transmit Timestampフィールドに応答メッセージを送信した時間を書き込んで送信元ホストへ返す。
なお、この時に書き込む時間はGMT(グリニッジ標準時)午前0時からのミリ秒で表す。


2.2.8 アドレスマスク要求メッセージ/
   アドレスマスク応答メッセージ

 アドレスマスク要求メッセージ/アドレスマスク応答メッセージのフォーマットを以下に示す。
0 8 16 24
Type
Code
Checksum
Identifier
Sequence Number
Address Mask

Type :
  17 or 18

Code :
  0

Checksum :
  ICMPパケットの中身が正しいかどうかを表す値

Identifier
  要求と応答で内容が一致しているかを確かめるために使用する

Sequence Number
  要求と応答で内容が一致しているかを確かめるために使用する

Address Mask
  サブネットマスクの値

図2.2.14:アドレスマスク要求/応答メッセージのフォーマット

 サブネットマスクを調べたいときに、そのホストやルータに対してアドレスマスク要求メッセージを送信する。要求されたホストやルータはアドレスマスク応答メッセージを送信元へ返信する。このときサブネットマスクの値はAddress Mask フィールドに格納される。