From P2P to Web Services and Grids: Peers in a Client/Server World

Gnutella defined and popularised modern P2P technology through its truly decentralized design and implementation. It arrived right around the time when centrally organized solutions were being targeted and provided a mechanism that offered a much more tolerant structure, where no single entity could be isolated to bring down the entire network. The Gnutella network consists of thousands of information providers, which are not indexed in a central place. Therefore, to shut down such the network is not trivial since a vast number of peers (i.e., many hundreds) would have to be eliminated.
This chapter provides an overview of the original 0.4 version of the Gnutella network. It combines a conceptual overview and a user-friendly rewrite of the Gnutella protocol specification [47]. An historical perspective is provided, along with usage scenarios, which include joining and searching the Gnutella network. This is followed by a detailed account of its protocol specification that provides the fundamental information required for a competent programmer to build a Gnutella network from scratch.
Gnutella was born sometime in early March 2000. Justin Frankel and Tom Pepper, working under the dot-com pen name of Gnullsoft [9], are Gnutella's inventors. Their last life-changing product, Winamp [7], was the beginning of a company called NullSoft [8], which was purchased by America Online (AOL) in 1999. Winamp was developed for playing music files. According to Tom Pepper, Gnutella was developed primarily to share cooking recipes.
Gnutella was developed in just fourteen days by two guys without...