「Internet Control Message Protocol」の版間の差分

何とか一通り埋めてみました
m (ロボットによる: 細部の編集)
(何とか一通り埋めてみました)
ICMPヘッダは以下のようにMACヘッダ・IPヘッダの後ろにある。
+-----------+----------+------------+----------
| [[媒体アクセス制御|MAC]]ヘッダ | [[Internet Protocol|IP]]ヘッダ | ICMPヘッダ | データ...
+-----------+----------+------------+----------
 
=== ICMPヘッダ ===
ICMPヘッダは一般的に以下の通りとなる。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 形式 | コード | [[チェックサム]] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| データ...
+-+-+-+-+-
 
{| class="wikitable" width="100%" style="text-align:center"
ICMP通知は基礎的なIPヘッダーを使用して送られる。
! style="width:3.125%;" | 0
データグラムのデータ部分の最初の[[8ビット|オクテット]]はICMP形式フィールドであり、
! style="width:3.125%;" | 1
このフィールドの値は、以降のICMP通知の書式を決定する。
! style="width:3.125%;" | 2
一部のフィールドは今後の拡張のために、「未使用」というラベルを貼られた上で0が入れられて送られるが、
! style="width:3.125%;" | 3
受信者はこれらのフィールドを(チェックサムに含めることを除いて)使用すべきではない。
! style="width:3.125%;" | 4
個々の型式記述の下で違った形で言及されない限り、インターネットヘッダーフィールドの値は以下の通りとなる。
! style="width:3.125%;" | 5
! style="width:3.125%;" | 6
! style="width:3.125%;" | 7
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ
| colspan="8" | コード
| colspan="16" | [[チェックサム]]
|-
| colspan="32" | データ<br /><br />
|}
 
データグラムのデータ部分の最初の[[8ビット|オクテット]]はICMPタイプフィールドであり、このフィールドの値は、以降のICMP通知の書式を決定する。「未使用」とラベル付けされているフィールドは今後の拡張のために予約されており、送信時には0を入れなければならないが、受信者はこれらのフィールドを(チェックサムに含めることを除いて)使用すべきではない。チェックサムは、ICMPヘッダの先頭から(すなわちタイプから)データの末尾までを対象に、16ビット単位で算出される。チェックサムフィールド自身も計算対象に入っているが、計算時には0として扱う。バイト数が奇数の場合は末尾に0のバイトがあるものとして計算する。
=== バージョン ===
4
 
また、いくつかのタイプでは、ICMP通知が発生する原因となった元データグラムの先頭部分をコピーしている。この種のタイプは以下の形式をとる。
=== IHL ===
32ビット[[ワード]]でのインターネット・ヘッダー長である。
 
{| class="wikitable" width="100%" style="text-align:center"
=== サービスの形式 ===
! style="width:3.125%;" | 0
0
! style="width:3.125%;" | 1
! style="width:3.125%;" | 2
! style="width:3.125%;" | 3
! style="width:3.125%;" | 4
! style="width:3.125%;" | 5
! style="width:3.125%;" | 6
! style="width:3.125%;" | 7
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ
| colspan="8" | コード
| colspan="16" | チェックサム
|-
| colspan="8" | 未使用
| colspan="8" | 長さ
| colspan="16" | 未使用
|-
| colspan="32" | IPヘッダ + 元データグラムの先頭部分<br /><br />
|}
 
RFC 792では長さフィールドは未使用で、元データグラムの先頭部分は64ビット(8オクテット)と決まっていた。その後RFC 1812およびRFC 4443において、MTUの最小限として保障されるサイズ(IPv4は576オクテット、IPv6は1280オクテット)まで拡張された。RFC 4884において長さフィールドが追加され、この可変長領域の長さを32ビット単位で記述することになった。
=== 合計長 ===
オクテット単位での、インターネット・ヘッダーとデータの合計の長さである。
識別、フラグ、断片化オフセット、断片化の中で使用される。
 
ICMP通知は基礎的なIPヘッダーを使用して送られる。個々の型式記述の下で違った形で言及されない限り、ICMPヘッダに先行するIPヘッダーフィールドの値は以下の通りとなる。
=== 存在回数 ===
存在保持回数ともいい、このフィールドはデータグラムが処理されるマシンを通る度に1ずつ減らされる。
そのためこのフィールドの値は少なくともこのデータグラムが通るゲートウェイの数と同じ大きさでなければならない。
 
;バージョン
=== プロトコル ===
:4
ICMP = 1
 
;IHL
=== ヘッダー・チェックサム ===
:32ビット[[ワード]]でのインターネット・ヘッダー長である。
 
;サービスの形式
=== 送信元アドレス ===
:0
ICMP通知を構成する[[ゲートウェイ]]か[[ホスト]]の[[IPアドレス|アドレス]]である。
違った形で言及されない限り、これは何れかのゲートウェイのアドレスとなる。
 
;合計長
=== 宛先アドレス ===
:オクテット単位での、インターネット・ヘッダーとデータの合計の長さである。識別、フラグ、断片化オフセット、断片化の中で使用される。
通知が送られるべきゲートウェイかホストのアドレスである。
 
;存在回数
:存在保持回数ともいい、このフィールドはデータグラムが処理されるマシンを通る度に1ずつ減らされる。そのためこのフィールドの値は少なくともこのデータグラムが通るゲートウェイの数と同じ大きさでなければならない。
 
;プロトコル
:ICMP = 1
 
;ヘッダー・チェックサム
 
;送信元アドレス
:ICMP通知を構成する[[ゲートウェイ]]か[[ホスト]]の[[IPアドレス|アドレス]]である。違った形で言及されない限り、これは何れかのゲートウェイのアドレスとなる。
 
;宛先アドレス
:通知が送られるべきゲートウェイかホストのアドレスである。
 
== 通知の種類 ==
以下の種類がある。
:(通知の後ろの()内は和訳の一例であり、一般的な言い方でない可能性がある)
*0 - Echo Reply Message(Message(エコー応答通知)
*3 - Destination Unreachable Message(Message(宛先到達不可能通知)
*4 - Source Quench Message(Message(送出抑制要求通知)
*5 - Redirect Message(Message(経路変更要求通知)
*8 - Echo Message(Message(エコー要求通知)
*9 - Router Advertisement Message(ルーター広告通知)
*11 - Time Exceeded Message(時間切れ通知)
*10 - Router Solicitation Message(ルーター請願通知)
*12 - Parameter Problem Message(不正引数通知)
*11 - Time Exceeded Message(時間切れ通知)
*13 - Timestamp Message(タイムスタンプ要求通知)
*12 - Parameter Problem Message(不正引数通知)
*14 - Timestamp Reply Message(タイムスタンプ応答通知)
*1513 - InformationTimestamp Request Message(情報Message(タイムスタンプ要求通知)
*1614 - InformationTimestamp Reply Message(情報Message(タイムスタンプ応答通知)
*15 - Information Request Message(情報要求通知)
*16 - Information Reply Message(情報応答通知)
*17 - Address Mask Request Message(アドレスマスク要求通知)
*18 - Address Mask Reply Message(アドレスマスク応答通知)
 
=== Echo Message(Message(エコー要求通知)・Echo Reply Message(Message(エコー応答通知) ===
{| class="wikitable" width="100%" style="text-align:center"
0 1 2 3
! style="width:3.125%;" | 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
! style="width:3.125%;" | 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! style="width:3.125%;" | 2
| 形式 | コード | チェックサム |
! style="width:3.125%;" | 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! style="width:3.125%;" | 4
| 識別子 | 連続数 |
! style="width:3.125%;" | 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! style="width:3.125%;" | 6
| データ...
! style="width:3.125%;" | 7
+-+-+-+-+-
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ(0または8)
| colspan="8" | コード(0)
| colspan="16" | チェックサム
|-
| colspan="16" | 識別子
| colspan="16" | シーケンス番号
|-
| colspan="32" | データ(可変長)<br /><br />
|}
 
エコー要求はタイプ=8で送信される。現在のところ定義されているコードは0だけである。識別子は送信元で適当な値を決める。要求したプロセスのプロセスIDなどが使われる。シーケンス番号は、同じ識別子で繰り返しエコー要求を送信した場合の通し番号である。
==== IPフィールドのアドレス ====
エコー要求通知の発信元のアドレスはエコー返答通知の宛先である。
エコー返答通知のフォームは、発信元と宛先アドレスが単に入れ替わり、
形式コードは0になり、チェックサムは再計算される。
 
宛先となっているホストがエコー要求を受け取ると、発信元と宛先のアドレスを入れ替え、タイプを0(エコー応答)に書き換え、チェックサムを再計算する。識別子とシーケンス番号はエコー要求で指定された値をそのまま返し、どの要求に対応する応答なのかを発信元で判別する際に使う。また、データフィールドも要求の内容をそのまま返す。
==== 形式 ====
*8はエコー要求
*0はエコー応答
 
ネットワーク診断用コマンド[[ping]]は、このEcho / Echo Replyメッセージを使っている。
==== コード ====
0
 
=== Destination Unreachable Message(宛先到達不可能通知) ===
==== チェックサム ====
{| class="wikitable" width="100%" style="text-align:center"
! style="width:3.125%;" | 0
! style="width:3.125%;" | 1
! style="width:3.125%;" | 2
! style="width:3.125%;" | 3
! style="width:3.125%;" | 4
! style="width:3.125%;" | 5
! style="width:3.125%;" | 6
! style="width:3.125%;" | 7
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ(3)
| colspan="8" | コード
| colspan="16" | チェックサム
|-
| colspan="8" | 未使用
| colspan="8" | 長さ
| colspan="16" | 次Hopの[[Maximum Transmission Unit|MTU]]
|-
| colspan="32" | IPヘッダ + 元データのデータグラムの先頭部分<br /><br />
|}
 
コードは状況に応じて以下の値をとる。
==== 識別子 ====
* 0 - ネットワーク到達不能
*コードが0の場合、即ち、識別子によってエコー要求とエコー応答が一致する場合、0にすることができる。
* 1 - ホスト到達不能
*コードが0の場合、即ち、連続数によってエコー要求とエコー応答が一致する場合、0にすることができる。
* 2 - プロトコル到達不能
* 3 - プロトコル到達不能
* 4 - 断片化が必要だがDFフラグが設定されている
* 5 - 送信元ルーティング失敗
 
RFC 1122において、以下のコードが追加されている。
=== Destination Unreachable Message(宛先到達不可能通知) ===
* 6 - 宛先ネットワーク不明
* 7 - 宛先ホスト不明
* 8 - 発信元ホストが孤立している
* 9 - 宛先ネットワークとの通信が管理上禁止
* 10 - 宛先ホストとの通信が管理上禁止
* 11 - [[Type of Service]]に対してネットワーク到達不能
* 12 - Type of Serviceに対してホスト到達不能
 
さらにRFC 1182では、以下のコードが追加されている。
=== Source Quench Message(送出抑制要求通知) ===
* 13 - 通信が管理上禁止
* 14 - ホスト優先度違反
* 15 - 優先度が低すぎる
 
コード9および10は特殊な用途のために定義されており、通常のルーターは13を発生させるよう求めている。
=== Redirect Message(経路変更要求通知) ===
 
次Hopの[[Maximum Transmission Unit|MTU]]はRFC 1191で導入された。コード=4のときに設定され、[[経路MTU探索]]のために使われる。タイプ=3、コード=4のICMPパケットを[[ファイアーウォール]]等でフィルタしてしまうと、経路MTU探索ブラックホールと呼ばれる問題が発生する。
 
=== Source Quench Message(送出抑制要求通知) ===
{| class="wikitable" width="100%" style="text-align:center"
! style="width:3.125%;" | 0
! style="width:3.125%;" | 1
! style="width:3.125%;" | 2
! style="width:3.125%;" | 3
! style="width:3.125%;" | 4
! style="width:3.125%;" | 5
! style="width:3.125%;" | 6
! style="width:3.125%;" | 7
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ(4)
| colspan="8" | コード(0)
| colspan="16" | チェックサム
|-
| colspan="8" | 未使用
| colspan="8" | 長さ
| colspan="16" | 未使用
|-
| colspan="32" | IPヘッダ + 元データのデータグラムの先頭部分<br /><br />
|}
 
受信能力を超えた早さでデータグラムが届き、破棄してしまったことを通知する。ゲートウェイおよび宛先ホストのどちらでも発生する可能性がある。
 
=== Redirect Message(経路変更要求通知) ===
{| class="wikitable" width="100%" style="text-align:center"
! style="width:3.125%;" | 0
! style="width:3.125%;" | 1
! style="width:3.125%;" | 2
! style="width:3.125%;" | 3
! style="width:3.125%;" | 4
! style="width:3.125%;" | 5
! style="width:3.125%;" | 6
! style="width:3.125%;" | 7
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ(5)
| colspan="8" | コード
| colspan="16" | チェックサム
|-
| colspan="32" | ゲートウェイのIPアドレス
|-
| colspan="32" | IPヘッダ + 元データのデータグラムの先頭部分<br /><br />
|}
 
ゲートウェイから送信元に対して、今後は他のゲートウェイを使うよう指示する。元のデータグラムも破棄せずに転送する。経路変更要求ICMPメッセージを受け取ったホストはルーティングテーブルに追記し、該当する次のデータグラムからは指示されたゲートウェイへ送るようになる。
 
コードは以下の値をとる。
* 0 - ネットワークに関する経路変更要求
* 1 - ホストに関する経路変更要求
* 2 - Type of Serviceとネットワークに関する経路変更要求
* 3 - Type of Serviceとホストに関する経路変更要求
 
=== Router Advertisement Message(ルーター広告通知) ===
{| class="wikitable" width="100%" style="text-align:center"
! style="width:3.125%;" | 0
! style="width:3.125%;" | 1
! style="width:3.125%;" | 2
! style="width:3.125%;" | 3
! style="width:3.125%;" | 4
! style="width:3.125%;" | 5
! style="width:3.125%;" | 6
! style="width:3.125%;" | 7
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ(9)
| colspan="8" | コード(0)
| colspan="16" | チェックサム
|-
| colspan="8" | ルーターアドレス数
| colspan="8" | 1エントリあたりの長さ
| colspan="16" | 有効期限
|-
| colspan="32" | ルーターアドレスその1
|-
| colspan="32" | 優先度その1
|-
| colspan="32" | ルーターアドレスその2
|-
| colspan="32" | 優先度その2
|-
| colspan="32" | …<br /><br />
|}
 
Router Advertisement Messageおよび次のRouter Solicitation Messageは、RFC 1256で追加された。
 
デフォルトゲートウェイのアドレスを通知する。ルーターアドレス数で指定した数だけ列挙することができ、優先度([[2の補数]]表現による符号付き32ビット整数)が大きいものほど優先度が高い。1アドレスあたりの長さは32ビット単位で指定し、このバージョンの形式では2(すなわち1エントリあたり64ビット)となる。有効期限は応答時点からの秒単位で指定する。
 
=== Router Solicitation Message(ルーター請願通知) ===
{| class="wikitable" width="100%" style="text-align:center"
! style="width:3.125%;" | 0
! style="width:3.125%;" | 1
! style="width:3.125%;" | 2
! style="width:3.125%;" | 3
! style="width:3.125%;" | 4
! style="width:3.125%;" | 5
! style="width:3.125%;" | 6
! style="width:3.125%;" | 7
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ(10)
| colspan="8" | コード(0)
| colspan="16" | チェックサム
|-
| colspan="32" | 未使用
|}
 
=== Time Exceeded Message(時間切れ通知) ===
{| class="wikitable" width="100%" style="text-align:center"
! style="width:3.125%;" | 0
! style="width:3.125%;" | 1
! style="width:3.125%;" | 2
! style="width:3.125%;" | 3
! style="width:3.125%;" | 4
! style="width:3.125%;" | 5
! style="width:3.125%;" | 6
! style="width:3.125%;" | 7
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ(11)
| colspan="8" | コード
| colspan="16" | チェックサム
|-
| colspan="8" | 未使用
| colspan="8" | 長さ
| colspan="16" | 未使用
|-
| colspan="32" | IPヘッダ + 元データのデータグラムの先頭部分<br /><br />
|}
 
コード0は、IPヘッダのTime to live(存在回数)が0になっても宛先ホストに到達しなかったことを通知する。コード1は、断片の再統合を行う際、制限時間内に断片が揃わなかったことを通知する。
 
ネットワーク診断用コマンド[[traceroute]]は、TTLを意図的に小さな値に設定し、この時間切れ通知がどこから戻ってくるかを調べる。
 
=== Parameter Problem Message(不正引数通知) ===
{| class="wikitable" width="100%" style="text-align:center"
! style="width:3.125%;" | 0
! style="width:3.125%;" | 1
! style="width:3.125%;" | 2
! style="width:3.125%;" | 3
! style="width:3.125%;" | 4
! style="width:3.125%;" | 5
! style="width:3.125%;" | 6
! style="width:3.125%;" | 7
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ(12)
| colspan="8" | コード(0)
| colspan="16" | チェックサム
|-
| colspan="8" | ポインタ
| colspan="8" | 長さ
| colspan="16" | 未使用
|-
| colspan="32" | IPヘッダ + 元データのデータグラムの先頭部分<br /><br />
|}
 
パラメータに問題があって、元のデータグラムを破棄したことを通知する。ポインタは元データのうち問題となった箇所を、先頭からのオクテット数で指定する。
=== Timestamp Message(タイムスタンプ要求通知) ===
 
=== Timestamp Message(タイムスタンプ要求通知)・Timestamp Reply Message(タイムスタンプ応答通知) ===
{| class="wikitable" width="100%" style="text-align:center"
! style="width:3.125%;" | 0
! style="width:3.125%;" | 1
! style="width:3.125%;" | 2
! style="width:3.125%;" | 3
! style="width:3.125%;" | 4
! style="width:3.125%;" | 5
! style="width:3.125%;" | 6
! style="width:3.125%;" | 7
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ(13または14)
| colspan="8" | コード(0)
| colspan="16" | チェックサム
|-
| colspan="16" | 識別子
| colspan="16" | シーケンス番号
|-
| colspan="32" | 起点タイムスタンプ
|-
| colspan="32" | 受信タイムスタンプ
|-
| colspan="32" | 送信タイムスタンプ
|}
 
タイムスタンプ要求はタイプ=13で送信される。現在のところ定義されているコードは0だけである。識別子およびシーケンス番号はエコー要求と同じ要領で使う。起点タイムスタンプには要求時のタイムスタンプを、[[協定世界時|UTC]] 0:00からの経過ミリ秒で設定する。日付は含まれておらず、毎日0に戻ることに注意。
=== Information Request Message(情報要求通知) ===
 
宛先となったホストはタイムスタンプ要求を受け取ると、タイプ=14で応答する。識別子、シーケンス番号、起点タイムスタンプは、要求にセットされていた値をそのままコピーする。また要求を受信した際のタイムスタンプを受信タイムスタンプに、応答を送信する際のタイムスタンプを送信タイムスタンプにセットする。
=== Information Reply Message(情報応答通知) ===
 
要求を送信したホストは、応答を受信した際のタイムスタンプと、格納されている起点タイムスタンプを比較することで、往復に要した時間を知ることができる。
 
=== Information Request Message(情報要求通知)・Information Reply Message(情報応答通知) ===
{| class="wikitable" width="100%" style="text-align:center"
! style="width:3.125%;" | 0
! style="width:3.125%;" | 1
! style="width:3.125%;" | 2
! style="width:3.125%;" | 3
! style="width:3.125%;" | 4
! style="width:3.125%;" | 5
! style="width:3.125%;" | 6
! style="width:3.125%;" | 7
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ(15または16)
| colspan="8" | コード(0)
| colspan="16" | チェックサム
|-
| colspan="16" | 識別子
| colspan="16" | シーケンス番号
|}
 
タイプ=15の情報要求通知はアドレス0に対して送られる。要求を受信した各ホストおよびゲートウェイは、タイプ=16の情報応答通知を返す。
 
=== Address Mask Request Message(アドレスマスク要求通知)・Address Mask Reply Message(アドレスマスク応答通知) ===
{| class="wikitable" width="100%" style="text-align:center"
! style="width:3.125%;" | 0
! style="width:3.125%;" | 1
! style="width:3.125%;" | 2
! style="width:3.125%;" | 3
! style="width:3.125%;" | 4
! style="width:3.125%;" | 5
! style="width:3.125%;" | 6
! style="width:3.125%;" | 7
! style="width:3.125%;" | 8
! style="width:3.125%;" | 9
! style="width:3.125%;" | 10
! style="width:3.125%;" | 11
! style="width:3.125%;" | 12
! style="width:3.125%;" | 13
! style="width:3.125%;" | 14
! style="width:3.125%;" | 15
! style="width:3.125%;" | 16
! style="width:3.125%;" | 17
! style="width:3.125%;" | 18
! style="width:3.125%;" | 19
! style="width:3.125%;" | 20
! style="width:3.125%;" | 21
! style="width:3.125%;" | 22
! style="width:3.125%;" | 23
! style="width:3.125%;" | 24
! style="width:3.125%;" | 25
! style="width:3.125%;" | 26
! style="width:3.125%;" | 27
! style="width:3.125%;" | 28
! style="width:3.125%;" | 29
! style="width:3.125%;" | 30
! style="width:3.125%;" | 31
|-
| colspan="8" | タイプ(17または18)
| colspan="8" | コード(0)
| colspan="16" | チェックサム
|-
| colspan="16" | 識別子
| colspan="16" | シーケンス番号
|-
| colspan="32" | アドレスマスク
|}
 
Address Mask Request MessageおよびAddress Mask Reply Messageは、RFC 950で追加された。
 
== 関連項目 ==
* [[Internet Control Message Protocol for IPv6]]
 
== 参考文献 ==
* {{Cite book|和書
|author=W・リチャード・スティーヴンス
|authorlink=W・リチャード・スティーヴンス
|others=橘康雄訳、井上尚司監訳
|title=詳解TCP/IP Vol.1 プロトコル
|origyear=1994
|date=2000-12-20
|edition=新装版
|publisher=ピアソン・エデュケーション
|isbn=4-89471-320-9
}}
 
== 外部リンク ==
* RFC 792 - Internet Control Message Protocol
* RFC 950 - Internet Standard Subnetting Procedure
* RFC 1122 - Requirements for Internet Hosts -- Communication Layers
* RFC 1191 - Path MTU Discovery
* RFC 1256 - ICMP Router Discovery Messages
* RFC 1812 - Requirements for IP Version 4 Routers
* RFC 4884 - Extended ICMP to Support Multi-Part Messages
 
{{Computer-stub}}
 
369

回編集