Gtk-gnutella

Last updated

gtk-gnutella
Developer(s) Raphael Manfredi, Richard Eckart
Initial release16 April 2000
Stable release
1.2.2 [1]   OOjs UI icon edit-ltr-progressive.svg / 25 February 2022
Preview release Git [±]
Repository
Written in C (GTK+)
Operating system Cross-platform
Available inde el es fr hu it ja nb nl uk +
Type Peer-to-peer file sharing
License GNU General Public License
Website https://gtk-gnutella.sourceforge.io/

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.

Contents

History

Initially gtk-gnutella was written to look like the original Nullsoft Gnutella client. The original author Yann Grossel stopped working on the client in early 2001. After a while Raphael Manfredi took over as the main software architect, and the client has been in active development ever since. Versions released after July 2002 do not look like the original Nullsoft client. [2]

Features

gtk-gnutella is programmed in C with an emphasis on efficiency and portability without being minimalistic but rather head-on with most of the modern features of the gnutella network. Therefore, it requires fewer resources (such as CPU and/or RAM) than the major gnutella clients. It can also be used as headless gnutella client not requiring GTK+ at all.

gtk-gnutella has a filtering engine that can reduce the amount of spam and other irrelevant results. gtk-gnutella supports a large range of the features of modern gnutella clients. gtk-gnutella was the first gnutella client to support IPv6 and encryption using TLS. It can handle and export magnet links. It has strong internationalization features, supporting English, German, Greek, French, Hungarian, Spanish, Japanese, Norwegian, Dutch and Chinese. gtk-gnutella also has support to prevent spamming and other hostile peer activity.

Several software distributions provide pre-compiled packages, but they are usually outdated as many distributions version freeze old stable releases. The gnutella network benefits from running the latest version obtainable as peer and hostile IP address lists change rapidly, making building the latest SVN snapshot the best option. There are also pre-compiled packages for many Linux distributions available online. Persons concerned about security might wish to compile their own. The gtk-gnutella sources use dist as build and configuration system instead of Autoconf. Most users are only familiar with the configure scripts generated by the latter. Another hazard for novices is configuring NAT devices to enable full network connectivity for gtk-gnutella. gtk-gnutella, like any gnutella client, is still usable behind a firewall or a router, but with some reduced functionality, if it cannot receive incoming TCP connections or UDP packets. In an attempt to mitigate the issue for newcomers, gtk-gnutalla implements the UPnP and NAT-PMP client protocols.

gtk-gnutella supports features for downloading larger files (videos, programs, and disk images). Version 0.96.4 supports Tiger tree hash serving and versions after 0.96.5 support tiger tree hashes for uploads and downloads. Tiger tree hashing and other gtk-gnutella features make file transfers as efficient as BitTorrent. Specifically, gtk-gnutella supports partial file sharing, [3] remote queueing [4] and files larger than 4 GiB. [5] Overlap checking was the only mechanism to guard against bad data prior to versions 0.96.4. Overlap checking does not guard against malicious corruption like Tiger tree hashing does.

Version 0.96.6 introduced preliminary support for a Kademlia DHT, which was completed in version 0.96.7. [6] The DHT is replacing search by SHA-1, when locating alternate sources for a known file or looking for push-proxies. In version 0.96.7, the DHT is enabled by default. LimeWire first developed the DHT and named it [7] Mojito DHT.

Version 0.96.9 introduced full native support for UPnP and NAT-PMP, making the usage behind a compatible router much easier since there is no longer any need to manually forward ports on the firewall. In this version the code was also ported to Microsoft Windows however the Windows port is still considered beta due to lack of wide testing so far.

Version 0.96.9 also introduced important DHT protection against Sybil attacks, using algorithms based on statistical properties. [8]

Version 0.97 was a major release, introducing client-side support for HTTP pipelining, "What's New?" queries, MIME type query filtering, GUESS support (Gnutella UDP Extension for Scalable Searches) and partial file querying. Although many Gnutella vendors already supported server-side GUESS, gtk-gnutella introduced the client-side as well, also enhancing the original specifications of the protocol to make it truly usable.

Version 0.98.2 employs a minor patch to correct malloc memory allocations and multiple threads issues, mainly on Ubuntu 11.10 operating systems. This 2011 gtk-gnutella version was also dedicated to the memory of Dennis Ritchie, 1941–2011.

Version 0.98.4 added RUDP (reliable UDP) and improved partial file transfers. [9]

Version 1.1 is a major release which added G2 support: gtk-gnutella will now connect to the G2 network in leaf mode. This allows searches from G2 nodes and lets local queries be propagated to the G2 network as well. File exchanges with G2 hosts are fully inter-operable and are permitted without restriction.

Popularity

gtk-gnutella does not rank as one of the most popular clients on GnutellaNet crawls. gtk-gnutella developers' proposals have been incorporated into many gnutella clients.

In 2011, gtk-gnutella vendor extensions are the third most prolific on the GDF (Gnutella Developer Forum), following Limewire and Bearshare. [10] [11]

Salon listed gtk-gnutella as one of the five most popular gnutella applications in 2002. [12] XoloX and Toadnode, also in the list, are no longer actively developed.

Notes

  1. "Release 1.2.2". 25 February 2022. Retrieved 5 October 2022.
  2. "gtk-gnutella 0.96 screenshot". 2005.
  3. Klingberg, Tor (2002). "Partial File Sharing Protocol". Tor Klingberg. Archived from the original on 29 June 2012.
  4. Manfredi, Raphael (2003). "Passive/Active Remote Queueing". Raphael Manfredi. Archived from the original on 29 June 2012.
  5. "The 'LF' GGEP Extension". 2004. Archived from the original on 4 June 2012.
  6. "gtk-gnutella ChangeLog". Archived from the original on 29 June 2012.
  7. "Limewire Forum (defunct), Mojito DHT".[ dead link ]
  8. "Efficient DHT Attack Mitigation Through Peer's ID Distribution" (PDF).
  9. "GitHub gtk-gnutella ChangeLog". GitHub .
  10. Gnutella vendor extensions
  11. Gnutella working proposals
  12. Salon lists gtk-gnutella as one of the top five gnutella clients. (2002) Archived 10 January 2008 at the Wayback Machine

Related Research Articles

Gnutella is a peer-to-peer network protocol. Founded in 2000, it was the first decentralized peer-to-peer network of its kind, leading to other, later networks adopting the model.

<span class="mw-page-title-main">LimeWire</span> Peer-to-peer file sharing application

LimeWire was a free peer-to-peer file sharing client for Windows, MacOS, Linux and Solaris. Created by Mark Gorton in 2000, it was most prominently a tool used for the download and distribution of pirated materials, particularly pirated music. In 2007, LimeWire was estimated to be installed on over one-third of all computers globally.

<span class="mw-page-title-main">Justin Frankel</span> American computer programmer

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. Frankel is also the founder of Cockos Incorporated, which creates music production and development software such as the REAPER digital audio workstation, the NINJAM collaborative music tool and the Jesusonic expandable effects processor. In 2002, he was named in the MIT Technology Review TR100 as one of the top 100 innovators in the world under the age of 35.

<span class="mw-page-title-main">Shareaza</span> Peer-to-peer file sharing application

Shareaza is a peer-to-peer file sharing client running under Microsoft Windows which supports the gnutella, Gnutella2 (G2), eDonkey, BitTorrent, FTP, HTTP and HTTPS network protocols and handles magnet links, ed2k links, and the now deprecated gnutella and Piolet links. It is available in 30 languages.

eDonkey2000

eDonkey2000 was (is) a peer-to-peer file sharing application developed by US company MetaMachine, using the Multisource File Transfer Protocol. It supported both the eDonkey2000 network and the Overnet network.

<span class="mw-page-title-main">Distributed hash table</span> Decentralized distributed system with lookup service

A distributed hash table (DHT) is a distributed system that provides a lookup service similar to a hash table. Key–value pairs are stored in a DHT, and any participating node can efficiently retrieve the value associated with a given key. The main advantage of a DHT is that nodes can be added or removed with minimum work around re-distributing keys. Keys are unique identifiers which map to particular values, which in turn can be anything from addresses, to documents, to arbitrary data. Responsibility for maintaining the mapping from keys to values is distributed among the nodes, in such a way that a change in the set of participants causes a minimal amount of disruption. This allows a DHT to scale to extremely large numbers of nodes and to handle continual node arrivals, departures, and failures.

BitTorrent, also referred to as simply torrent, is a communication protocol for peer-to-peer file sharing (P2P), which enables users to distribute data and electronic files over the Internet in a decentralized manner. The protocol is developed and maintained by Rainberry, Inc., and was first released in 2001.

MLDonkey is an open-source, multi-protocol, peer-to-peer file sharing application that runs as a back-end server application on many platforms. It can be controlled through a user interface provided by one of many separate front-ends, including a Web interface, telnet interface and over a dozen native client programs.

<span class="mw-page-title-main">GNUnet</span> Framework for decentralized, peer-to-peer networking which is part of the GNU Project

GNUnet is a software framework for decentralized, peer-to-peer networking and an official GNU package. The framework offers link encryption, peer discovery, resource allocation, communication over many transports and various basic peer-to-peer algorithms for routing, multicast and network size estimation.

<span class="mw-page-title-main">Gnutella2</span>

Gnutella2, often referred to as G2, is a peer-to-peer protocol developed mainly by Michael Stokes and released in 2002.

Kademlia is a distributed hash table for decentralized peer-to-peer computer networks designed by Petar Maymounkov and David Mazières in 2002. It specifies the structure of the network and the exchange of information through node lookups. Kademlia nodes communicate among themselves using UDP. A virtual or overlay network is formed by the participant nodes. Each node is identified by a number or node ID. The node ID serves not only as identification, but the Kademlia algorithm uses the node ID to locate values.

<span class="mw-page-title-main">Magnet URI scheme</span> Scheme that defines the format of magnet links

Magnet is a URI scheme that defines the format of magnet links, a de facto standard for identifying files (URN) by their content, via cryptographic hash value rather than by their location.

The Kad network is a peer-to-peer (P2P) network which implements the Kademlia P2P overlay protocol. The majority of users on the Kad Network are also connected to servers on the eDonkey network, and Kad Network clients typically query known nodes on the eDonkey network in order to find an initial node on the Kad network.

A BitTorrent tracker is a special type of server that assists in the communication between peers using the BitTorrent protocol.

GnucDNA was a software library for building peer-to-peer applications. It provides developers with a common layer to create their own Gnutella or Gnutella2 client or network. As a separate component, GnucDNA can be updated independently of the client, passing down improvements to the applications already using it.

<span class="mw-page-title-main">Merkle tree</span> Type of data structure

In cryptography and computer science, a hash tree or Merkle tree is a tree in which every "leaf" (node) is labelled with the cryptographic hash of a data block, and every node that is not a leaf is labelled with the cryptographic hash of the labels of its child nodes. A hash tree allows efficient and secure verification of the contents of a large data structure. A hash tree is a generalization of a hash list and a hash chain.

The following is a general comparison of BitTorrent clients, which are computer programs designed for peer-to-peer file sharing using the BitTorrent protocol.

Peer-to-peer file sharing (P2P) systems like Gnutella, KaZaA, and eDonkey/eMule, have become extremely popular in recent years, with the estimated user population in the millions. An academic research paper analyzed Gnutella and eMule protocols and found weaknesses in the protocol; many of the issues found in these networks are fundamental and probably common on other P2P networks. Users of file sharing networks, such as eMule and Gnutella, are subject to monitoring of their activity. Clients may be tracked by IP address, DNS name, software version they use, files they share, queries they initiate, and queries they answer to. Clients may also share their private files to the network without notice due to inappropriate settings.

<span class="mw-page-title-main">Phex</span>

Phex is a peer-to-peer file sharing client for the gnutella network, released under the terms of the GNU General Public License, so Phex is free software. Phex is based on Java SE 5.0 or later.

Mainline DHT is the name given to the Kademlia-based distributed hash table (DHT) used by BitTorrent clients to find peers via the BitTorrent protocol. The idea of using a DHT for distributed tracking in BitTorrent was first implemented in Azureus 2.3.0.0 in May 2005, from which it gained significant popularity. Unrelated but around the same time, BitTorrent, Inc. released a similar DHT into their client called Mainline DHT, and thus popularized the use of distributed tracking in the BitTorrent protocol. Measurement showed that by 2013, the concurrent number of users of Mainline DHT is from 16 million to 28 million, with intra-day changes of at least 10 million.

References