ICMP
INTERNET CONTROL MESSAGE PROTOCOL
ICMP IPv4 (プロトコル番号1)とICMPv6 IPv6 (プロトコル番号58)で別々のプロトコル番号が振られている
RFC 8200 IPv6
RFC 4443 Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification
https://tex2e.github.io/rfc-translater/html/rfc4443.html
RFC 2463 Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification (旧)
RFC 1885 Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification (旧)
RFC 792 インターネット制御メッセージ プロトコル
https://datatracker.ietf.org/doc/html/rfc792
RFC 777 Internet Control Message Protocol → 792
RFC 760 DOD STANDARD INTERNET PROTOCOL から分離
RFC 792
INTERNET CONTROL MESSAGE PROTOCOL
DARPA INTERNET PROGRAM
PROTOCOL SPECIFICATION
はじめに
インターネットプロトコル(Internet Protocol IP IPv4)は、Catenet 2と呼ばれる相互接続ネットワークシステムにおいて、ホスト間のデータグラムサービスに使用されます。ネットワーク接続デバイスはゲートウェイ(Gateway)と呼ばれます。これらのゲートウェイは、制御のためにゲートウェイ間プロトコル(GGP)3,4を介して相互に通信を行います。ゲートウェイまたは宛先ホストは、例えばデータグラム処理におけるエラーを報告するために、送信元ホストと通信することがあります。このような目的のために、インターネット制御メッセージプロトコル(ICMP)というプロトコルが使用されます。ICMPは、IPの基本機能をあたかも上位プロトコルであるかのように利用しますが、実際にはICMPはIPの不可欠な部分であり、すべてのIPモジュールに実装する必要があります。
ICMPメッセージは、データグラムが宛先に到達できない場合、ゲートウェイにデータグラムを転送するためのバッファリング能力がない場合、ゲートウェイがホストにトラフィックをより短い経路で送信するように指示できる場合など、様々な状況で送信されます。
インターネットプロトコルは、絶対的に信頼できるように設計されていません。これらの制御メッセージの目的は、通信環境における問題に関するフィードバックを提供することであり、IPの信頼性を高めることではありません。データグラムが確実に配信されるか、制御メッセージが必ず返されるかは、依然として保証されません。データグラムによっては、損失の報告なく配信されない場合があります。信頼性の高い通信が必要な場合は、IPを使用する上位プロトコルが独自の信頼性手順を実装する必要があります。
ICMPメッセージは通常、データグラムの処理中に発生したエラーを報告します。メッセージに関するメッセージの無限後退を避けるため、ICMPメッセージに関するICMPメッセージは送信されません。また、ICMPメッセージは、フラグメント化されたデータグラムのフラグメント0の処理中に発生したエラーについてのみ送信されます(フラグメント0のフラグメントオフセットは0です)。
メッセージフォーマット
ICMPメッセージは基本IPヘッダーを使用して送信されます。データグラムのデータ部の最初のオクテットはICMPタイプフィールドです。このフィールドの値によって、残りのデータのフォーマットが決まります。「未使用」と表示されているフィールドは、将来の拡張のために予約されており、送信時には0でなければなりません。ただし、受信側はこれらのフィールドを使用すべきではありません(チェックサムに含める場合を除く)。個々のフォーマットの説明で特に明記されていない限り、インターネットヘッダーフィールドの値は次のとおりです。
バージョン
4
IHL
インターネットヘッダー長(32ビットワード)。