<<Up     Contents

Gnutella

Gnutella (pronounced with a silent 'g') is a distributed software project to create a true peer-to-peer file sharing network.

The first client was developed by Justin Frankel and Tom Pepper[?] of Nullsoft, a division of AOL, in early 2000. On March 14, the program was made available for download on Nullsoft's servers. The source code was to be relased later, supposedly under the GPL. The event was prematurely announced on Slashdot, and thousands downloaded the program that day.

The next day, AOL stopped the availability of the program over legal concerns and restrained the Nullsoft division from doing any further work on the project. This did not stop Gnutella; after a few days the protocol had been reverse engineered and compatible open source clones started showing up. This parallel development of different clients by different groups remains the modus operandi of Gnutella development today.

The Gnutella network would be a fully distributed alternative to semi-centralized systems like Napster. Initial popularity of the network was spurred on by Napster's threatened legal demise in early 2001. This growing surge in popularity revealed the limits of the initial protocol's scalabilty. In early 2001, variations of the protocol (implemented first in closed source clients) allowed scalabilty to improve somewhat. Instead of treating every user as client and server, some users were now treated as "ultrapeers", routing search requests and responses for users connected to them.

This allowed the network to grow in popularity. In late 2002, the Gnutella client LimeWire, which had driven much of the protocol's development, was released as free software. Morpheus a commercial file sharing group, on 28th Feb 2002 abandoned their FastTrack based peer-to-peer software and released a new client based on the open source Gnutella client Gnucleus.

Sometimes the word 'Gnutella' refers not to a particular project or particular piece of software, but to the open protocol used by various clients. Since new clients are under development all over, and since a new protocol is apparently on the way too, it is hard to say what the word 'Gnutella' will mostly stand for in the future.

The outdated Gnutella version 0.4 network protocol employs five different packet types, namely

These are mainly concerned with searching the Gnutella network. File transfers are handled using established HTTP protocols.

Many protocol extensions have been and are being developed, some by software vendors. They include Ultra-peer, SHA checksums, parallel downloading in slices (swarming), etc.

Also, the 0.4 standard is outdated. In fact, it is hard to impossible connecting with the 0.4 handshake. The development of Gnutella is leaded nowadays by the the_gdf (http://groups.yahoo.com/group/the_gdf) (Gnutella Developer Forum). See their "files" section for material on how to construct a gnutella client.

In January 2003 Shareza has announced the gnutella 2.0 protocol which uses UDP/IP[?] rather then TCP/IP network protocol and includes many of the above mentioned extensions. The draft specification was released by them on March 26, 2003. For details see the Gnutella2 home page (http://www.gnutella2.com/). Gnutella2 (G2) is not supported by the rest of the "old" Gnutella network and the developers of the "old" gnutella refer to it as "MP" (Mike's Protocol)

Some popular Gnutella clients are:

The name is a word play on GNU and Nutella. Supposedly, Frankel and Pepper ate a lot of nutella working on the original project, and they were going to use the GNU GPL license on the finished program. Gnutella is not associated with the GNU project.

See also

wikipedia.org dumped 2003-03-17 with terodump