Gnutella
Encyclopedia
Gnutella is a large peer-to-peer network which, at the time of its creation, was the first decentralized peer-to-peer network of its kind, leading to other, later networks adopting the model. It celebrated a decade
of existence on March 14, 2010 and has a user base in the millions for peer-to-peer file sharing
.
In June 2005, gnutella's population was 1.81 million computers increasing to over three million nodes by January 2006. In late 2007, it was the most popular file sharing network on the Internet with an estimated market share of more than 40%.
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, 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 free and 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 the original 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 proprietary
and closed source
clients) allowed 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 Basic
became free and 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 free and 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.
The name is a portmanteau
of GNU
and Nutella
, the brand name of a hazelnut flavored spread: 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
or its own peer-to-peer network, GNUnet
.
On October 26, 2010, popular free-software gnutella servent
LimeWire
was ordered shut down by Judge Kimba Wood
of the United States District Court for the Southern District of New York
when she signed a Consent Injunction which LimeWire and recording industry plaintiffs had agreed upon. This event may have caused a notable drop in the size of the network because, while negotiating the injunction, LimeWire
had staff add remote shutdown of gnutella access and file transfers as some users installed affected versions. When the injunction came into force versions later than 5.5.10 left the network or were disabled as users started them. The shut down did not affect FrostWire
, a fork of LimeWire made in 2004 that excluded blocking code and adware. Since LimeWire is free software
, nothing prevents people from making additional forks of LimeWire, unaffected by the shut down, if they wished, as long as it does not use LimeWire trademarks.
On November 9, 2010, LimeWire was resurrected by a secret team of developers and dubbed Limewire Pirate Edition
. It was based on LimeWire 5.6 BETA. This version had its server dependencies removed and all the PRO features enabled for free.
. Once connected, the client requests a list of working addresses. The client tries to connect to the nodes it was shipped, as well as nodes it receives from other clients, until it reaches a certain quota. It connects to only that many nodes, locally caches the addresses it has not yet tried, and discards the addresses it tried that were invalid.
When the user wants to do a search, the client sends the request to each actively connected node. In version 0.4 of the protocol, the number of actively connected nodes for a client was quite small (around 5), so each node then forwarded the request to all its actively connected nodes, and they in turn forwarded the request, and so on, until the packet reached a predetermined number of "hops" from the sender (maximum 7).
Since version 0.6, gnutella is a composite network made of leaf nodes and ultra nodes (also called ultrapeers). The leaf nodes are connected to a small number of ultrapeers (typically 3) while each ultrapeer is connected to more than 32 other ultrapeers. With this higher outdegree, the maximum number of "hops" a query can travel was lowered to 4.
Leaves and ultrapeers use the Query Routing Protocol to exchange a Query Routing Table (QRT), a table of 64 Ki-slots and up to 2 Mi-slots consisting of hashed keywords. A leaf node sends its QRT to each of the ultrapeers it is connected to, and ultrapeers merge the QRT of all their leaves (downsized to 128 Ki-slots) plus their own QRT (if they share files) and exchange that with their own neighbours. Query routing is then done by hashing the words of the query and seeing whether all of them match in the QRT. Ultrapeers do that check before forwarding a query to a leaf node, and also before forwarding the query to a peer ultra node provided this is the last hop the query can travel.
If a search request turns up a result, the node that has the result contacts the searcher. In the classic gnutella protocol, response messages were sent back along the route the query came through, as the query itself did not contain identifying information of the node. This scheme was later revised, so that search results now are delivered over User Datagram Protocol
(UDP) directly to the node that initiated the search, usually an ultrapeer of the node. Thus, in the current protocol, the queries 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 sends 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 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 grew exponentially to the number of connected users, often saturating connections and rendering slower nodes useless. Therefore, search requests would often be dropped, and most queries reached only a very small part of the network. This observation identified the gnutella network as an unscalable
distributed system, and inspired the development of distributed hash table
s, 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 gnutella adopted a number of other techniques to reduce traffic overhead and make searches more efficient. Most notable are Query Routing Protocol (QRP) and Dynamic Querying (DQ). 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 company to control the contents of the network, which is also due to the many free and open source
gnutella clients which share the network.
-based protocol. 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 HTTP.
The development of the gnutella protocol is currently led by the Gnutella Developers Forum ("The GDF"). 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 still being the latest protocol specification since all extensions only exist as proposals so far, is outdated. In fact, it is hard or 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 using the work-in-progress specifications.
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.
. A sore point with many gnutella developers is that the "Gnutella2" name conveys an upgrade or superiority, which led to a "Gnutella2 flame war". Other criticism included the use of the gnutella network to bootstrap G2 peers and poor documentation of the G2 protocol. Additionally, the search retries of the Shareaza
client, which was one of the initial G2 clients, could unnecessarily burden the gnutella network.
The fork took place in 2002 and both protocols have undergone significant iterations since that time. G2 has both advantages and disadvantages compared to gnutella. An advantage often cited is Gnutella2's hybrid search is more efficient than the original gnutella query flooding
, which was used in 2002. An advantage for gnutella is its user population numbers in the millions, whereas the G2 network is approximately an order of magnitude smaller. It is difficult to compare the protocols in their current form; the individual client choice will probably have as much an effect to an end user on either network.
Decade
A decade is a period of 10 years. The word is derived from the Ancient Greek dekas which means ten. This etymology is sometime confused with the Latin decas and dies , which is not correct....
of existence on March 14, 2010 and has a user base in the millions for peer-to-peer file sharing
Peer-to-peer file sharing
P2P or Peer-to-peer file sharing allows users to download files such as music, movies, and games using a P2P software client that searches for other connected computers. The "peers" are computer systems connected to each other through internet. Thus, the only requirements for a computer to join...
.
In June 2005, gnutella's population was 1.81 million computers increasing to over three million nodes by January 2006. In late 2007, it was the most popular file sharing network on the Internet with an estimated market share of more than 40%.
History
The first client was developed by Justin FrankelJustin Frankel
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 network...
and Tom Pepper
Tom Pepper
Tom Pepper is a computer programmer best known for his collaboration with Justin Frankel on the invention of the Gnutella peer-to-peer system. He and Frankel co-founded Nullsoft, whose most popular program is Winamp, which was sold to AOL in May 1999...
of Nullsoft
Nullsoft
Nullsoft, Inc. is a software house founded in Sedona, Arizona in 1997 by Justin Frankel. Its most known 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 in popularity as a widely used...
in early 2000, soon after the company's acquisition by AOL
AOL
AOL Inc. is an American global Internet services and media company. AOL is headquartered at 770 Broadway in New York. Founded in 1983 as Control Video Corporation, it has franchised its services to companies in several nations around the world or set up international versions of its services...
. On March 14, the program was made available for download on Nullsoft's servers. The event was prematurely announced on Slashdot
Slashdot
Slashdot is a technology-related news website owned by Geeknet, Inc. The site, which bills itself as "News for Nerds. Stuff that Matters", features user-submitted and ‑evaluated current affairs news stories about science- and technology-related topics. Each story has a comments section...
, and thousands downloaded the program that day. The source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...
was to be released later, under the GNU General Public License
GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....
(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
Reverse engineering
Reverse engineering is the process of discovering the technological principles of a device, object, or system through analysis of its structure, function, and operation...
, and compatible free and open source
Free and open source software
Free and open-source software or free/libre/open-source software is software that is liberally licensed to grant users the right to use, study, change, and improve its design through the availability of its source code...
clones began to appear. This parallel development of different clients by different groups remains the modus operandi
Modus operandi
Modus operandi is a Latin phrase, approximately translated as "mode of operation". The term is used to describe someone's habits or manner of working, their method of operating or functioning...
of gnutella development today.
The gnutella network is a fully distributed alternative to such semi-centralized systems as FastTrack (KaZaA
Kazaa
Kazaa Media Desktop started as a peer-to-peer file sharing application using the FastTrack protocol licensed by Joltid Ltd. and operated as Kazaa by Sharman Networks...
) and the original Napster
Napster
Napster is an online music store and a Best Buy company. It was originally founded as a pioneering peer-to-peer file sharing Internet service that emphasized sharing audio files that were typically digitally encoded music as MP3 format files...
. 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 proprietary
Proprietary software
Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary...
and closed source
Closed source software
Closed source is a term for software released or distributed without the corresponding source code. Generally, it means only the binaries of a computer program are distributed and the license provides no access to the program's source code. The source code of such programs might be regarded as a...
clients) allowed 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 Basic
LimeWire
LimeWire is a free peer-to-peer file sharing client program that runs on Windows, Mac OS X, Linux, and other operating systems supported by the Java software platform. LimeWire uses the gnutella network as well as the BitTorrent protocol. A free software version and a purchasable "enhanced"...
became free and open source. In February 2002, Morpheus
Morpheus (computer program)
Morpheus was a file sharing and searching peer-to-peer client for Microsoft Windows, developed and distributed by the company StreamCast, that originally used the Opennap protocol, but later supported many different peer-to-peer protocols...
, a commercial file sharing group, abandoned its FastTrack-based peer-to-peer software and released a new client based on the free and 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.
The name is a portmanteau
Portmanteau word
A portmanteau or portmanteau word is a blend of two words or morphemes into one new word. A portmanteau word typically combines both sounds and meanings, as in smog, coined by blending smoke and fog. More generally, it may refer to any term or phrase that combines two or more meanings...
of GNU
GNU
GNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...
and Nutella
Nutella
Nutella is the brand name of a chocolate spread. Nutella, manufactured by the Italian company Ferrero, was introduced on the market in 1963. The recipe was developed from an earlier Ferrero spread released in 1944. Nutella is now sold in over 75 countries....
, the brand name of a hazelnut flavored spread: 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
GNU
GNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...
or its own peer-to-peer network, GNUnet
GNUnet
GNUnet is a free software framework for decentralized, peer-to-peer networking. The framework offers link encryption, peer discovery and resource allocation....
.
On October 26, 2010, popular free-software gnutella servent
Servent
In general a servent is a peer-to-peer network node, which has the functionalities of both a server and a client. This is a portmanteau derived from the terms server and client; it is a play on the word "servant"....
LimeWire
LimeWire
LimeWire is a free peer-to-peer file sharing client program that runs on Windows, Mac OS X, Linux, and other operating systems supported by the Java software platform. LimeWire uses the gnutella network as well as the BitTorrent protocol. A free software version and a purchasable "enhanced"...
was ordered shut down by Judge Kimba Wood
Kimba Wood
Kimba Maureen Wood is a United States federal judge for the United States District Court for the Southern District of New York.-Early life and education:...
of the United States District Court for the Southern District of New York
United States District Court for the Southern District of New York
The United States District Court for the Southern District of New York is a federal district court. Appeals from the Southern District of New York are taken to the United States Court of Appeals for the Second Circuit The United States District Court for the Southern District of New York (in case...
when she signed a Consent Injunction which LimeWire and recording industry plaintiffs had agreed upon. This event may have caused a notable drop in the size of the network because, while negotiating the injunction, LimeWire
LimeWire
LimeWire is a free peer-to-peer file sharing client program that runs on Windows, Mac OS X, Linux, and other operating systems supported by the Java software platform. LimeWire uses the gnutella network as well as the BitTorrent protocol. A free software version and a purchasable "enhanced"...
had staff add remote shutdown of gnutella access and file transfers as some users installed affected versions. When the injunction came into force versions later than 5.5.10 left the network or were disabled as users started them. The shut down did not affect FrostWire
FrostWire
FrostWire is a free, open source BitTorrent client first released in September 2004, as a fork of LimeWire. It was initially very similar to LimeWire in appearance and functionality, but over time developers added more features, including BitTorrent support. In version 5, Gnutella support was...
, a fork of LimeWire made in 2004 that excluded blocking code and adware. Since LimeWire is free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
, nothing prevents people from making additional forks of LimeWire, unaffected by the shut down, if they wished, as long as it does not use LimeWire trademarks.
On November 9, 2010, LimeWire was resurrected by a secret team of developers and dubbed Limewire Pirate Edition
LimeWire Pirate Edition
LimeWire Pirate Edition is a resurrected version of the LimeWire software. LPE is the same as the LimeWire Pro software, but without the adware, advertising, and backdoors present in LimeWire. The Ask toolbar integration was also removed along with dependencies to LimeWire servers and remote...
. It was based on LimeWire 5.6 BETA. This version had its server dependencies removed and all the PRO features enabled for free.
Design
To envision how gnutella originally worked, imagine a large circle of users (called nodes), each of whom have gnutella client software. On initial startup, the client software must bootstrap and find at least one other node. Various 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 Gnutella Web Caches), UDP host caches and, rarely, even IRCInternet Relay Chat
Internet Relay Chat is a protocol for real-time Internet text messaging or synchronous conferencing. It is mainly designed for group communication in discussion forums, called channels, but also allows one-to-one communication via private message as well as chat and data transfer, including file...
. Once connected, the client requests a list of working addresses. The client tries to connect to the nodes it was shipped, as well as nodes it receives from other clients, until it reaches a certain quota. It connects to only that many nodes, locally caches the addresses it has not yet tried, and discards the addresses it tried that were invalid.
When the user wants to do a search, the client sends the request to each actively connected node. In version 0.4 of the protocol, the number of actively connected nodes for a client was quite small (around 5), so each node then forwarded the request to all its actively connected nodes, and they in turn forwarded the request, and so on, until the packet reached a predetermined number of "hops" from the sender (maximum 7).
Since version 0.6, gnutella is a composite network made of leaf nodes and ultra nodes (also called ultrapeers). The leaf nodes are connected to a small number of ultrapeers (typically 3) while each ultrapeer is connected to more than 32 other ultrapeers. With this higher outdegree, the maximum number of "hops" a query can travel was lowered to 4.
Leaves and ultrapeers use the Query Routing Protocol to exchange a Query Routing Table (QRT), a table of 64 Ki-slots and up to 2 Mi-slots consisting of hashed keywords. A leaf node sends its QRT to each of the ultrapeers it is connected to, and ultrapeers merge the QRT of all their leaves (downsized to 128 Ki-slots) plus their own QRT (if they share files) and exchange that with their own neighbours. Query routing is then done by hashing the words of the query and seeing whether all of them match in the QRT. Ultrapeers do that check before forwarding a query to a leaf node, and also before forwarding the query to a peer ultra node provided this is the last hop the query can travel.
If a search request turns up a result, the node that has the result contacts the searcher. In the classic gnutella protocol, response messages were sent back along the route the query came through, as the query itself did not contain identifying information of the node. This scheme was later revised, so that search results now are delivered over User Datagram Protocol
User Datagram Protocol
The User Datagram Protocol is one of the core members of the Internet Protocol Suite, the set of network protocols used for the Internet. With UDP, computer applications can send messages, in this case referred to as datagrams, to other hosts on an Internet Protocol network without requiring...
(UDP) directly to the node that initiated the search, usually an ultrapeer of the node. Thus, in the current protocol, the queries carry the IP address
IP address
An Internet Protocol address is a numerical label assigned to each device participating in a computer network that uses the Internet Protocol for communication. An IP address serves two principal functions: host or network interface identification and location addressing...
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
File transfer
File transfer is a generic term for the act of transmitting files over a computer network or the Internet. There are numerous ways and protocols to transfer files over a network. Computers which provide a file transfer service are often called file servers. Depending on the client's perspective the...
. 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 sends 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 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 grew exponentially to the number of connected users, often saturating connections and rendering slower nodes useless. Therefore, search requests would often be dropped, and most queries reached only a very small part of the network. This observation identified the gnutella network as an unscalable
Scalability
In electronics scalability is the ability of a system, network, or process, to handle growing amount of work in a graceful manner or its ability to be enlarged to accommodate that growth...
distributed system, and inspired the development of distributed hash table
Distributed hash table
A distributed hash table is a class of a decentralized distributed system that provides a lookup service similar to a hash table; pairs are stored in a DHT, and any participating node can efficiently retrieve the value associated with a given key...
s, 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 gnutella adopted a number of other techniques to reduce traffic overhead and make searches more efficient. Most notable are Query Routing Protocol (QRP) and Dynamic Querying (DQ). 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
Napster
Napster is an online music store and a Best Buy company. It was originally founded as a pioneering peer-to-peer file sharing Internet service that emphasized sharing audio files that were typically digitally encoded music as MP3 format files...
, 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 company to control the contents of the network, which is also due to the many free and open source
Free and open source software
Free and open-source software or free/libre/open-source software is software that is liberally licensed to grant users the right to use, study, change, and improve its design through the availability of its source code...
gnutella clients which share the network.
Protocol features and extensions
Gnutella did once operate on a purely query floodingQuery flooding
Query flooding is a method to search for a resource on a P2P network. It is simple but scales very poorly and thus is rarely used. Early versions of the Gnutella protocol operated by query flooding; newer versions use more efficient search algorithms....
-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 serventServentIn general a servent is a peer-to-peer network node, which has the functionalities of both a server and a client. This is a portmanteau derived from the terms server and client; it is a play on the word "servant"....
s
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 Gnutella Developers Forum ("The GDF"). 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
User Datagram Protocol
The User Datagram Protocol is one of the core members of the Internet Protocol Suite, the set of network protocols used for the Internet. With UDP, computer applications can send messages, in this case referred to as datagrams, to other hosts on an Internet Protocol network without requiring...
, querying via UDP, dynamic queries via TCP
Transmission Control Protocol
The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite, complementing the Internet Protocol , and therefore the entire suite is commonly referred to as TCP/IP...
, file transfers via UDP, XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....
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 still being the latest protocol specification since all extensions only exist as proposals so far, is outdated. In fact, it is hard or 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 using the work-in-progress specifications.
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.
Gnutella2
The Gnutella2 protocol, often referred to as G2, is, despite its name, not a successor protocol of gnutella, but rather a forkFork (software development)
In software engineering, a project fork happens when developers take a legal copy of source code from one software package and start independent development on it, creating a distinct piece of software...
. A sore point with many gnutella developers is that the "Gnutella2" name conveys an upgrade or superiority, which led to a "Gnutella2 flame war". Other criticism included the use of the gnutella network to bootstrap G2 peers and poor documentation of the G2 protocol. Additionally, the search retries of the Shareaza
Shareaza
Shareaza is a peer-to-peer file sharing client running under Microsoft Windows which supports the gnutella, Gnutella2 , eDonkey, BitTorrent, FTP, HTTP and HTTPS network protocols and handles magnet links, ed2k links, and the now deprecated gnutella and Piolet links...
client, which was one of the initial G2 clients, could unnecessarily burden the gnutella network.
The fork took place in 2002 and both protocols have undergone significant iterations since that time. G2 has both advantages and disadvantages compared to gnutella. An advantage often cited is Gnutella2's hybrid search is more efficient than the original gnutella query flooding
Query flooding
Query flooding is a method to search for a resource on a P2P network. It is simple but scales very poorly and thus is rarely used. Early versions of the Gnutella protocol operated by query flooding; newer versions use more efficient search algorithms....
, which was used in 2002. An advantage for gnutella is its user population numbers in the millions, whereas the G2 network is approximately an order of magnitude smaller. It is difficult to compare the protocols in their current form; the individual client choice will probably have as much an effect to an end user on either network.
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
Name | Platform | License | Latest Release | Heritage |
---|---|---|---|---|
Acquisition Acquisition (software) Acquisition is a Gnutella-based peer-to-peer client that is also capable of supporting BitTorrent designed specifically for Mac OS X. It is based on LimeWire and is a shareware product, priced from $25... |
Mac OS X Mac OS X Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems... |
Proprietary Proprietary software Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary... |
LimeWire LimeWire LimeWire is a free peer-to-peer file sharing client program that runs on Windows, Mac OS X, Linux, and other operating systems supported by the Java software platform. LimeWire uses the gnutella network as well as the BitTorrent protocol. A free software version and a purchasable "enhanced"... |
|
BearFlix | Microsoft Windows Microsoft Windows Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal... |
Proprietary Proprietary software Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary... |
6.2.2.521 | BearShare BearShare BearShare is a peer-to-peer file sharing application originally created by Free Peers, Inc. for Microsoft Windows, and now sold by MusicLab, LLC .- History :... |
BearShare BearShare BearShare is a peer-to-peer file sharing application originally created by Free Peers, Inc. for Microsoft Windows, and now sold by MusicLab, LLC .- History :... (Before Version 6) |
Microsoft Windows Microsoft Windows Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal... |
Proprietary Proprietary software Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary... |
5.2.5.6 | Original work |
Cabos Cabos Cabos is a free gnutella file sharing program. It is based on LimeWire's source code, and has a similar feel in terms of interface. However, it lacks the chat and library features found in LimeWire... |
Java | GNU GPL | LimeWire LimeWire LimeWire is a free peer-to-peer file sharing client program that runs on Windows, Mac OS X, Linux, and other operating systems supported by the Java software platform. LimeWire uses the gnutella network as well as the BitTorrent protocol. A free software version and a purchasable "enhanced"... |
|
FilesWire FilesWire FilesWire is a Web-based peer-to-peer file sharing client for the Java Platform, which uses a combination of the G3 network and the Gnutella network to locate files as well as share files... (P2P) |
Java | Proprietary Proprietary software Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary... |
Beta 1.1 (2007) | Original Work |
FrostWire FrostWire FrostWire is a free, open source BitTorrent client first released in September 2004, as a fork of LimeWire. It was initially very similar to LimeWire in appearance and functionality, but over time developers added more features, including BitTorrent support. In version 5, Gnutella support was... (Before Version 5) |
Java | GNU GPL | LimeWire LimeWire LimeWire is a free peer-to-peer file sharing client program that runs on Windows, Mac OS X, Linux, and other operating systems supported by the Java software platform. LimeWire uses the gnutella network as well as the BitTorrent protocol. A free software version and a purchasable "enhanced"... |
|
giFT GiFT giFT Internet File Transfer is a computer software daemon that allows several file sharing protocols to be used with a simple client having a graphical user interface... (Gnutella plug-in) |
Cross-platform Cross-platform In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms... |
GNU GPL | 0.0.11 (2006-08-06) | Original Work |
Gnucleus/GnucDNA GnucDNA GnucDNA is a software library for building peer-to-peer applications. It provides developers with a common layer to create their own Gnutella and/or Gnutella2 client or network... |
Microsoft Windows Microsoft Windows Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal... |
GNU GPL, GNU LGPL | Original Work | |
gtk-gnutella Gtk-gnutella gtk-gnutella is a peer-to-peer file sharing application which runs on the gnutella network. gtk-gnutella uses the GTK+ toolkit for its graphical user interface. Released under the GNU General Public License, gtk-gnutella is free software.- History :... |
Cross-platform Cross-platform In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms... |
GNU GPL | Original Work | |
iMesh IMesh iMesh is a media and file sharing client that's available in 9 languages. It uses a proprietary, centralized, P2P network operating on ports 80, 443 and 1863. iMesh is owned by an American company iMesh, Inc. and maintains a development center in Israel... (Before Version 6) |
Microsoft Windows Microsoft Windows Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal... |
Unknown | GnucDNA GnucDNA GnucDNA is a software library for building peer-to-peer applications. It provides developers with a common layer to create their own Gnutella and/or Gnutella2 client or network... |
|
KCeasy | Microsoft Windows Microsoft Windows Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal... |
GNU GPL | giFT GiFT giFT Internet File Transfer is a computer software daemon that allows several file sharing protocols to be used with a simple client having a graphical user interface... |
|
Kiwi Alpha | Microsoft Windows Microsoft Windows Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal... |
Unknown | GnucDNA GnucDNA GnucDNA is a software library for building peer-to-peer applications. It provides developers with a common layer to create their own Gnutella and/or Gnutella2 client or network... |
|
LimeWire LimeWire LimeWire is a free peer-to-peer file sharing client program that runs on Windows, Mac OS X, Linux, and other operating systems supported by the Java software platform. LimeWire uses the gnutella network as well as the BitTorrent protocol. A free software version and a purchasable "enhanced"... |
Java | GNU GPL | Original Work | |
Morpheus Morpheus (computer program) Morpheus was a file sharing and searching peer-to-peer client for Microsoft Windows, developed and distributed by the company StreamCast, that originally used the Opennap protocol, but later supported many different peer-to-peer protocols... |
Microsoft Windows Microsoft Windows Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal... |
Proprietary Proprietary software Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary... |
GnucDNA GnucDNA GnucDNA is a software library for building peer-to-peer applications. It provides developers with a common layer to create their own Gnutella and/or Gnutella2 client or network... |
|
MP3 Rocket MP3 Rocket MP3 Rocket is a YouTube downloader that allows users to download videos and music from YouTube.Released under the GNU General Public License, MP3 Rocket is free software. It also encourages the user to pay a fee, which will then give the user access to MP3 Rocket PRO.- History :The MP3 Rocket... (before Jan 2011) |
Java | GNU GPL | LimeWire LimeWire LimeWire is a free peer-to-peer file sharing client program that runs on Windows, Mac OS X, Linux, and other operating systems supported by the Java software platform. LimeWire uses the gnutella network as well as the BitTorrent protocol. A free software version and a purchasable "enhanced"... |
|
Phex Phex - External links :* * * * at SourceForge.net* at *... |
Java | GNU GPL | Original Work | |
Poisoned | Mac OS X Mac OS X Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems... |
GNU GPL | giFT GiFT giFT Internet File Transfer is a computer software daemon that allows several file sharing protocols to be used with a simple client having a graphical user interface... |
|
Shareaza Shareaza Shareaza is a peer-to-peer file sharing client running under Microsoft Windows which supports the gnutella, Gnutella2 , eDonkey, BitTorrent, FTP, HTTP and HTTPS network protocols and handles magnet links, ed2k links, and the now deprecated gnutella and Piolet links... |
Microsoft Windows Microsoft Windows Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal... |
GNU GPL | Original Work | |
Symella Symella Symella is a Gnutella file-sharing client for Symbian S60 smartphones. It is available for mobile devices based on the S60 Platform 2nd and 3rd edition, but 1st and 5th edition of S60 are not currently supported. Plans have been announced to develop a version for S60 v5... |
Symbian OS | GNU GPL | Original Work | |
Zultrax Zultrax Zultrax is a multi-network peer-to-peer application. Supported networks are ZEPP and gnutella. Zultrax runs under the Microsoft Windows operating system.... |
Microsoft Windows Microsoft Windows Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal... |
Proprietary Proprietary software Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary... |
4.33 (April 2009) | Original Work |
Gnutella features
Client | Hash search | Buddy list | Handles large files (> 4 GiB Gib Gib may refer to:* A castrated male cat or ferret* Gibibit , measurement unit of digitally stored computer information* Gibraltar, British overseas territory* Drywall, construction material... ) |
Unicode-compatible Query Routing | NAT traversal NAT traversal NAT traversal is a general term for techniques that establish and maintain Internet protocol connections traversing network address translation gateways. Network address translation breaks end-to-end connectivity. Intercepting and modifying traffic can only be performed transparently in the... |
NAT port mapping NAT Port Mapping Protocol NAT Port Mapping Protocol is an Internet Engineering Task Force Internet Draft, introduced by Apple Computer as an alternative to the more common Internet Gateway Device Standardized Device Control Protocol implemented in many network address translation routers. It was introduced in June 2005... |
TCP Push proxy | UDP Push proxy | Ultrapeer | UDP Host Cache | THEX | TLS Transport Layer Security Transport Layer Security and its predecessor, Secure Sockets Layer , are cryptographic protocols that provide communication security over the Internet... |
Other | |||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BearShare BearShare BearShare is a peer-to-peer file sharing application originally created by Free Peers, Inc. for Microsoft Windows, and now sold by MusicLab, LLC .- History :... |
- | |||||||||||||||||
giFT GiFT giFT Internet File Transfer is a computer software daemon that allows several file sharing protocols to be used with a simple client having a graphical user interface... (core & plug-ins) |
- | |||||||||||||||||
GnucDNA GnucDNA GnucDNA is a software library for building peer-to-peer applications. It provides developers with a common layer to create their own Gnutella and/or Gnutella2 client or network... |
- | |||||||||||||||||
gtk-gnutella Gtk-gnutella gtk-gnutella is a peer-to-peer file sharing application which runs on the gnutella network. gtk-gnutella uses the GTK+ toolkit for its graphical user interface. Released under the GNU General Public License, gtk-gnutella is free software.- History :... |
(Dropped) | IPv6 IPv6 Internet Protocol version 6 is a version of the Internet Protocol . It is designed to succeed the Internet Protocol version 4... , DHT Distributed hash table A distributed hash table is a class of a decentralized distributed system that provides a lookup service similar to a hash table; pairs are stored in a DHT, and any participating node can efficiently retrieve the value associated with a given key... , GUESS |
||||||||||||||||
LimeWire LimeWire LimeWire is a free peer-to-peer file sharing client program that runs on Windows, Mac OS X, Linux, and other operating systems supported by the Java software platform. LimeWire uses the gnutella network as well as the BitTorrent protocol. A free software version and a purchasable "enhanced"... |
DHT Distributed hash table A distributed hash table is a class of a decentralized distributed system that provides a lookup service similar to a hash table; pairs are stored in a DHT, and any participating node can efficiently retrieve the value associated with a given key... |
|||||||||||||||||
Phex Phex - External links :* * * * at SourceForge.net* at *... |
I2P I2P I2P is a mixed-license, free and open source project building an anonymous network .The network is a simple layer that applications can use to anonymously and securely send... |
|||||||||||||||||
Shareaza Shareaza Shareaza is a peer-to-peer file sharing client running under Microsoft Windows which supports the gnutella, Gnutella2 , eDonkey, BitTorrent, FTP, HTTP and HTTPS network protocols and handles magnet links, ed2k links, and the now deprecated gnutella and Piolet links... |
G2 Gnutella2 Gnutella2, often referred to as G2, is a peer-to-peer protocol developed mainly by Michael Stokes and released in 2002. While inspired by the gnutella protocol, G2 shares little of its design with the exception of its connection handshake and download mechanics. It adopts an extensible binary... , BT, eD2k EDonkey network The eDonkey network is a decentralized, mostly server-based, peer-to-peer file sharing network best suited to share big files among users, and to provide long term availability of files... , IRC |
External links
- Gnutella Protocol Development Wiki
- GnuFU, "Gnutella For Users: A description of the inner workings of the gnutella network in User-Friendly Style"
- Regarding Gnutella by GNU