Information about Gnutella

Gnutella (pronounced: /nʊˈtɛlə/ with a silent g, or alternatively /gnʊˈtɛlə/) is a file sharing network. As of December 2005, Gnutella was the third-most-popular file sharing network on the Internet, following eDonkey 2000 and FastTrack. In June of 2005, Gnutella's population was 1.81 million computers. [1] With the decline of Fasttrack and the emergence of Bittorrent, Gnutella is feasibly still firmly established as third-largest peer-to-peer network.

History

The first client was developed by Justin Frankel and Tom Pepper of Nullsoft in early 2000, soon after the company's acquisition by AOL. On March 14, the program was made available for download on Nullsoft's servers. The event was prematurely announced on Slashdot, and thousands downloaded the program that day. The source code was to be released later, supposedly under the GNU General Public License (GPL).

The next day, AOL stopped the availability of the program over legal concerns and restrained Nullsoft 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 began to appear. This parallel development of different clients by different groups remains the modus operandi of Gnutella development today.

The Gnutella network is a fully distributed alternative to such semi-centralized systems as FastTrack (KaZaA) and such centralized systems as 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 scalability. In early 2001, variations on the protocol (first implemented in closed-source clients) allowed somewhat of an improvement in scalability. 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 became open source. In February 2002, Morpheus, a commercial file-sharing group, abandoned its FastTrack-based peer-to-peer software and released a new client based on the open source Gnutella client Gnucleus.

The word "Gnutella" today refers not to any one project or piece of software, but to the open protocol used by the various clients. Since various parties are developing new clients, and the protocol will likely continue to evolve, it is hard to say what the word 'Gnutella' will come to mean in the future.

The name is a portmanteau of GNU and Nutella: supposedly, Frankel and Pepper ate a lot of Nutella working on the original project, and intended to license their finished program under the GNU General Public License. Gnutella is not associated with the GNU project;[2] see GNUnet for the GNU project's equivalent.

How it works [3]

To envision how Gnutella originally worked, imagine a large circle of users (called nodes), who each have Gnutella client software. On initial startup, the client software must bootstrap and find at least one other node. Different methods have been used for this, including a pre-existing address list of possibly working nodes shipped with the software, using updated web caches of known nodes (called GWebCaches), UDP host caches and, rarely, even IRC. Once connected, the client will request a list of working addresses. The client will try to connect to the nodes it was shipped with as well as nodes it receives from other clients until it reaches a certain quota. It will only connect to that many nodes, locally cache the addresses it has not yet tried and discarding addresses it tried which were invalid.

Now, when the user wanted to do a search, the client would send the request to each node it is actively connected to. The number of actively connected nodes for a client was usually quite small (around 5), so each node then forwards the request to all the nodes it is connected to, and they in turn forward the request, and so on, until the packet was a predetermined number of "hops" from the sender.

If a search request turns up a result, the node that had the result needs to contact the searcher. In the classic Gnutella protocol response messages were always sent back along the route the query came in through, as the query itself did not contain identifying information of the node. This scheme was later revised, so that search results are delivered over UDP directly to the node which initiated the search, respectively a proxying peer, usually an ultrapeer of the node. The queries do therefore carry the IP address and port number of either node. This lowers the amount of traffic routed through the Gnutella network, making it significantly more scalable.

If the user decides to download the file, they negotiate the file transfer. If the node which has the requested file is not firewalled, the querying node can connect to it directly. However, if the node is firewalled, stopping the source node from receiving incoming connections, the client wanting to download a file will send it a so called "push request" to the server for the remote client to initiate the connection instead (to "push" the file). At first, these push requests were routed along the original chain it used to send the query. This was however rather unreliable because routes would often break and routed packets are always subject to flow control. Therefore so called "push proxies" were introduced. These are usually the ultrapeers of a leaf node and they are announced in search results. The client connects to one of these "push proxies" using a HTTP request and the proxy sends a "push request" to leaf on behalf of the client. Normally, it is also possible to send a push request over UDP to the push proxy which is more efficient than using TCP. Push proxies have two advantages: First, ultrapeer-leaf connections are more stable than routes which makes push requests much more reliable. Second, it reduces the amount of traffic routed through the Gnutella network.

Finally, when a user disconnects, the client software saves the list of nodes that it was actively connected to and those collected from pong packets for use the next time it attempts to connect so that it becomes independent from any kind of bootstrap services.

In practice, this method of searching on the Gnutella network was often unreliable. Each node is a regular computer user; as such, they are constantly connecting and disconnecting, so the network is never completely stable. Also, the bandwidth cost of searching on Gnutella would grow exponentially to the number of connected users [1], often saturating connections rendering slower nodes useless. Therefore, search requests would often be dropped, and most queries reached only a very small percentage of the network. This observation identified the Gnutella network as an unscalable distributed system, and inspired the development of distributed hash tables, which are much more scalable but support only exact-match, rather than keyword, search.

To address the problems of bottlenecks, Gnutella developers implemented a tiered system of ultrapeers and leaves. Instead of all nodes being considered equal, nodes entering into the network were kept at the 'edge' of the network as a leaf, not responsible for any routing, and nodes which were capable of routing messages were promoted to ultrapeers, which would accept leaf connections and route searches and network maintenance messages. This allowed searches to propagate further through the network, and allowed for numerous alterations in the topology which have improved the efficiency and scalability greatly.

Additionally the Gnutella adopted a number of other techniques to reduce traffic overhead and make searches more efficient. Most notable are QRP (Query Routing Protocol) and DQ (Dynamic Querying). With QRP a search reaches only those clients which are likely to have the files, so rare files searches grow vastly more efficient, and with DQ the search stops as soon as the program has acquired enough search results, which vastly reduces the amount of traffic caused by popular searches. Gnutella For Users has a vast amount of information about these and other improvements to Gnutella in user-friendly style.

One of the benefits of having Gnutella so decentralized is to make it very difficult to shut the network down and to make it a network in which the users are the only ones who can decide which content will be available. Unlike Napster, where the entire network relied on the central server, Gnutella cannot be shut down by shutting down any one node and it is impossible for any one company to control the contents of the network, which is also due to the many free software Gnutella clients which share the network.

Protocol features and extensions

Gnutella did once operate on a purely query flooding-based protocol. 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 servents
These are mainly concerned with searching the Gnutella network. File transfers are handled using HTTP.

The development of the Gnutella protocol is currently led 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. These extensions include intelligent query routing, SHA-1 checksums, query hit transmission via UDP, querying via UDP, dynamic queries via TCP, file transfers via UDP, XML meta data, source exchange (also known as "the download mesh") and parallel downloading in slices (swarming).

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 to connect today with the 0.4 handshake and according to developers in the GDF, version 0.6 is what new developers should pursue.

The Gnutella protocol remains under development and in spite of attempts to make a clean break with the complexity inherited from the old Gnutella 0.4 and to design a clean new message architecture, it is still one of the most successful file-sharing protocols to date.

Software

The following tables compare general and technical information for a number of applications supporting the Gnutella network. The tables do not attempt to give a complete list of Gnutella clients. The tables are limited to clients that can participate in the current Gnutella network.

General Specifications

NamePlatformLicenseLast ReleaseHeritage
AcquisitionMac OS XProprietary[ 132.7]  (2006-11-21)LimeWire
ApollonUnix-like/KDEGNU GPL[ 1.0.2.1]  (2005-05-08)giFT
BearFlixMicrosoft WindowsProprietary[ 6.1]  (September 2006)BearShare
BearShare (Before Version 6)Microsoft WindowsProprietary[ 6.1]  (September 2006)Original work
CabosJavaGNU GPL[ 0.7.3]  (2007-07-16)LimeWire
CocoGnutRISC OSFreewareUnknownOriginal Work
DM2Microsoft WindowsFreewareUnknownUnknown
FrostWireJavaGNU GPL[ 4.13.3]  (2007-09-8)LimeWire
FusteenoWeb applicationGNU GPLUnknownOriginal Work
giFTCross-platformGNU GPL[ 0.11.8.1]  (2004-11-27)Original Work
Gnucleus/GnucDNAMicrosoft WindowsGNU GPL, GNU LGPL[ 2.2.0.0]  (2005-06-17)Original Work
Gtk-gnutellaUnix-like, Mac OS XGNU GPL[ 0.96.4]  (2007-07-07)Original Work
iMeshMicrosoft WindowsProprietaryUnknownUnknown
KCeasyMicrosoft WindowsGNU GPL[ 0.18]  (2006-07-17)giFT
Kiwi AlphaMicrosoft WindowsProprietaryUnknownGnucDNA
LimeWireJavaGNU GPL[ 4.14.8]  (2007-08-17)Original Work
MorpheusMicrosoft WindowsProprietary[ 5.4.0]  (2007-02-27)GnucDNA
MP3RocketJavaGNU GPL[ 4.9.5]  (2006-08-14)LimeWire
PhexJavaGNU GPL[ 3.2.0.102]  (2007-07-06)Original Work
PoisonedMac OS XGNU GPL[ 0.5191]  (August 8, 2006)giFT
ShareazaMicrosoft WindowsGNU GPL[ 2.2.1.0.]  (October 26, 2005)Original Work
SymellaSymbian OSGNU GPL[ 1.40]  (2006-11-31)Original Work
XFactorMac OS XGNU GPLUnknowngiFT

Gnutella Features

client Hash search Chat[4] Buddy list Handles big files (>4GB) Unicode UPnP port mapping[5] NAT traversal NAT port mapping RUDP[6] TCP Push proxy UDP Push proxy Ultrapeer GWebCache[7] UDP Host Cache THEX Other
BearShare YesYesYesNoNoYesYesYesYesYes?YesYes?Yes
giFT YesN/AN/ANoNo????Yes[8]NoNo [9]YesNoNo
GnucDNA[10] YesN/AN/A?NoNoNoNoNoYesNoNo <ref name="not_high_out_unusable" />YesNoNo
gtk-gnutella YesNoNoYesYesNoNoNoNoYesYesYesNoYesYesIPv6, TLS
LimeWire Yes [11]YesNoYesYesYesYes[12]NoYesYesYesYesYesYesYesTLS
Phex YesYes???????Yes?YesYesYesYesTLS
Shareaza YesYesNoNoNoYesNoYesNoYesYesNoYesYes[13]Yes

Notes

Gnutella2

Main article: Gnutella2
Gnutella2 is not a successor protocol of Gnutella [14], but rather a fork of the Gnutella protocol which has both advantages and disadvantages compared to Gnutella.[15] A sore point with many Gnutella supporters is that the "Gnutella2" name conveys an upgrade or superiority.[16] [17]

See also

References

1. ^ [2]
2. ^ Regarding Gnutella (www.gnu.org)
3. ^ GDF Working Proposals
4. ^ Refers to client-to-client chat.
5. ^ Automatically configure port forwarding (requires Router with UPnP support)
6. ^ Reliable UDP protocol used for NAT-to-NAT transfers; sometimes called Firewall-to-Firewall
7. ^ The UDP host cache is the preferred bootstrap method.
8. ^ Client only
9. ^ Not high out degree, so unusable in current form.
10. ^ Version 0.9.2.7
11. ^ Via a Kademlia network only supported by LimeWire, completely different from SHA1 searches supported by all other Gnutella clients.
12. ^ Port triggering or firewall to firewall (FW2FW).
13. ^ Since version 2.2.4.0
14. ^ Slyck interviews Greg Blidson of LimeWire on Gnutella2
15. ^ Gnutella and Gnutella2 search methods compared
16. ^ Comments on Gnutella2 disruption of Gnutella WORD DOC
17. ^ Slyck interview with Vincent Falco, creator of BearShare on Gnutella2

External links

Papers on Gnutella and file sharing

International Phonetic Alphabet

Note: This page may contain IPA phonetic symbols in Unicode.

The International
Phonetic Alphabet
History
Nonstandard symbols
Extended IPA
Naming conventions
IPA for English The
..... Click the link for more information.
See Shared resource for the conventional meaning of file sharing
File sharing is the practice of making files available for other users to download over the Internet and smaller networks.
..... Click the link for more information.
20th century - 21st century - 22nd century
1970s  1980s  1990s  - 2000s -  2010s  2020s  2030s
2002 2003 2004 - 2005 - 2006 2007 2008

2005 by topic:
News by month
Jan - Feb - Mar - Apr - May - Jun
..... Click the link for more information.
The eDonkey network (also known as eDonkey2000 network or eD2k) is a decentralized, server-based, peer-to-peer file sharing network used primarily to exchange audio files, video files and computer software.
..... Click the link for more information.
FastTrack is a peer-to-peer (P2P) protocol, used by the Kazaa (and variants, Grokster and iMesh) file sharing programs. The file sharing application Morpheus originally used this network, but was later banished from it.
..... Click the link for more information.
BitTorrent is a peer-to-peer file sharing (P2P) communications protocol. BitTorrent is a method of distributing large amounts of data widely without the original distributor incurring the entire costs of hardware, hosting and bandwidth resources.
..... Click the link for more information.
Justin Frankel is an American computer programmer best known for his work on the Winamp media player application and for inventing the Gnutella peer-to-peer system. He's also the founder of Cockos Incorporated which creates music production and development software such as the
..... Click the link for more information.
Tom Pepper (born August 25, 1975 in Des Moines, Iowa) is a computer programmer best known for his collaboration with Justin Frankel on the invention of the Gnutella peer-to-peer system.
..... Click the link for more information.
Nullsoft is a software house founded in 1997 by Justin Frankel. Its most famous products include the Winamp media player and the SHOUTcast MP3 streaming media server. In recent years, their open source installer system, NSIS, has also risen to popularity as a widely used
..... Click the link for more information.
AOL LLC

Subsidiary of Time Warner
Founded 1985 (as Quantum Computer Services)
Headquarters New York, New York, United States

Key people Randy Falco, Ted Leonsis, Ronald Grant
Industry Internet & Communications
Products Internet service
..... Click the link for more information.
For the Lebanese political coalition, see March 14 Alliance.
March 14 is the 1st day of the year (2nd in leap years) in the Gregorian calendar. There are 0 days remaining.
..... Click the link for more information.

..... Click the link for more information.
source code (commonly just source or code) is any sequence of statements and/or declarations written in some human-readable computer programming language.
..... Click the link for more information.
GNU General Public License
Author: Free Software Foundation
Version: 3
Copyright on the license: Free Software Foundation, Inc.
Publication date: 29 June 2007
OSI approved: Yes
Debian approved: Yes
Free Software:
..... Click the link for more information.
Reverse engineering (RE) is the process of discovering the technological principles of a device or object or system through analysis of its structure, function and operation. It often involves taking something (e.g.
..... Click the link for more information.
Open source is a set of principles and practices that promote access to the design and production of goods and knowledge. The term is most commonly applied to the source code of software that is available to the general public with relaxed or non-existent intellectual property
..... Click the link for more information.
Modus operandi (often used in the abbreviated forms MO, M.O. or simply Method) is a Latin phrase, approximately translated as "mode of operation".[1] The plural is modi operandi ("modes of operation").
..... Click the link for more information.
FastTrack is a peer-to-peer (P2P) protocol, used by the Kazaa (and variants, Grokster and iMesh) file sharing programs. The file sharing application Morpheus originally used this network, but was later banished from it.
..... Click the link for more information.
Kazaa Media Desktop (once capitalized as "KaZaA", but now usually left as "Kazaa") is a peer-to-peer file sharing application using the FastTrack protocol and is owned by Sharman Networks.
..... Click the link for more information.
Napster was a file sharing service that paved the way for decentralized P2P file-sharing programs such as Kazaa, Limewire, iMesh, Morpheus, and BearShare, which are now used for many of the same reasons and can download music, pictures, and other files.
..... Click the link for more information.
Maintainer: Lime Wire LLC

OS: Cross-platform

Use: File sharing
License: Nagware and GPL
Website: [1]
[2]

LimeWire
..... Click the link for more information.
Open source is a set of principles and practices that promote access to the design and production of goods and knowledge. The term is most commonly applied to the source code of software that is available to the general public with relaxed or non-existent intellectual property
..... Click the link for more information.
Maintainer: StreamCast Networks

OS: Windows

Use: P2P
License: Closed source
Website: Official Site

Morpheus is the name of a file sharing and searching peer to peer client for Microsoft Windows, developed and distributed
..... Click the link for more information.
FastTrack is a peer-to-peer (P2P) protocol, used by the Kazaa (and variants, Grokster and iMesh) file sharing programs. The file sharing application Morpheus originally used this network, but was later banished from it.
..... Click the link for more information.
Maintainer: John Marshall

OS: Microsoft Windows

Use: peer to peer
License: GPL
Website: gnucleus.com/Gnucleus/ Gnucleus is a popular Gnutella and Gnutella2 client for Windows, released under the GNU General Public License.
..... Click the link for more information.
A portmanteau (IPA: /pɔərtˈmæntoʊ/) is a word or morpheme that fuses two or more words or word parts to give a combined or loaded meaning.
..... Click the link for more information.
GNU (pronounced ) is a computer operating system composed entirely of free software.
..... Click the link for more information.
Nutella is the brand name of a hazelnut-based sweet spread created by the Italian company Ferrero.

History

Predecessors

Although Nutella was first marketed in 1964, its predecessor — a spread named "Supercrema
..... Click the link for more information.
Nutella is the brand name of a hazelnut-based sweet spread created by the Italian company Ferrero.

History

Predecessors

Although Nutella was first marketed in 1964, its predecessor — a spread named "Supercrema
..... Click the link for more information.
GNU (pronounced ) is a computer operating system composed entirely of free software.
..... Click the link for more information.


This article is copied from an article on Wikipedia.org - the free encyclopedia created and edited by online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of the wikipedia encyclopedia articles provide accurate and timely information please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.
Herod_Archelaus


page counter