インターネット制御メッセージプロトコルバージョン6(ICMPv6 )は、インターネットプロトコルバージョン6(IPv6)用のインターネット制御メッセージプロトコル(ICMP)の実装です。 [ 1 ] ICMPv6はIPv6の不可欠な部分であり、エラー報告と診断機能を実行します。
ICMPv6 には、新機能を実装するための拡張機能のフレームワークがあります。いくつかの拡張機能が公開されており、新しい ICMPv6 メッセージ タイプや、既存の ICMPv6 メッセージ タイプに対する新しいオプションが定義されています。たとえば、Neighbor Discovery Protocol (NDP) は、IPmpv6 に基づくノード検出プロトコルで、ARPの機能を置き換えて強化します。[ 2 ] Secure Neighbor Discovery (SEND) は、セキュリティを強化した NDP の拡張機能です。Multicast Listener Discovery (MLD) は、 IPv4でInternet Group Management Protocol (IGMP) が使用されるのと同様に、IPv6 ルータが直接接続されたリンク上のマルチキャストリスナーを検出するために使用されます。Multicast Router Discovery (MRD) は、マルチキャスト ルータの検出を可能にします。
ICMPv6 メッセージは、エラー メッセージと情報メッセージに分類できます。ICMPv6 メッセージは、ICMPv6 のIPv6 Next Header値が58に設定されたIPv6 パケットによって転送されます。
ICMPv6メッセージは、ヘッダーとプロトコルペイロードで構成されます。ヘッダーには、タイプ(8ビット)、コード(8ビット)、チェックサム(16ビット)の3つのフィールドのみが含まれます。
制御メッセージは、タイプフィールドの値によって識別されます。コードフィールドは、メッセージに関する追加のコンテキスト情報を提供します。一部のメッセージは、対応する名前のICMPメッセージタイプと同じ目的で使用されます。
上記の表は網羅的なものではないことに注意してください。現在割り当てられている ICMPv6 タイプの完全なリストは、次のリンクで確認できます: IANA: ICMPv6 パラメータ。
ICMPv6 は、ヘッダーに16 ビットのチェックサムを含めることで、メッセージの完全性検証を最低限のレベルまで提供します。チェックサムは、IPv6 標準[ 6 ]に従って IPv6 ヘッダー フィールドの擬似ヘッダーから計算されます。この擬似ヘッダーは、送信元アドレスと宛先アドレス、パケット長、および次のヘッダー フィールドで構成され、後者は値58に設定されます。この擬似ヘッダーに続いて、ICMPv6 メッセージでチェックサムが継続されます。チェックサムの計算は、インターネット プロトコル標準に従って 16 ビットの 1 の補数加算を使用して実行され、その後、チェックサム自体の最終的な 1 の補数が実行され、それがチェックサム フィールドに入れられます。[ 7 ]これは、 ICMPでの IPv4 の計算方法とは異なりますが、 TCP で行われる計算方法と似ています。
ICMPv6メッセージのペイロードは、送信されるメッセージの種類によって異なります。ペイロードは、上記で説明したヘッダーの直後のビット32から始まります。宛先到達不能やタイムアウトなどの一部のメッセージには、定義されたメッセージ本文はありません。
その他には、本文の最初の4バイトのみを使用し、その他の内容は定義しないものもあります。
NDPメッセージの場合、最初の4バイトは予約済みか、フラグ/ホップリミットに使用されます。残りのボディには、未指定の構造化データが含まれます。
リダイレクトの場合、メッセージ本文の最初の数バイトは予約されますが、使用されません。その後にターゲットと宛先アドレスが続きます。指定されていないオプションは末尾に追加できます。
ICMPv6ノードがパケットを受信すると、メッセージの種類に応じて適切な処理を実行する必要があります。ICMPv6プロトコルは、ネットワークの過負荷を防ぐため、同じ宛先に送信されるエラーメッセージの数を制限しなければなりません。例えば、ノードがエラーのあるパケットを転送し続ける場合、ICMPは最初のパケットにエラーを通知し、その後は一定の最小間隔または一定のネットワーク最大負荷で定期的に通知します。ICMPエラーメッセージに対して、別のICMPエラーメッセージに応答してICMPエラーメッセージを送信してはなりません。