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 2001, the Gnutella
client LimeWire, which had driven much of the protocol's development, was
released as open source. 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
* ping: discover hosts on network
* pong: reply to ping
* query: search for a file
* query hit: reply to query
* push: download request (for firewalled servants)
These are mainly concerned with searching the Gnutella network. File
transfers are handled using established HTTP protocols.
The development of Gnutella is leaded nowadays by the GDF (Gnutella
Developer Forum). Many protocol extensions have been and are being
developed, by the software vendors and free gnutella developers of the GDF.
They include intelligent query routing, SHA checksums, parallel downloading
in slices (swarming), etc.
There are efforts to finalize these protocol extensions in the Gnutella 0.6
specification at the Gnutella Protocol Development Website. The Gnutella 0.4
standard although being still the latest protocol specification since all
extensions only exist as proposals so far is outdated. In fact, it is hard
to impossible connecting with the 0.4 handshake.
In January 2003 Shareaza announced the Gnutella2 protocol which uses UDP
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. Gnutella2 (G2) is not supported by
the rest of the "old" Gnutella network and the developers of Gnutella refer
to it as "MP" (Mike's Protocol) because it was never approved by the GDF.
Some popular Gnutella clients are:
* BearShare (Windows)
* Limewire (Cross-Platform in Java)
* Gnucleus (Windows)
* Shareaza (Windows)
* gtk-gnutella (Linux, Unix)
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.
This content from Wikipedia is licensed under the GNU Free Documentation License.
|
|