Peer Name Resolution Protocol
In peer-to-peer environments, peers use specific name resolution systems to resolve each other's network locations (addresses, protocols, and ports) from names or other types of identifiers. Peer-to-peer name resolution has been complicated by transient connectivity and shortcomings in the Domain Name System (DNS).
Machines that exist as peers within a Peer-to-Peer network have resources to share. However, they still have transient connectivity, like any client. Peer-to-peer networking computers do not rely on the existing DNS infrastructure; instead, they use PNRP to resolve peer names to addresses.
The Microsoft® Windows® Peer-to-Peer Networking platform solves this problem with the Peer Name Resolution Protocol (PNRP), a secure, scalable, and dynamic name registration and name resolution protocol first developed for Windows XP and then upgraded in Windows Vista™. PNRP works very differently from traditional name resolution systems, opening up exciting new possibilities for application developers.
A PNRP resolution includes an address, port, and possibly an extended payload. The system is fault tolerant and there are no bottlenecks. Name resolutions will never return stale addresses, making PNRP an excellent solution for finding mobile users. Names can be published as secured (protected) or unsecured (unprotected). PNRP uses public key cryptography to protect secure peer names against spoofing; both computers and services can be named with PNRP.
The Peer Name Resolution Protocol has the following properties:
Distributed and almost entirely serverless. Servers are only required for the bootstrapping process.
Secure name publication without the involvement of third parties. Unlike DNS name publication, PNRP name publication is instantaneous and without financial cost.
PNRP updates in real-time, which prevents the resolution of stale addresses.
The resolution of names via PNRP extends beyond computers by also allowing name resolution for services.
Names can be published as secured or unsecured with PNRP. PNRP uses public key cryptography to protect secure peer names against spoofing.
The System.Net.PeerToPeer Namespace
PNRP functionality is defined by the System.Net.PeerToPeer namespace within the .Net Framework version 3.5. It provides a set of types that can be used to register and resolve peer names with an available PNRP service.
(PNRP and custom peer resolvers can be created and instantiated using the types provided in the System.ServiceModel.PeerResolvers namespace.)
The basic types used to register and resolve names with an available PNRP service are as follows:
Cloud: Defines the information describing an available PNRP cloud, including its scope.
PeerName: Defines a peer name that can be used to register and subsequently resolve a peer within a cloud.
PeerRecord: Defines the record in PNRP cloud that contains the registration information for a peer, which includes the network endpoints at which the peer can be contacted.
PeerNameRegistration: Defines the registration process for a peer name, including methods to start and stop peer name registration.
PeerNameResolver: Defines the process for resolving a peer name to its network endpoint(s), including both synchronous and asynchronous methods for resolution.