A peer to peer (or P2P) computer network uses diverse connectivity between participants in a network and the cumulative bandwidth of network participants rather than conventional centralized resources where a relatively low number of servers provide the core value to a service or application. P2P networks are typically used for connecting nodes via largely ad hoc connections. Such networks are useful for many purposes. Sharing content files (see file sharing) containing audio, video, data or anything in digital format is very common, and realtime data, such as telephony traffic, is also passed using P2P technology.
A pure P2P network does not have the notion of clients or servers but only equal peer nodes that simultaneously function as both "clients" and "servers" to the other nodes on the network. This model of network arrangement differs from the client-server model where communication is usually to and from a central server. A typical example of a file transfer that is not P2P is an FTP server where the client and server programs are quite distinct, the clients initiate the download/uploads, and the servers react to and satisfy these requests.
The earliest P2P network in widespread use was the Usenet news server system, in which peers communicated with one another to propagate Usenet news articles over the entire Usenet network. Particularly in the earlier days of Usenet, UUCP was used to extend even beyond the Internet. However, the news server system also acted in a client-server form when individual users accessed a local news server to read and post articles. The same consideration applies to SMTP email in the sense that the core email relaying network of Mail transfer agents is a P2P network while the periphery of Mail user agents and their direct connections is client server. Tim Berners-Lee's vision for the World Wide Web, as evidenced by his WorldWideWeb editor/browser, was close to a P2P network in that it assumed each user of the web would be an active editor and contributor creating and linking content to form an interlinked "web" of links. This contrasts to the more broadcasting-like structure of the web as it has developed over the years.
Some networks and channels such as Napster, OpenNAP and IRC server channels use a client-server structure for some tasks (e.g. searching) and a P2P structure for others. Networks such as Gnutella or Freenet use a P2P structure for all purposes, and are sometimes referred to as true P2P networks, although Gnutella is greatly facilitated by directory servers that inform peers of the network addresses of other peers.
P2P architecture embodies one of the key technical concepts of the Internet, described in the first Internet Request for Comments, RFC 1, "Host Software" dated 7 April 1969. More recently, the concept has achieved recognition in the general public in the context of the absence of central indexing servers in architectures used for exchanging multimedia files.
The concept of P2P is increasingly evolving to an expanded usage as the relational dynamic active in distributed networks, i.e. not just computer to computer, but human to human. Yochai Benkler has coined the term "commons-based peer production" to denote collaborative projects such as free software. Associated with peer production are the concept of peer governance (referring to the manner in which peer production projects are managed) and peer property (referring to the new type of licenses which recognize individual authorship but not exclusive property rights, such as the GNU General Public License and the Creative Commons licenses).
P2P networks can be classified by what they can be used for:
Other classification of P2P networks is according to their degree of centralization.
In 'pure' P2P networks:
There also exist countless hybrid P2P systems:
The distributed nature of P2P networks also increases robustness in case of failures by replicating data over multiple peers, and -- in pure P2P systems -- by enabling peers to find the data without relying on a centralized index server. In the latter case, there is no single point of failure in the system.
An unstructured P2P network is formed when the overlay links are established arbitrarily. Such networks can be easily constructed as a new peer that wants to join the network can copy existing links of another node and then form its own links over time. In an unstructured P2P network, if a peer wants to find a desired piece of data in the network, the query has to be flooded through the network to find as many peers as possible that share the data. The main disadvantage with such networks is that the queries may not always be resolved. Popular content is likely to be available at several peers and any peer searching for it is likely to find the same thing. But if a peer is looking for rare data shared by only a few other peers, then it is highly unlikely that search will be successful. Since there is no correlation between a peer and the content managed by it, there is no guarantee that flooding will find a peer that has the desired data. Flooding also causes a high amount of signaling traffic in the network and hence such networks typically have very poor search efficiency. Most of the popular P2P networks such as Gnutella and FastTrack are unstructured.
Structured P2P network employ a globally consistent protocol to ensure that any node can efficiently route a search to some peer that has the desired file, even if the file is extremely rare. Such a guarantee necessitates a more structured pattern of overlay links. By far the most common type of structured P2P network is the distributed hash table (DHT), in which a variant of consistent hashing is used to assign ownership of each file to a particular peer, in a way analogous to a traditional hash table's assignment of each key to a particular array slot. Some well known DHTs are Chord, Pastry, Tapestry, CAN, and Tulip. Not a DHT-approach but a structured P2P network is HyperCuP.
In Sony Corp. v. Universal Studios, 464 U.S. 417 (1984), the Supreme Court found that Sony's new product, the Betamax, did not subject Sony to secondary copyright liability because it was capable of substantial non-infringing uses. Decades later, this case became the jumping-off point for all peer-to-peer copyright infringement litigation.
The first peer-to-peer case was A&M Records v. Napster, 239 F.3d 1004 (9th Cir. 2001). In the Napster case, the 9th Circuit considered whether Napster was liable as a secondary infringer. First, the court considered whether Napster was contributorily liable for copyright infringement. To be found contributorily liable, Napster must have engaged in "personal conduct that encourages or assists the infringement." The court found that Napster was contributorily liable for the copyright infringement of its end-users because it "knowingly encourages and assists the infringement of plaintiffs' copyrights. The court goes on to analyze whether Napster was vicariously liable for copyright infringement. The standard applied by the court is whether Napster "has the right and ability to supervise the infringing activity and also has a direct financial interest in such activities. The court found that Napster did receive a financial benefit, and had the right and ability to supervise the activity, meaning that the plaintiffs demonstrated a likelihood of success on the merits of their claim of vicarious infringement. The court denied all of Napster's defenses, including its claim of fair use.
The next major peer-to-peer case was MGM v. Grokster, 514 U.S. 913 (2005). In this case, the Supreme Court found that even if Grokster was capable of substantial non-infringing uses, which the Sony Court found was enough to relieve one of secondary copyright liability, Grokster was still secondarily liable because it induced its users to infringe.
Around the world in 2006, an estimated five billion songs, equating to 38,000 years in music were swapped on peer-to-peer websites, while 509 million were purchased online .
Many P2P systems use stronger peers (super-peers, super-nodes) as servers and client-peers are connected in a star-like fashion to a single super-peer.
Sun added classes to the Java technology to speed the development of P2P applications quickly in the late 1990s so that developers could build decentralized real time chat applets and applications before Instant Messaging networks were popular. This effort is now being continued with the JXTA project.
P2P systems and applications have attracted a great deal of attention from computer science research; some prominent research projects include the Chord project, the PAST storage utility, the P-Grid, a self-organized and emerging overlay network and the CoopNet content distribution system (see below for external links related to these projects).
Distributed Hash Table (DHT) networks has been widely utilized for accomplishing efficient resource discovery for Grid computing systems, as it aids in resource management and scheduling of applications. Resource discovery activity involve searching for the appropriate resource types that match the user’s application requirements. Recent advances in the domain of decentralized resource discovery have been based on extending the existing DHTs with the capability of multi-dimensional data organization and query routing. Majority of the efforts have looked at embedding spatial database indices such as the Space Filling Curves (SFCs) including the Hilbert curves, Z-curves, k-d tree, MX-CIF Quad tree and R*-tree for managing, routing, and indexing of complex Grid resource query objects over DHT networks. Spatial indices are well suited for handling the complexity of Grid resource queries. Although some spatial indices can have issues as regards to routing load-balance in case of a skewed data set, all the spatial indices are more scalable in terms of the number of hops traversed and messages generated while searching and routing Grid resource queries.
This may help to:
|Network or Protocol||Use||Applications|
|ANts P2P||File sharing/Software distribution/Media distribution||ANts P2P|
|Ares||File sharing||Ares Galaxy, Warez P2P, KCeasy|
|BitTorrent||File sharing/Software distribution/Media distribution||ABC, AllPeers, Vuze (formerly Azureus), BitComet, BitLord, BitTornado, BitTorrent, Burst!, Deluge, FlashGet, G3 Torrent, Halite, KTorrent, LimeWire, MLDonkey, Opera, Panthera, QTorrent, rTorrent, Shareaza, TorrentFlux, Transmission, Tribler, µTorrent, Thunder|
|Direct Connect||File sharing, chat||DC++, NeoModus Direct Connect, SababaDC, BCDC++, RevConnect, fulDC, LDC++, CzDC, McDC++, DCDM++, DDC++, iDC++, IceDC++, Zion++, R2++, rmDC++, LinuxDC++, LanDC++, ApexDC++, StrongDC++|
|Domain Name System||Internet information retrieval||See Comparison of DNS server software|
|eDonkey||File sharing||aMule, eDonkey2000 (discontinued), eMule, eMule Plus, FlashGet, iMesh, Jubster, lMule, MLDonkey, Morpheus, Panthera, Pruna, Shareaza, xMule|
|FastTrack||File sharing||giFT, Grokster, iMesh (and its variants stripped of adware including iMesh Light), Kazaa (and its variants stripped of adware such as Kazaa Lite), KCeasy, Mammoth, MLDonkey, Poisoned|
|Freenet||Distributed data store||Entropy (on its own network), Freenet|
|GNUnet||File sharing, chat||GNUnet, (GNUnet-gtk)|
|Gnutella||File sharing||Acquisition, BearShare, Cabos,FilesWire,FrostWire, Gnucleus, Grokster, gtk-gnutella, iMesh, Kiwi Alpha, LimeWire, MLDonkey, Morpheus, MP3 Rocket, Panthera, Poisoned, Shareaza, Swapper, XoloX|
|Gnutella2||File sharing||Adagio, Gnucleus, Kiwi Alpha, MLDonkey, Morpheus, Panthera, Shareaza, TrustyFiles|
|JXTA||Peer applications||Collanos Workplace (Teamwork software), Sixearch|
|Kad Network||File sharing||aMule, eMule, MLDonkey|
|KDP and SDDP||File Distribution||Kontiki|
|MANOLITO/MP2P||File sharing||Blubster, Piolet|
|MFPnet||File sharing||amiciPhone (no longer available)|
|Napster||File sharing||Napigator, Napster|
|OpenNap||File sharing||WinMX, Utatane, XNap, Napster|
|P2PTV||Video stream or file sharing||TVUPlayer, Joost, CoolStreaming, Cybersky-TV, TVants, PPLive, LiveStation|
|PDTP||Streaming media or file sharing||PDTP|
|Peercasting||Multicasting streams||PeerCast, IceShare, FreeCast, Rawflow|
|Pichat||Chat, Collaboration||a peer-to-peer chat platform|
|Usenet||Distributed discussion||See list of news clients|
|Windows Peer-to-Peer||Distributed peer application development, collaboration||Shipped with Advanced Networking Pack for Windows XP , Windows XP SP2, Windows Vista. This is a Windows component that runs only over IPv6 and provides a 'meta' peer-to-peer network that applications can utilize. It does not have file sharing support but third-parties can develop one. It also includes the Peer Name Resolution Protocol that allows dynamic domain name publication and resolution of names to endpoints. Windows Meeting Space and the People Near Me feature of Windows Vista use this protocol. It can be used to setup a Windows Internet Computer Name (WICN) using netsh p2p.|
|Applications||Network or Protocol||Operating systems||License|
|aMule||eDonkey network, Kad network||Cross-platform||GPL|
|eMule||eDonkey network, Kad network||Windows||GPL|
|FilesWire||Gnutella, G3||Cross Platform||Proprietary|
|giFT||eDonkey network, FastTrack, Gnutella||Cross-platform||GPL|
|iMesh||FastTrack, eDonkey network, Gnutella, Gnutella2 (All Prior to Version 6.0 Only)||Windows||Proprietary|
|KCeasy||Ares, FastTrack, Gnutella, OpenFT||Windows||GPL|
|Kiwi Alpha||Gnutella, Gnutella2||Windows||Proprietary|
|MLDonkey||BitTorrent, Direct Connect, eDonkey network, FastTrack, Kad Network, OpenNap, SoulSeek, /FTP||Cross-platform||GPL|
|Morpheus||Gnutella, Gnutella2, BitTorrent||Windows||Proprietary|
|Shareaza||Gnutella, Gnutella2, eDonkey, BitTorrent, /FTP||Windows||GPL|
|Vagaa||BitTorrent, eDonkey, Kad||Windows||Proprietary|