近隣探索プロトコル(きんりんたんさくプロトコル)は、IPv6 (インターネット・プロトコル・バージョン 6) における近隣者を発見する (Neighbor Discovery) ためのプロトコルである。 NDP と略称される。
近隣探索プロトコルは RFC 4861 において定義されている。 IPv4 においては近隣者発見のために ARP (Address Resolution Protocol) という専用のプロトコルが使用されたが、 IPv6 においてはそのために ICMPv6(IPv6 のためのインターネット制御メッセージ・プロトコル)が使用される。近隣発見プロトコルと翻訳されることもある。
この方法によってつぎのような機能が実現される。
- ルータ発見 (Router Discovery)
- ホスト・コンピュータがそれと同一リンク上にあるルータの位置を特定する。
- プレフィックス発見 (Prefix Discovery)
- ホスト・コンピュータが接続されたリンクのアドレス・プレフィックスをみつける。
- パラメタ発見 (Parameter Discovery)
- リンク MTU や外向きパケットのホップ・リミットのようなインターネット・パラメータを学習する。
- アドレス自動設定 (Address Autoconfiguration)
- インタフェースに自動的にアドレスを設定する。
- アドレス解決 (Address Resolution)
- 宛先 IPアドレスだけを知っているときにリンク上の宛先(たとえば近隣者)のリンク層アドレスを決定する。
- 次転送先決定 (Next-hop Determination)
- 宛先 IP アドレスをそのパケットを送るべき近隣者の IP アドレスにマップする。
- 近隣者到達不可能性検出 (NUD, Neighbor Unreachability Detection)
- 近隣者にもはや連絡可能ではないことを知る。
- 重複アドレス検出 (DAD, Duplicate Address Detection)
- 使おうとしたアドレスを他のノードが使用していないかどうかを知る。
- リダイレクト (Redirect)
- 特定の宛先に届けるためによりよい次転送先ノードがあるとルータがホストに知らせる。
上記の機能を実現するため、次のような 5 種類の ICMPv6 パケットが使用される。
- ルータ要請 (Router Solicitation)
- Type 133
- インタフェースが使用可能になったとき、ホストがルータにルータ要請を送ることによって、次の予定されたルータ広告の前にすぐにルータ広告を受信することができる。
- ルータ広告 (Router Advertisement)
- Type 134
- ルータが周期的またはルータ要請メッセージにこたえて、ルータの存在と種々なリンクとインターネット・パラメータを広告する。
- 近隣者要請 (Neighbor Solicitation)
- Type 135
- 近隣者のリンク層アドレスを決定するか、キャッシュされたリンク層アドレスで近隣者にまだ到達可能であるかを確かめるためにノードから送信される。
- 近隣者広告 (Neighbor Advertisement)
- Type 136
- 近隣者要請メッセージに対する応答。または、ノードがリンク層アドレスの変更を通知するために要請されていない近隣者広告を送信することもある。
- リダイレクト (Redirect)
- Type 137
- もっとよい次転送先をルータがホストに知らせるために使用される。