next up previous contents index
Next: Gnutella Up: Examples on different services Previous: Centralized peer-to-peer: Napster   Contents   Index


Decentralized peer-to-peer: Gnutella

The performance of Napster is superior to that of Gnutella because a central directory server is available. Since legal matters have basically stopped the use of Napster another approach was needed. Both Napster and Gnutella have been used to distribute multimedia illegally over the Internet, but since there is no central point of connectivity in Gnutella it is much harder to shut down.

A host in a Gnutella network is commonly referred to as a servent (note the spelling). This name comes from combining the words server and client. Figure fig:gnutellasession shows when a servent wishes to locate a file and download it. The figure is somewhat simplified since it does not show the actual download. Three hosts reply to the query and the host issuing the query can contact either one, or all of them if it supports swarm downloading. The following steps occur:

Illustration 2.3: Gnutella servent performing a query
Gnutella Session


  1. The servent contacts its neighbours in the Gnutella network and sends the query to these hosts.
  2. The neighbours process the query to see if they have anything that matches the query. If they have, they send a response.
  3. The neighbours send the query to their other neighbours.
  4. These neighbours-of-neighbours repeat the same steps performed by the neighbours.
  5. After a certain number of steps the query stops propagating through the network, due to the expiration of a TTL (time to live) counter.
  6. If the initial servent receives responses it can connect to the host storing the file and request the file using a HTTP GET command.
  7. The host storing the file accepts the connection and responds with the requested file.


next up previous contents index
Next: Gnutella Up: Examples on different services Previous: Centralized peer-to-peer: Napster   Contents   Index
Marcus Bergner 2003-06-10