ピア名前解決プロトコル(PNRP)は、マイクロソフトが設計したピアツーピアプロトコルです。PNRPは動的な名前公開と名前解決を可能にし、IPv6を必要とします。
PNRP は、2001 年 11 月に開催された P2P カンファレンスでのプレゼンテーションで初めて言及されました。2003 年 7 月にWindows XP 用 Advanced Networking Packに登場し、その後、 Windows XP 用Service Pack 2に含まれました。PNRP 2.0 はWindows Vistaで導入され、Windows XP Service Pack 2 のユーザーがダウンロードできるようになりました。[ 1 ] PNRP 2.1 は、 Windows Vista SP1、Windows Server 2008、およびWindows XP SP3に含まれています。PNRP v2 は、Windows XP Professional x64 EditionまたはWindows Server 2003のどのエディションでも利用できません。[ 2 ]
Windows 7のWindows リモート アシスタンスは、イージー コネクトオプションを使用して接続する場合、PNRP、Teredo、および IPv6 を使用します。[ 3 ]
PNRPの設計は、2006年6月20日に発行された米国特許第7,065,587号によって保護されています。
Windows 10バージョン 1909では、PNRP のサポートが削除されました。
PNRPは分散型名前解決プロトコルであり、インターネットホストが「ピア名」とそれに対応するIPv6アドレス、およびオプションでその他の情報を公開することを可能にします。他のホストは、ピア名を解決し、対応するアドレスやその他の情報を取得して、ピアツーピア接続を確立できます。
PNRPでは、ピア名は「オーソリティ」と「修飾子」で構成されます。オーソリティは、関連付けられた公開鍵の安全なハッシュによって識別されるか、ピア名が「保護されていない」場合はプレースホルダー(数字のゼロ)によって識別されます。修飾子は文字列であり、オーソリティは異なるサービスに対して異なるピア名を持つことができます。[ 4 ]
ピア名が安全な場合、PNRP名レコードは発行機関によって署名され、その公開鍵を使用して検証できます。安全でないピア名は、検証されることなく誰でも公開できます。
複数のエンティティが同じピア名を公開できます。たとえば、ピア名がグループに関連付けられている場合、そのグループのメンバーであれば誰でもそのピア名のアドレスを公開できます。
ピア名は、指定された範囲内で公開および解決されます。範囲は、ローカルリンク、サイト(キャンパスなど)、またはインターネット全体を指定できます。
PNRPは内部的には、 ChordやPastryなどの分散ハッシュテーブルシステムに似たアーキテクチャを採用しています。ピア名はハッシュ化されて128ビットのピア識別子が生成され、DHTに似たアルゴリズムを使用してその識別子を公開しているホストの位置を取得します。ただし、いくつかの重要な違いがあります。
ChordやPastryのようなDHTシステムは、ハッシュに最も近い識別子を持つノードにオブジェクトのインデックス(ハッシュ)を保存し、ルーティングアルゴリズムはそのノードを見つけるように設計されています。一方、PNRPは常に識別子を公開するノードにハッシュを保存します。そのため、ノードは公開する識別子の数と同じ数のエントリをルーティングシステム内に持つことになります。PNRPの設計は、セキュリティと堅牢性の向上と引き換えに、ルーティングコストが高くなるというトレードオフがあると言えるでしょう。
ほとんどのDHTシステムは、特定のインデックスを公開するのは1つのノードのみであると想定しています。一方、PNRPでは、複数のホストが同じ名前を公開できます。内部インデックスは、実際にはピア名の128ビットハッシュと、ノードのIPv6アドレスから生成される128ビットのロケーション識別子で構成されています。
PNRPはルーティングテーブルを使用せず、PNRPエントリのキャッシュを使用します。新しいキャッシュエントリは、進行中のトラフィックの副産物として取得されます。キャッシュメンテナンスアルゴリズムは、各ノードが「クラウド」に関する十分な情報を保持することを保証します。このアルゴリズムは、リクエストの解決時間がクラウドのサイズの対数に比例するように設計されています。