The term peer-to-peer (P2P) was originally used to refer to network protocols where all the nodes had the same role and there were no nodes with specific responsibilities to act as the administrators or supervisors of a network (Ye, Makedon, & Ford, 2004). However, with the evolution of Internet as the dominant architecture for applications, contents, and services, applications and services have gradually migrated from the client-server paradigm to the edge services paradigm and now to the P2P computing paradigm. Therefore, nowadays, the term P2P refers to a class of systems and applications that use distributed resources to perform some function in a decentralized manner, where every participating node can act as both a client and a server (Ye et al., 2004). This article provides an overview of P2P computing, being focused on the types of multimedia distribution services and cooperation models in P2P systems. These models are classified regarding the functionality, the degree of decentralization, and the degree of structure of the information system.
The P2P Working Group (http://freenet.sourceforge.net) and Gnutella. A detailed performance evaluation of the main features of current unstructured P2P architectures may be found in Benevenuto, Ismael, and Almeida (2004). Due to scalability limitations of the unstructured P2P approaches, structured P2P systems have been developed to manage huge amounts of data in a scalable way in overlay networks. One type of structured P2P systems is Distributed Hash Tables (DHTs) (Rieche, Wehrle, Landsiedel, Gotz, & Petrak, 2004). Examples of these DHTs include Chord (Stoica et al., 2001), Content-Addressable Network (CAN) (Ratnasamy et al., 2001), DKS(N,k,f) (Alima, El-Ansary, Brand, & Haridi, 2003), or Pastry (Rowstron & Druschel, 2001).
Key Terms in this Chapter
Gnutella: Gnutella is a decentralized file-sharing system whose participants form a virtual network and communicate peer-to-peer via the Gnutella protocol for distributed file search. To participate, a peer first connects to a known Gnutella host. Upon receiving a message, the servent decrements the time-to-live (TTL) field of the message. If the TTL is greater than 0 and the servent has never seen the identifier of the message (loop detection), it resends the message to all known peers. The servent also checks whether it should respond to the message. If it receives a Query, for example, it checks its local file store and responds with a QueryHit if it can satisfy the request. Responses are routed along the same path as the originating message.
Distributed Hash Table (DHT) Scheme: The basic idea of a DHT scheme is to use a hash table-like interface to locate the objects and to distribute the duty of maintaining the hash table data structure, in the face of node joins/leaves, to all participating P2P nodes.
Peer, Party, or Node: These terms are used interchangeably and all refer to an entity in a P2P system.
JXTA: JXTA is a suite of protocols that facilitates P2P communication. It provides a common network architecture layer for a wide variety of network services and applications. Peers on a JXTA network are arbitrary devices and can be anything with an electronic heartbeat.
Peer-to-Peer (P2P): This term refers to any exchange system characterized by direct interaction and data exchange between its entities (called nodes or peers).
Servent: This word is composed by the first four and last three letters of server and client . It is used to designate a node that is server and client at the same time.
JXTA Search: JXTA search is a decentralized peer-to-peer search engine. It provides a common distributed query interface for peer devices, exposing services and content for a network of information providers and consumers.