Gnutella (pronounced /nʊˈtɛlə/ with a silent g, or alternatively /gnʊˈtɛlə/) is a file sharing network. See Shared resource for the conventional meaning of file sharing File sharing refers to the providing and receiving of digital files over a Gnutella is the most popular file sharing network on the Internet with a market share of more than 40%. [1] In June of 2005, Gnutella's population was 1. 81 million computers. [2]
Contents |
The first client was developed by Justin Frankel and Tom Pepper of Nullsoft in early 2000, soon after the company's acquisition by AOL. Justin Frankel (born 1978 is an American computer programmer best known for his work on the Winamp media player application and for inventing the Tom Pepper (born August 25, 1975 in Des Moines, Iowa) is a computer programmer best known for his collaboration with Justin Frankel Nullsoft Inc is a Software house founded in 1997 by Justin Frankel. On March 14, the program was made available for download on Nullsoft's servers. Events 1489 - The Queen of Cyprus, Catherine Cornaro, sells her kingdom to Venice. The event was prematurely announced on Slashdot, and thousands downloaded the program that day. Slashdot, often abbreviated as /, is a technology-related news Website owned by SourceForge Inc The source code was to be released later, supposedly under the GNU General Public License (GPL). In Computer science, source code (commonly just source or code) is any sequence of statements or declarations written in some Human-readable
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. Reverse engineering (RE is the process of discovering the technological principles of a device object or system through analysis of its structure function and operation Free software or software libre is Software that can be used studied and modified without restriction and which can be copied and redistributed in modified or unmodified Open source software (OSS began as a marketing campaign for Free software. This parallel development of different clients by different groups remains the modus operandi of Gnutella development today. Modus operandi (often used in the abbreviated forms MO or simply Method) is a Latin phrase approximately translated as " mode of operation
The Gnutella network is a fully distributed alternative to such semi-centralized systems as FastTrack (KaZaA) and such centralized systems as Napster. FastTrack is a Peer-to-peer (P2P protocol, used by the Kazaa (and variants Grokster and IMesh) File sharing programs Kazaa Media Desktop (once capitalized as " KaZaA " but now usually written " Kazaa " is a Peer-to-peer File sharing application Napster was an online music file sharing service created by Shawn Fanning while he was attending Northeastern University in Boston and operating 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 somewhat of an improvement in scalability. Proprietary software is Computer software on which the producer has set restrictions on use private modification copying, or republishing. Proprietary software is Computer software on which the producer has set restrictions on use private modification copying, or republishing. 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 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. Morpheus was a File sharing and searching peer to peer client for Microsoft Windows, developed and distributed by the company StreamCast, that FastTrack is a Peer-to-peer (P2P protocol, used by the Kazaa (and variants Grokster and IMesh) File sharing programs Gnucleus is a Gnutella and Gnutella2 client for Microsoft Windows, released under the GNU General Public License.
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 blend 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. In Linguistics, a blend is a word formed from parts of two other words GNU ( pronounced) is a computer Operating system composed entirely of Free software. Nutella is the Brand name of a Hazelnut -based sweet spread created by the Italian company Ferrero in the 1940s Nutella is the Brand name of a Hazelnut -based sweet spread created by the Italian company Ferrero in the 1940s Gnutella is not associated with the GNU project;[3] see GNUnet for the GNU project's equivalent. GNU ( pronounced) is a computer Operating system composed entirely of Free software. GNUnet is a Free software framework for decentralized, Peer-to-peer networking.
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. In computing bootstrapping ("to pull oneself up by one's bootstraps" refers to techniques that allow a simple system to activate a more complicated system 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. File transfer is a generic term for the act of transmitting files over a Computer network or the Internet. If the node which has the requested file is not firewalled, the querying node can connect to it directly. A firewall is an integrated collection of security measures designed to prevent unauthorized electronic access to a networked computer system 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. In Telecommunications and Software engineering, scalability is a desirable property of a system a network or a process which indicates its ability to either Distributed hash tables ( DHTs) are a class of decentralized distributed systems that provide a lookup service similar to a Hash table: ( name,
To address the problems of bottlenecks, Gnutella developers implemented a tiered system of ultrapeers and leaves. In Engineering, bottleneck is a phenomenon by which the performance or capacity of an entire system is severely limited by a single component 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. Napster was an online music file sharing service created by Shawn Fanning while he was attending Northeastern University in Boston and operating
Gnutella did once operate on a purely query flooding-based protocol. Query flooding is a method to search for a resource on a P2P network. The outdated Gnutella version 0. 4 network protocol employs five different packet types, namely
These are mainly concerned with searching the Gnutella network. In computing, a protocol is a convention or standard that controls or enables the connection Communication, and Data transfer between two computing In general a servent is a Peer-to-peer network node, which has the functionalities of both a server and a client. File transfers are handled using HTTP. Hypertext Transfer Protocol ( HTTP) is a Communications protocol for the transfer of information on the Internet.
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). User Datagram Protocol ( UDP) is one of the core protocols of the Internet Protocol Suite. The Transmission Control Protocol (TCP is one of the core protocols of the Internet Protocol Suite. Don't change "Extensible"
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.
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. Many projects have attempted to use the Gnutella network since its introduction in early 2000 The tables are limited to clients that can participate in the current Gnutella network.
| Name | Platform | License | Last Release | Heritage |
|---|---|---|---|---|
| Acquisition | Mac OS X | 2.0 (build 209) (2008-05-14) | LimeWire | |
| Apollon | Unix-like/KDE | GNU GPL | 1.0.2.1 (2005-05-08) | giFT |
| BearFlix | Microsoft Windows | 6.1 (September 2006) | BearShare | |
| BearShare (Before Version 6) | Microsoft Windows | 5. Acquisition is a Gnutella -based Peer-to-peer and BitTorrent client for Mac OS X. Mac OS X (mæk oʊ ɛs tɛn is a line of computer Operating systems developed marketed and sold by Apple Inc, the latest of which is pre-loaded on all currently 2008 ( MMVIII) is the current year in accordance with the Gregorian calendar, a Leap year that started on Tuesday of the Common Events 1264 - Battle of Lewes: Henry III of England is captured in France making Simon de Montfort the A Unix-like (sometimes shortened to *nix) Operating system is one that behaves in a manner similar to a Unix system while not necessarily conforming KDE ( K Desktop Environment) (ˌkeɪdiːˈiː is a Free software project which aims to be a powerful system for an easy-to-use Desktop environment. Year 2005 ( MMV) was a Common year starting on Saturday (link displays full calendar of the Gregorian calendar. Events 589 - Reccared summons the Third Council of Toledo 1450 - Jack Cade's Rebellion: Kentishmen giFT Internet File Transfer ( giFT) is a computer software daemon that allows several File sharing protocols to be used with a simple client having a Microsoft Windows is a series of Software Operating systems and Graphical user interfaces produced by Microsoft. Microsoft Windows is a series of Software Operating systems and Graphical user interfaces produced by Microsoft. 2. 5. 3 | Original work | |
| Cabos | Java | GNU GPL | 0.7.8 (2008-01-14) | LimeWire |
| FrostWire | Java | GNU GPL | 4.13.5 (February 28, 2008) | LimeWire |
| giFT | Cross-platform | GNU GPL | 0.11.8.1 (2004-11-27) | Original Work |
| Gnucleus/GnucDNA | Microsoft Windows | GNU GPL, GNU LGPL | 2.2.0.0 (2005-06-17) | Original Work |
| Gtk-gnutella | Unix-like, Mac OS X | GNU GPL | 0.96.5 (2008-04-02) | Original Work |
| iMesh | Microsoft Windows | Unknown | Unknown | |
| KCeasy | Microsoft Windows | GNU GPL | 0.19-rc1 (2008-02-03) | giFT |
| Kiwi Alpha | Microsoft Windows | Unknown | GnucDNA | |
| LimeWire | Java | GNU GPL | 4. 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 Java refers to a number of Computer software products and specifications from Sun Microsystems that together provide a system for developing Application software 2008 ( MMVIII) is the current year in accordance with the Gregorian calendar, a Leap year that started on Tuesday of the Common Events 1129 - Formal approval of the Order of the Templar at the Council of Troyes. FrostWire is a Peer-to-peer File sharing program for the Gnutella and BitTorrent protocols Java refers to a number of Computer software products and specifications from Sun Microsystems that together provide a system for developing Application software Events 202 BC - coronation ceremony of Liu Bang as Emperor Gaozu of Han takes place initiating four centuries of the Han Dynasty 's rule 2008 ( MMVIII) is the current year in accordance with the Gregorian calendar, a Leap year that started on Tuesday of the Common giFT Internet File Transfer ( giFT) is a computer software daemon that allows several File sharing protocols to be used with a simple client having a In computing cross-platform (also known as multi-platform) is a term used to refer to Computer software or computing methods and concepts that are implemented "MMIV" redirects here For the Modest Mouse album see " Baron von Bullshit Rides Again " Events 1095 - Pope Urban II declares the First Crusade at the Council of Clermont Gnucleus is a Gnutella and Gnutella2 client for Microsoft Windows, released under the GNU General Public License. GnucDNA is a software library for building peer-to-peer applications Microsoft Windows is a series of Software Operating systems and Graphical user interfaces produced by Microsoft. The GNU Lesser General Public License (formerly the GNU Library General Public License) or LGPL is a Free software license published by the Free Software Year 2005 ( MMV) was a Common year starting on Saturday (link displays full calendar of the Gregorian calendar. Events 1462 - Vlad III the Impaler attempts to assassinate Mehmed II ( The Night Attack) forcing him to retreat gtk-gnutella is a Peer-to-peer file sharing application for Unix-like computer Operating systems which runs on the Gnutella network A Unix-like (sometimes shortened to *nix) Operating system is one that behaves in a manner similar to a Unix system while not necessarily conforming Mac OS X (mæk oʊ ɛs tɛn is a line of computer Operating systems developed marketed and sold by Apple Inc, the latest of which is pre-loaded on all currently 2008 ( MMVIII) is the current year in accordance with the Gregorian calendar, a Leap year that started on Tuesday of the Common Events 68 - Galba, Governor of Hispania, names himself legatus senatus populique Romani, breaking the line of iMesh is a File sharing and Online social network, available to download in 9 languages and uses a proprietary centralized P2P protocol operating on ports Microsoft Windows is a series of Software Operating systems and Graphical user interfaces produced by Microsoft. KCeasy is a Windows Peer-to-peer Filesharing application which uses GiFT as its 'back-end' foundation Microsoft Windows is a series of Software Operating systems and Graphical user interfaces produced by Microsoft. 2008 ( MMVIII) is the current year in accordance with the Gregorian calendar, a Leap year that started on Tuesday of the Common Events 1112 - Ramon Berenguer III of Barcelona and Douce I of Provence marry uniting the fortunes of those two states giFT Internet File Transfer ( giFT) is a computer software daemon that allows several File sharing protocols to be used with a simple client having a Kiwi Alpha is a File sharing Peer-to-peer file sharing application that connects to the Gnutella and Gnutella2 networks by use of GnucDNA Microsoft Windows is a series of Software Operating systems and Graphical user interfaces produced by Microsoft. GnucDNA is a software library for building peer-to-peer applications Java refers to a number of Computer software products and specifications from Sun Microsystems that together provide a system for developing Application software 18. 2 | Original Work |
| Morpheus | Microsoft Windows | 5.5.1 (2007-11-15) | GnucDNA | |
| MP3 Rocket | Java | GNU GPL | 5.0.3 (February 28, 2008) | LimeWire |
| Phex | Java | GNU GPL | 3.2.0.102 (2007-07-06) | Original Work |
| Poisoned | Mac OS X | GNU GPL | 0.5191 (August 8, 2006) | giFT |
| Shareaza | Microsoft Windows | GNU GPL | 2.3.1.0 (January 31, 2008) | Original Work |
| Symella | Symbian OS | GNU GPL | 1.40 (2006-11-31) | Original Work |
| XFactor | Mac OS X | GNU GPL | Unknown | giFT |
| Client | Hash search | Chat[›] | Buddy list | Handles big files (>4GB) | Unicode-compatible Query Routing | UPnP port mapping[›] | NAT traversal | NAT port mapping | RUDP[›] | TCP Push proxy | UDP Push proxy | Ultrapeer | GWebCache[›] | UDP Host Cache | THEX | TLS | Other | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BearShare | Yes | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | ? | Yes | Yes | No | Yes | No | - | |
| giFT | Yes | N/A | N/A | No | No | ? | ? | ? | No | Yes a[›] | No | No b[›] | Yes | No | No | No | - | |
| GnucDNA c[›] | Yes | N/A | N/A | ? | No | No | No | No | No | Yes | No | No b[›] | Yes | No | No | No | - | |
| gtk-gnutella | Yes | No | No | Yes | Yes | No | Yes | No | No | Yes | Yes | Yes | No | Yes | Yes | Yes | IPv6 | |
| LimeWire | Yes d[›] | Yes | No | Yes | Yes | Yes | Yes e[›] | Yes g[›] | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | ||
| Phex | Yes | Yes | ? | ? | ? | ? | ? | ? | ? | Yes | ? | Yes | Yes | Yes | Yes | Yes | ||
| Shareaza | Yes | Yes | Yes | No | No | Yes | Yes | Yes | No | Yes | Yes | No | Yes | Yesf[›] | Yes | No | - | |
^ Chat: It refers to client-to-client chat. Morpheus was a File sharing and searching peer to peer client for Microsoft Windows, developed and distributed by the company StreamCast, that Microsoft Windows is a series of Software Operating systems and Graphical user interfaces produced by Microsoft. Year 2007 ( MMVII) was a Common year starting on Monday of the Gregorian calendar in the 21st century. Events 655 - Battle of Winwaed: Penda of Mercia is defeated by Oswiu of Northumbria. GnucDNA is a software library for building peer-to-peer applications MP3 Rocket is a client for the Java platform, which uses the Gnutella network to locate files Java refers to a number of Computer software products and specifications from Sun Microsystems that together provide a system for developing Application software Phex is a Peer-to-peer File sharing client for the Gnutella network Java refers to a number of Computer software products and specifications from Sun Microsystems that together provide a system for developing Application software Year 2007 ( MMVII) was a Common year starting on Monday of the Gregorian calendar in the 21st century. Events 1044 - The Battle of Ménfő takes place 1189 - Richard the Lionheart is crowned King of England Poisoned is a free Peer-to-peer File sharing client for Mac OS X, whose name is an allusion to the German word Gift Mac OS X (mæk oʊ ɛs tɛn is a line of computer Operating systems developed marketed and sold by Apple Inc, the latest of which is pre-loaded on all currently Events 1220 - Sweden is defeated by Estonian tribes in the Battle of Lihula. Year 2006 ( MMVI) was a Common year starting on Sunday of the Gregorian calendar. giFT Internet File Transfer ( giFT) is a computer software daemon that allows several File sharing protocols to be used with a simple client having a Shareaza is a Peer-to-peer file sharing client which supports the Gnutella, Gnutella2, EDonkey Network, BitTorrent, FTP Microsoft Windows is a series of Software Operating systems and Graphical user interfaces produced by Microsoft. Events 1504 - France cedes Naples to Aragon. 1606 - Gunpowder Plot: Guy Fawkes 2008 ( MMVIII) is the current year in accordance with the Gregorian calendar, a Leap year that started on Tuesday of the Common Symella is a Gnutella file-sharing client for Symbian Smartphones. Symbian OS is an open Operating system, designed for Mobile devices with associated libraries, User interface frameworks and Year 2006 ( MMVI) was a Common year starting on Sunday of the Gregorian calendar. Events in November All Saints' Day (formerly All Hallows Day a Christian holy day is celebrated on November 1, the day after Halloween XFactor was a commercial Gnutella client for Mac OS X (US$495 as of June 2006 Mac OS X (mæk oʊ ɛs tɛn is a line of computer Operating systems developed marketed and sold by Apple Inc, the latest of which is pre-loaded on all currently giFT Internet File Transfer ( giFT) is a computer software daemon that allows several File sharing protocols to be used with a simple client having a NAT traversal is a general term for techniques to establish and maintain TCP/IP network connections which traverse Network address translation (NAT gateways NAT Port Mapping Protocol (NAT-PMP is an Internet Engineering Task Force Internet Draft, introduced by Apple Computer as an alternative to the more common Transport Layer Security ( TLS) and its predecessor Secure Sockets Layer ( SSL) are Cryptographic protocols that provide secure giFT Internet File Transfer ( giFT) is a computer software daemon that allows several File sharing protocols to be used with a simple client having a GnucDNA is a software library for building peer-to-peer applications gtk-gnutella is a Peer-to-peer file sharing application for Unix-like computer Operating systems which runs on the Gnutella network Internet Protocol version 6 ( IPv6) is an Internet Layer protocol for packet -switched internetworks. Phex is a Peer-to-peer File sharing client for the Gnutella network Shareaza is a Peer-to-peer file sharing client which supports the Gnutella, Gnutella2, EDonkey Network, BitTorrent, FTP
^ UPnP port mapping: Automatically configure port forwarding (requires Router with UPnP support)
^ RUDP: Reliable UDP protocol used for NAT-to-NAT transfers; sometimes called Firewall-to-Firewall
^ GWebCache: The UDP host cache is the preferred bootstrap method.
^ a: Client only
^ b: Not high out degree, so unusable in current form.
^ c: Version 0. 9. 2. 7
^ d: Via a Kademlia network only supported by LimeWire, completely different from SHA1 searches supported by all other Gnutella clients. Kademlia is a Distributed hash table for decentralized Peer to peer Computer networks designed by Petar Maymounkov and David Mazières
^ e: Port triggering or firewall to firewall (FW2FW).
^ f: Since vesion 2. 2. 4. 0
^ g: Automatic with UPnP, or manual configuration in LimeWire firewall options
Gnutella2 is not a successor protocol of Gnutella,[4] but rather a fork of the Gnutella protocol which has both advantages and disadvantages compared to Gnutella. Gnutella2 ( G2) is a Peer-to-peer protocol developed mainly by Michael Stokes and released 2002. In Software engineering, a project fork happens when developers take a copy of Source code from one software package and start independent development [5] A sore point with many Gnutella supporters is that the "Gnutella2" name conveys an upgrade or superiority. [6][7]