近隣探索プロトコル(NDP)、または単に近隣探索(ND )は、インターネットプロトコルバージョン6(IPv6)で使用されるインターネットプロトコルスイートのプロトコルです。 [ 1 ] : §1これはインターネットモデルのインターネット層 で動作し、[ 2 ]ローカル接続やドメインネームサーバー、ゲートウェイの設定など、ネットワーク通信に必要なさまざまな情報を収集する役割を担っています。
このプロトコルは、IPv4のアドレス解決プロトコル(ARP) およびインターネット制御メッセージプロトコル(ICMP)ルーター検出およびルーターリダイレクトプロトコルと同様の機能をIPv6で実行するために、5 つの ICMPv6 パケットタイプを定義しています。IPv4 の対応プロトコルに比べて多くの改善点があります。[ 1 ] : §3.1例えば、近隣到達不能検出 (NUD) が含まれているため、ルーターやリンクの障害、またはモバイルノードが存在する場合でもパケット配信の堅牢性が向上します。
逆近隣探索(IND )プロトコル拡張機能により、ノードは、IPv4 の逆 ARPと同様に、特定のリンク層アドレスに対応する IPv6 アドレスを決定して通知することができます。 [ 3 ]
セキュア近隣探索プロトコル(SEND)は、NDP のセキュリティ拡張であり、暗号的に生成されたアドレス(CGA)とリソース公開鍵基盤(RPKI)を使用して、 IPsecに依存しない暗号化方式で NDP を保護する代替メカニズムを提供します。近隣探索プロキシ(ND Proxy)は、IPv4プロキシ ARPと同様のサービスを提供し、リンク層でブリッジングできない場合に、単一のサブネットプレフィックス内の複数のネットワークセグメントをブリッジングできるようにします。[ 4 ]
NDPは、ルータ要請、ルータ広告、ネイバー要請、ネイバー広告、およびネットワークリダイレクトの目的で、 5つのICMPv6パケットタイプを定義しています。 [ 1 ]
これらのメッセージは、以下の機能を提供するために使用されます。
2台のコンピュータAとBは、ゲートウェイやルーターを介さずに同じローカルエリアネットワークに接続されています。Aは、 BのIPアドレスである2001:db8::55に送信するパケットを持っています。
AはパケットをBに送信する前に、Bのアドレスの最下位24ビットをプレフィックスff02::1:ff00:0 / 104に追加して、ff02::1:ff00:55となるソリシテッドノードマルチキャストアドレスを作成し、Bのソリシテッドノードマルチキャストアドレスの最下位24ビットをプレフィックス33:33:FF:xx:xx:xx [ 8 ]に追加して、33: 33:FF:00:00:55となるソリシテッドノードマルチキャストMACアドレスを作成します。Aは、2001:db8::55(宛先IPアドレスff02::1:ff00:55 、宛先MACアドレス33:33:FF:00:00:55 )に対する応答を要求するネイバー要請メッセージを送信し、ローカルネットワーク上で自身の要請ノードマルチキャストアドレスで待機しているBがこれを受け入れる。Bは、自身のMACアドレスとIPアドレスを含むネイバーアドバタイズメントメッセージで応答する。Aはこの応答を受信し、 BのMACアドレスを含むパケットをリンク上に送信する。
通常、ネットワークノードはIPアドレスとMACアドレスを関連付けるルックアップキャッシュを保持しています。この例では、Aがルックアップをキャッシュしていれば、NDPリクエストを送信する必要はありません。また、Bがリクエストを受信した際に、ルックアップをAにキャッシュすることで、後でBがAにパケットを送信する必要がある場合、MACアドレスのルックアップにNDPを使用する必要がなくなります。最後に、AがNDP応答を受信した際に、同じIPアドレス宛ての今後のメッセージのためにルックアップをキャッシュすることができます。