Введение

Протокол сети "один к одному" Peer Name Resolution Protocol (PNRP) — это протокол, разработанный компанией Microsoft. PNRP обеспечивает динамическую публикацию и разрешение имен и требует IPv6. Впервые PNRP был упомянут во время презентации на конференции P2P в ноябре 2001 года. Он появился в июле 2003 года в составе Advanced Networking Pack для Windows XP, а позже был включен в Service Pack 2 для Windows XP. PNRP 2.0 был представлен вместе с Windows Vista и был доступен для загрузки пользователям Windows XP Service Pack 2. PNRP 2.1 включен в Windows Vista SP1, Windows Server 2008 и Windows XP SP3. PNRP v2 недоступен для Windows XP Professional x64 Edition или любой версии Windows Server 2003. Windows Remote Assistance в Windows 7 использует PNRP, Teredo и IPv6 при подключении с использованием опции Easy Connect. Конструкция PNRP защищена патентом США № 7,065,587, выданным 20 июня 2006 года. Поддержка PNRP была удалена в Windows 10 с версией 1909.

Услуги ПНРП

PNRP — это распределенный протокол разрешения имен, позволяющий интернет-хостам публиковать "имена узлов" и соответствующие IPv6-адреса, а также, опционально, другую информацию. Другие хосты могут затем разрешить имя узла, получить соответствующие адреса и другую информацию и установить одноранговые соединения. В PNRP имена узлов состоят из "авторитета" и "квалификатора". Авторитет идентифицируется безопасной хеш-функцией связанного открытого ключа или заполнителем (ноль), если имя узла "незащищено". Квалификатор — это строка, позволяющая авторитету иметь разные имена узлов для различных служб. Если имя узла защищено, записи имен PNRP подписываются издающим авторитетом и могут быть проверены с использованием его открытого ключа. Незащищенные имена узлов могут быть опубликованы кем угодно без возможности проверки. Несколько сущностей могут публиковать одно и то же имя узла. Например, если имя узла связано с группой, любой член группы может публиковать адреса для этого имени узла. Имена узлов публикуются и разрешаются в пределах определенной области действия. Область действия может быть локальной сетью, сайтом (например, кампусом) или всем Интернетом.

PNRP и распределенные хэш-таблицы

Внутри PNRP использует архитектуру, аналогичную распределенным системам хеш-таблиц, таким как Chord или Pastry. Имя участника сети хешируется для получения 128-битного идентификатора участника, а алгоритм, подобный DHT, используется для получения местоположения хоста, публикующего этот идентификатор. Однако существуют некоторые существенные различия. Системы DHT, такие как Chord или Pastry, хранят индексы объектов (хеши) на узле, идентификатор которого наиболее близок к хешу, и алгоритм маршрутизации разработан для поиска этого узла. В отличие от этого, PNRP всегда хранит хеш на узле, который публикует идентификатор. Таким образом, у узла будет столько же записей в системе маршрутизации, сколько идентификаторов он публикует. Конструкция PNRP, вероятно, обеспечивает повышенную безопасность и устойчивость за счет более высоких затрат на маршрутизацию. Большинство систем DHT предполагают, что только один узел публикует определенный индекс. В отличие от этого, PNRP позволяет нескольким хостам публиковать одно и то же имя. Внутренний индекс фактически состоит из 128-битного хеша имени участника сети и 128-битного идентификатора местоположения, полученного из IPv6-адреса узла. PNRP не использует таблицу маршрутизации, а скорее кэш записей PNRP. Новые записи кэша получаются как побочный эффект текущего трафика. Алгоритм обслуживания кэша гарантирует, что каждый узел поддерживает достаточную информацию об "облаке". Он разработан таким образом, чтобы время разрешения запроса изменялось пропорционально логарифму размера облака.