Peer Name Resolution Protocol (PNRP) — протокол, разработанный компанией Microsoft, применяющийся в одноранговой компьютерной сети с целью обращения к узлам сети по имени узла, которое связано с адресом IPv6. Протокол не предполагает использование сервера, обновление списка имен происходит динамически. Имена узлов (пиров) в сетях, использующих протокол PNPR состоят из двух частей: полномочий (Authority) и классификатора (Classifier). Часть «Полномочий» предназначена для безопасных клиентов сети и идентифицируются SHA-1 хэшем и связанного с ним открытым ключом, а для небезопасных клиентов эта часть имеет нулевой значение. Часть «Классификатор» — представляет собой строку, в которой идентифицируется служба, предоставляемой узлом сети.
2001 год — PNRP версия 1, был впервые представлен на конференции P2P.
2003 год — PNRP версии 1, включен в поставку Windows XP, а после перенесен в Windows Vista под версией 2.0.
Windows Remote Assistance в Windows 7 использует PNRP, Teredo и IPv6 при выборе опции Easy Connect.
Права на протокол PNRP защищены патентом США под номером 7,065,587, выданным 20 Июня 2006.
Структурно PNPR состоит из двух компонент[1]:
Для работы необходим IPv6 и два глобальных облака, одно из которых соответствует всем IPv6 адресам, а другое служит для локальной связи, являющимся аналогом IPv4.
Создания идентификатора проходит в три этапа :
Имена незащищенных пиров публикуются без подписи, в результате чего проверка невозможна.
Несколько объектов могут использовать одно и то же имя. Например, если одноранговое имя связано с группой, любой член группы может опубликовать адреса для однорангового имени.
Одноранговое имя может представлять собой как адрес в локальной сети, так и в сети интернет.
Разрешение имени осуществляется в два этапа:
Внутренне PNRP использует архитектуру, аналогичную системам распределенных хеш-таблиц, таким как Chord или Pastry. Имя однорангового узла хешируется для создания 128-битного идентификатора, а DHT-подобный алгоритм используется для получения местоположения хоста, публикующего этот идентификатор. Но при всех сходствах, существуют и некоторые различия.
Системы DHT, такие как Chord или Pastry, хранят хеши в узлах, максимально близких к хосту, а алгоритм маршрутизации устроен так, чтобы обеспечить поиск этого узла. PNRP же, напротив, всегда хранит хеш на узле, который публикует идентификатор. Таким образом, узел будет иметь столько же записей в системе маршрутизации, сколько и идентификаторов, которые он использует. В результате складывается такая ситуация, что PNRP приходится жертвовать скоростью маршрутизации ради повышенной безопасности и надежности.
В отличие от систем DHT, PRNP разрешает нескольким хостам (например, одной группе), использовать одно и то же имя. В DHT предполагается уникальность имен. Внутренний индекс фактически состоит из 128-битного хеша имени однорангового узла и 128-битного идентификатора местоположения, полученного из IPv6-адреса узла.
Вместо таблицы маршрутизации в PNRP используется кэш записей. Каждая новая запись появляется за счет проходящего через сеть трафика. За счет этого обеспечивается актуальность информации о сети.
Windows XP — PNPR версия 1, версия 2.0 в загружаемом пакете;
Windows Vista — PNPR версия 2.0
Windows Vista SP1, Windows Server 2008 и Windows XP SP3 была добавлена версия протокола PNRP 2.1.
Версия 2.0 не доступна пользователям Windows XP Professional x64 Edition, а также всех редакций Windows Server 2003[2].