Most people automatically think of file sharing when they hear the term peer-to-peer. However, in the purest sense of the term, peer-to-peer is a system-design model in which a given individual can contact any other. The peer-to-peer model has been used for a variety of applications, including IM (instant messaging), VoIP (voice over IP) and, of course, file sharing. Certain implementations of grid computing and clustering could even be considered peer-to-peer. IM and VoIP are relatively simple to block, because they typically use well-known ports and usually don't have the resources to work around firewalls.
File-sharing applications, however, come in a variety of iterations. There's built-in file sharing in Windows and Mac OS; NFS (Network File System); AFS (Andrew File System, a worldwide file system); and peer-to-peer applications, such as Gnutella and Napster. Peer-to-peer differs from the typical client-server model because a node in a peer-to-peer system can be a client and a server. The client-server roles are not separated onto different nodes.
Applications By P2P Protocol
Click to Enlarge
Some peer-to-peer models, such as FastTrack, which is used by Kazaa and Grokster, use encrypted communications, while others are completely unsecured. Some protocols are entirely decentralized, while others are fully centralized. Some even use a mix of centralized and decentralized setups by employing supernodes or group leaders. Finally, as with many protocols, some are open, letting more client applications be written for them, while others are closed, limiting who can create applications to access the network. The five most popular protocols are compared in the chart below. We'll discuss FastTrack, Gnutella and BitTorrent in more depth.