Network Computing is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

How To Prevent Peer-to-Peer Network Abuse: Page 4 of 6

Because Gnutella is fully distributed, no node takes precedence over another. In other words, there are no supernodes. Gnutella, therefore, uses more bandwidth since its searches essentially flood the network.

A peer joining the Gnutella network first attempts to connect to many peers, which increases its chances of finding results (see illustration). Typically, a Gnutella client will have about 10 connected peers. As peers join and leave, the Web of connections changes. Although Gnutella clients typically connect on TCP Port 6346, the actual transfers can be on different ports.




Gnutella Connection Methods



Click to Enlarge

First, let's look at how to find a file. When a client begins a search, a query packet is generated. In this packet is a TTL (Time To Live) field. When the query is submitted, the client sends this packet to each of its connected peers, which then decrements the TTL field and forwards the packet on to their peers. This continues until the TTL field reaches zero. If a peer finds a query match, it sends a match packet back to the original peer, following the reverse path of the query packet. The match packet contains all information required to make a direct connection to the file-owning peer. When the original client requests the file, it connects and directly downloads the file, if possible.

If the client cannot contact the peer with the file, perhaps because of a firewall blocking the traffic, it sends a push request that asks the file-owning peer to push the file through the Gnutella network back to the requester. Because the clients are connected to the network, the file can be transferred, but not reliably. Peers constantly connect and disconnect. Therefore, the path between any two nodes could change or be completely lost. Many push requests for large files fail.