Gnutella

from Wikipedia, the free encyclopedia

Gnutella (pronounced [ nʊtɛlə ] with a silent g ) is a decentralized peer-to-peer - network protocol for file sharing . There are several million users worldwide who access the network via different clients . For a long time, the most widely used and best known client was LimeWire . Despite the name, Gnutella is not part of the GNU project .

history

The Gnutella protocol was defined by Justin Frankel (inventor and former developer of the Winamp audio player ) who, on March 14, 2000, was the first software for the Gnutella network to download the beta version of the program, also known as "Gnutella", for free on the Internet released. Frankel's employer AOL, however, forced him to give up the project and the program was no longer available on the project website one day after its publication. However, by then it was already widely available and still available through IRC chat rooms as well as third party websites .

Some time later, a group of independent developers managed to decipher the Gnutella protocol and publish their results. As a result, numerous other programs were developed for the Gnutella network, which also significantly expanded the scope of the network.

In May 2006 the Gnutella network had an estimated 2.2 million users.

background

The model and incentive for the Gnutella network was largely the central peer-to-peer network Napster , which had already enabled a direct exchange of music files since June 1999. Due to the largely illegally exchanged content, however, the operating company Napster was increasingly getting into legal conflicts. Frankel's motivation was to set up a network that, in contrast to Napster , should get along without a central server and thus also without a central operator against whom legal allegations could have been raised.

technology

The Gnutella network is a completely decentralized network . This means that every user uses the same software and that there are no central servers that process the search queries. In order to work anyway, the client program must find at least one other user (so-called node ). To achieve this, there are various methods such as predefined server lists, GWebCache pages on the Internet or the exchange of host lists via IRC . If a connection is established, the programs exchange lists of reachable nodes, which are then contacted in turn until the set number of connections is reached.

If a user of the network starts a search query, this is initially only forwarded to neighboring clients. These then in turn forward the request to their neighbors until the requested file is found. A direct connection can then be established between searching and offering users for the data transfer.

The particular advantage of this network structure is its failure safety, as search queries can be forwarded even if individual parts of the network are temporarily inaccessible. Disadvantages, however, are the long duration of the search query, as there are no central index servers, and the high network load, since the number of inquiries increases exponentially with the distance to the searching client.

In recent years, however, the Gnutella network has undergone significant further development, so that its efficiency has been increased considerably. Examples of this are the QRP, with which sources exchange information about which files they have, so that in the last two steps the queries are only forwarded to those who can possibly answer, and dynamic search queries, which means that not all neighboring systems are queried at once but only until enough search results have been received.

software

Windows
Mac OS
Unix based
platform independent

Some other clients are based on giFT .

development

The Gnutella protocol is constantly being improved with new extensions. On the one hand, this extends the functionality, on the other hand, sophisticated algorithms are used to try to reduce the required bandwidth and improve stability.

These include:

  • Classification into ultrapeer and leaf knots
  • Query Routing Protocol (QRP)
  • Horizon Statistics (HSEP)
  • Active and passive queues for file transfers
  • Compression of P2P connections (Link Compression Extension)
  • Propagate alternative file sources via the so-called download mesh
  • Download verification using Tiger Tree hashes
  • Metadata

Many Gnutella clients are open source software . Accordingly, it is possible to participate in the development of the clients themselves.

successor

The Gnutella protocol has some conceptual weaknesses that cannot be remedied without breaking compatibility . Networks based on the Kademlia algorithm, such as the mojito DHT designed by the developers of LimeWire , which is currently only used for source identification , are seen as an extension of Gnutella, which is intended to remedy these weaknesses . In the case of networks based on Kademlia, there are also no central servers, but a specific “contact person” who is “responsible” for this query is calculated for each individual conceivable search query. This avoids the problem with Gnutella that practically every search query has to reach every computer if even rare files are to be found successfully. On the other hand, the fuzzy searches via search term, for which Gnutella was developed, are more difficult to implement efficiently with Kademlia, since only searches for exact values ​​are possible, while Gnutella returns all hits that match the search words. In this context, Gnutella is also called an unstructured overlay , while Kademlia is a structured overlay.

In 2002 the newly invented Gnutella2 protocol was published except for the old handshake , which is not recognized by the Gnutella developer community as a successor protocol. As it is incompatible with Gnutella, it is considered an independent protocol, although both networks are still interwoven by the same handshake. According to its developer, the protocol scales better than Gnutella, as it has more efficient search mechanisms and, thanks to its specific package structure, can be expanded almost indefinitely without loss of compatibility. It also states that it is easier to redesign a Gnutella2 client than a Gnutella client with comparable capabilities. Gnutella developers, however, contradict the statement about scalability and efficiency and state that the same expandability in Gnutella is already given by Generic Gnutella Extension Protocol (GGEP) extensions.

Web links

Wikibooks: Gnutella Tutorial as Wikibook  - learning and teaching materials

swell

  1. Christian Rabanus: AOL subsidiary develops Napster clone. In: heise online. March 15, 2000, accessed December 25, 2019 .
  2. As of May 2006, source: www.slyck.com ( Memento from April 24, 2006 in the Internet Archive )