El Protocolo de resolución de nombres entre pares ( PNRP ) es un protocolo entre pares diseñado por Microsoft . PNRP permite la publicación y resolución dinámica de nombres y requiere IPv6 .
El PNRP se mencionó por primera vez durante una presentación en una conferencia P2P en noviembre de 2001. Apareció en julio de 2003 en el Advanced Networking Pack para Windows XP y luego se incluyó en el Service Pack 2 para Windows XP. El PNRP 2.0 se introdujo con Windows Vista y estaba disponible para su descarga para los usuarios del Service Pack 2 de Windows XP. [1] El PNRP 2.1 está incluido en Windows Vista SP1, Windows Server 2008 y Windows XP SP3. El PNRP v2 no está disponible para Windows XP Professional x64 Edition ni ninguna edición de Windows Server 2003. [ 2]
La Asistencia remota de Windows en Windows 7 utiliza PNRP, Teredo e IPv6 cuando se conecta mediante la opción Conexión fácil . [3]
El diseño de PNRP está cubierto por la patente estadounidense n.° 7.065.587, emitida el 20 de junio de 2006.
El soporte para PNRP se eliminó en Windows 10 con la versión 1909 .
El PNRP es un protocolo de resolución de nombres distribuido que permite a los hosts de Internet publicar "nombres de pares" y las direcciones IPv6 correspondientes y, opcionalmente, otra información. Luego, otros hosts pueden resolver el nombre de los pares, recuperar las direcciones correspondientes y otra información, y establecer conexiones entre pares.
Con PNRP, los nombres de los pares se componen de una "autoridad" y un "calificador". La autoridad se identifica mediante un hash seguro de una clave pública asociada , o mediante un marcador de posición (el número cero) si el nombre del par no es "seguro". El calificador es una cadena , lo que permite que una autoridad tenga diferentes nombres de par para diferentes servicios. [4]
Si un nombre de par es seguro, los registros de nombres PNRP están firmados por la autoridad de publicación y pueden verificarse utilizando su clave pública. Cualquiera puede publicar nombres de par no seguros sin necesidad de verificación.
Varias entidades pueden publicar el mismo nombre de par. Por ejemplo, si un nombre de par está asociado a un grupo, cualquier miembro del grupo puede publicar direcciones para el nombre de par.
Los nombres de pares se publican y resuelven dentro de un ámbito específico. El ámbito puede ser un enlace local, un sitio (por ejemplo, un campus) o Internet en su totalidad.
En el plano interno, PNRP utiliza una arquitectura similar a los sistemas de tablas hash distribuidas , como Chord o Pastry . El nombre del par se codifica para generar un identificador de par de 128 bits y se utiliza un algoritmo similar a DHT para recuperar la ubicación del host que publica ese identificador. Sin embargo, existen algunas diferencias significativas.
Los sistemas DHT como Chord o Pastry almacenan los índices de los objetos (hashes) en el nodo cuyo identificador es más cercano al hash, y el algoritmo de enrutamiento está diseñado para encontrar ese nodo. En cambio, PNRP siempre almacena el hash en el nodo que publica el identificador. Por lo tanto, un nodo tendrá tantas entradas en el sistema de enrutamiento como el número de identificadores que publique. Se podría decir que el diseño de PNRP sacrifica mayor seguridad y robustez por un mayor costo de enrutamiento.
La mayoría de los sistemas DHT suponen que solo un nodo publica un índice específico. En cambio, PNRP permite que varios hosts publiquen el mismo nombre. El índice interno está compuesto, de hecho, por el hash de 128 bits del nombre del nodo y un identificador de ubicación de 128 bits, derivado de una dirección IPv6 del nodo.
El PNRP no utiliza una tabla de enrutamiento, sino un caché de entradas PNRP. Las nuevas entradas de caché se adquieren como un efecto secundario del tráfico en curso. El algoritmo de mantenimiento de caché garantiza que cada nodo mantenga un conocimiento adecuado de la "nube". Está diseñado para garantizar que el tiempo para resolver una solicitud varíe según el logaritmo del tamaño de la nube.