Gnutella2
Encyclopedia
Gnutella2, often referred to as G2, is a peer-to-peer
Peer-to-peer
Peer-to-peer computing or networking is a distributed application architecture that partitions tasks or workloads among peers. Peers are equally privileged, equipotent participants in the application...

 protocol developed mainly by Michael Stokes and released in 2002. While inspired by the gnutella
Gnutella
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...

 protocol, G2 shares little of its design with the exception of its connection handshake and download mechanics. It adopts an extensible binary packet format and an entirely new search algorithm
Algorithm
In mathematics and computer science, an algorithm is an effective method expressed as a finite list of well-defined instructions for calculating a function. Algorithms are used for calculation, data processing, and automated reasoning...

. Furthermore, it has a slightly different network topology and an improved metadata
Metadata
The term metadata is an ambiguous term which is used for two fundamentally different concepts . Although the expression "data about data" is often used, it does not apply to both in the same way. Structural metadata, the design and specification of data structures, cannot be about data, because at...

 system which helps effectively to reduce fake
Fake
Fake means not real.Fake may also refer to:In music:* Fake , a Swedish synthpop band active in the 1980s*Fake?, a Japanese rock band* Fake , 2010 song by Ai featuring Namie Amuro...

 files, viruses
Computer virus
A computer virus is a computer program that can replicate itself and spread from one computer to another. The term "virus" is also commonly but erroneously used to refer to other types of malware, including but not limited to adware and spyware programs that do not have the reproductive ability...

 (etc.) on the network.

History

In November 2002, Michael Stokes announced the Gnutella2 protocol to the Gnutella Developers Forum. While some thought the goals stated for Gnutella2, primarily to make a clean break with the gnutella 0.6 protocol and start over so that some of gnutella's less clean parts would be done more elegantly, to be impressive and desirable, other developers, primarily those of 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"...

 and 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 :...

, thought it a "cheap publicity stunt" and discounted technical merits. Many still refuse to refer to the network as "Gnutella2" and instead refer to it as "Mike's Protocol" ("MP").

The Gnutella2 protocol still uses the old "GNUTELLA CONNECT/0.6" handshake string for its connections as defined in the gnutella 0.6 specifications, which was criticized by the GDF as an attempt to use the gnutella network for bootstrapping the new, unrelated network, while proponents of the network claimed that its intent was to remain backwards-compatible with gnutella to allow current gnutella clients to add Gnutella2 at their leisure.

With the developers entrenched in their positions, a flame war soon erupted, further cementing both sides' resolve.

The draft specifications were released on March 26, 2003, and more detailed specifications soon followed. G2 is not supported by many of the "old" gnutella network clients, however many Gnutella2 clients still also connect to gnutella. Many Gnutella2 proponents claim that this is because of political reasons, while gnutella supporters claim that the drastic changes don't have enough merit to outweigh the cost of deep rewrites.

Design

Gnutella2 divides nodes
Node (networking)
In communication networks, a node is a connection point, either a redistribution point or a communication endpoint . The definition of a node depends on the network and protocol layer referred to...

 into two groups: Leaves and Hubs. Most Leaves maintain two connections to Hubs, while Hubs accept hundreds of Leaf connections, and an average of 7 connections to other Hubs. When a search is initiated, the node obtains a list of Hubs if needed, and contacts the Hubs in the list, noting which have been searched, until the list is exhausted, or a predefined search limit has been reached. This allows a user to find a popular file easily without loading the network, while theoretically maintaining the ability for a user to find a single file located anywhere on the network.

Hubs index what files a Leaf has by means of a Query Routing Table, which is filled with single bit
Bit
A bit is the basic unit of information in computing and telecommunications; it is the amount of information stored by a digital device or other physical system that exists in one of two possible distinct states...

 entries of hashes
Hash function
A hash function is any algorithm or subroutine that maps large data sets to smaller data sets, called keys. For example, a single integer can serve as an index to an array...

 of keywords which the Leaf uploads to the Hub, and which the Hub then combines with all the hash tables its Leaves have sent it in order to create a version to send to their neighbouring Hubs. This allows for Hubs to reduce bandwidth greatly by simply not forwarding queries to Leaves and neighbouring Hubs if the entries which match the search are not found in the routing tables.

Gnutella2 relies extensively on 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...

, rather than 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...

, for searches. The overhead of setting up a TCP connection would make a random walk
Random walk
A random walk, sometimes denoted RW, is a mathematical formalisation of a trajectory that consists of taking successive random steps. For example, the path traced by a molecule as it travels in a liquid or a gas, the search path of a foraging animal, the price of a fluctuating stock and the...

 search system, requiring the contacting of large numbers of nodes with small volumes of data, unworkable. However, UDP is not without its own drawbacks. Because UDP is connectionless, there is no standard method to inform the sending client that a message was received, and so if the packet is lost, there is no way to know. Because of this, UDP packets in Gnutella2 have a flag to enable a reliability setting. When an UDP packet with enabled reliability flag is received, the client will respond with an acknowledge packet to inform the sending client that their packet arrived at its destination. If the acknowledge packet is not sent, the reliable packet will be retransmitted in an attempt to ensure delivery. Low importance packets which do not have the flag enabled do not require an acknowledge packet, reducing reliability, but also reducing overhead as no acknowledge packet needs to be sent.

Protocol features

Gnutella2 has an extensible binary packet format, comparable to an 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....

 document tree, which was conceived as an answer for some of gnutella's less elegant parts. The packet format was designed so that future network improvements and individual vendor features could be added without worry of causing bugs in other clients on the network.

For file identification and secure integrity check of files it employs SHA-1 hashes
Cryptographic hash function
A cryptographic hash function is a deterministic procedure that takes an arbitrary block of data and returns a fixed-size bit string, the hash value, such that an accidental or intentional change to the data will change the hash value...

. To allow for a file to be reliably downloaded in parallel from multiple sources as well as to allow for the reliable uploading of parts as the file is being downloaded (swarming), Tiger tree hashes
Hash tree
In cryptography and computer science Hash trees or Merkle trees are a type of data structure which contains a tree of summary information about a larger piece of data – for instance a file – used to verify its contents. Hash trees are a combination of hash lists and hash chaining, which in turn are...

 are used.

To create a more robust and complete system for searching, Gnutella2 also has a metadata
Metadata
The term metadata is an ambiguous term which is used for two fundamentally different concepts . Although the expression "data about data" is often used, it does not apply to both in the same way. Structural metadata, the design and specification of data structures, cannot be about data, because at...

 system for more complete labeling, rating, and quality information to be given in the search results than would simply be gathered by the file names. Nodes can even share this information after they have deleted the file, allowing users to mark viruses and worms on the network without requiring them to keep a copy.

Gnutella2 also utilizes compression
Http compression
HTTP compression is a capability that can be built into web servers and web clients to make better use of available bandwidth , and provide faster transmission speeds between both...

 in its network connections to reduce the bandwidth used by the network.

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...

 has the additional feature to request previews of images and videos, though currently no additional clients take advantage of this.

Differences from gnutella

Overall, the two networks are fairly similar, with the primary differences being in the packet format and the search methodology.

Protocol

Gnutella's packet format has been criticized because it was not originally designed with extensibility in mind, and has had many additions over the years, leaving the packet structure cluttered and inefficient. Gnutella2 learned from this, and aside from having many of the added features of gnutella standard in Gnutella2, designed in future extensibility from the start.

Search algorithm

While gnutella uses a 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....

 method of searching, Gnutella2 uses a walk system where a searching node gathers a list of Hubs and contacts them directly, one at a time. However, as Hub organize themselves in so called "Hub clusters", where each Hub mirrors the information stored by its neighbours, the Leaf is returned the information of the entire Hub cluster (usually 7 Hubs). This has several advantages over the gnutella's query flooding system. It is more efficient, as continuing a search does not increase the network traffic exponentially, queries are not routed through as many nodes, and it increases the granularity
Granularity
Granularity is the extent to which a system is broken down into small parts, either the system itself or its description or observation. It is the "extent to which a larger entity is subdivided...

 of a search, allowing a client to stop once a pre-defined threshold of results has been obtained more effectively than in gnutella. However, the walk system also increases the complexity of the network and the network maintenance required, as well as requiring safeguards to prevent a malicious attacker from using the network for denial-of-service attack
Denial-of-service attack
A denial-of-service attack or distributed denial-of-service attack is an attempt to make a computer resource unavailable to its intended users...

s.

Terminology

There is also a difference in terminology: while the more capable nodes which are used to condense the network are referred to as Ultrapeers in gnutella, they are called Hubs in Gnutella2, and they are also used slightly differently in topology. In gnutella, the Ultrapeers generally maintain as many leaves as peer connections, while Gnutella2 Hubs maintain far more leaves, and fewer peer (Hub-to-Hub) connections. The reason for this is that the search methods of the various networks have different optimum topologies.

List

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...

 Gnutella2 clients include:
  • Adagio
    Adagio (software)
    Adagio is a computer program which runs on only servers, for the peer-to-peer Gnutella2 computer network. It is a client which runs on multiple operating systems. It behaves like a tracker in the BitTorrent protocol, by providing an initial source, SHA1 and Tiger tree hash information, as well as...

     (Cross Platform), written in Ada
    Ada (programming language)
    Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages...

    , under the GPL.
  • Gnucleus (Windows), written in C
    C (programming language)
    C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

    /C++
    C++
    C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

    , under the LGPL
  • MLDonkey
    MLDonkey
    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...

     (Cross Platform), written in Ocaml, under the GPL, however as of version 2.9.0, support is officially unmaintained and disabled in the binaries.
  • 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...

     (Windows), multi-network, written in C++, under the GPL, currently +/- 93% network share
  • Sharelin
    Sharelin
    Sharelin is a terminal peer-to-peer file sharing client for Unix-derived operating systems. It operates on the Gnutella2 network. The project is based at SourceForge.net and was established in 2008. It is since under active development. Features of the Gnutella2 network similar to those of...

     (Cross platform), written in C++, web-GUI
  • G2CD (Linux/Unix/BSD) Hub mode only implementation of the Gnutella2 network.
  • Quazaa (Cross platform) written in C++/QT4, under GPLv3. New client inspired by Shareaza.


Proprietary software
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...

 implementations include:
  • Foxy
    Foxy (P2P)
    Foxy is a Chinese P2P software by Vastel Technology Ltd. Inc. popular in Taiwan, Hong Kong and Macau. This software was treated as trojan in antivirus software Norton Antivirus or AVG for its file sharing. There may also be a malware Foxy...

     (Windows) Chinese 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...

    -derived program, no interaction with any other G2 clients possible, free.
  • Kiwi Alpha (Windows)
  • 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...

     (Windows)
  • TrustyFiles
    TrustyFiles
    TrustyFiles is a closed source Microsoft Windows-based peer-to-peer client which connects to the Gnutella, Gnutella2, FastTrack, eDonkey, Overnet and BitTorrent network protocols....

     (Windows)

Comparison

The following table compares general and technical information for a number of available applications supporting the G2 network.

{| style="font-size: 85%; text-align: center;" class="wikitable"
! client
! Chat
! Handles big files (>4 GB)
! UKHL
! Unicode
Unicode
Unicode is a computing industry standard for the consistent encoding, representation and handling of text expressed in most of the world's writing systems...


! UPnP port mapping
! 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...


! Remote preview
! Ability to search with hashes
! Hub modus
! Spyware
Spyware
Spyware is a type of malware that can be installed on computers, and which collects small pieces of information about users without their knowledge. The presence of spyware is typically hidden from the user, and can be difficult to detect. Typically, spyware is secretly installed on the user's...

/ Adware
Adware
Adware, or advertising-supported software, is any software package which automatically plays, displays, or downloads advertisements to a computer. These advertisements can be in the form of a pop-up. They may also be in the user interface of the software or on a screen presented to the user during...

/ Malware
Malware
Malware, short for malicious software, consists of programming that is designed to disrupt or deny operation, gather information that leads to loss of privacy or exploitation, or gain unauthorized access to system resources, or that otherwise exhibits abusive behavior...

-free
! Other networks
! Based on
! OS
! Other
|-
! | Adagio
Adagio (software)
Adagio is a computer program which runs on only servers, for the peer-to-peer Gnutella2 computer network. It is a client which runs on multiple operating systems. It behaves like a tracker in the BitTorrent protocol, by providing an initial source, SHA1 and Tiger tree hash information, as well as...


|
|
|
|
|
|
|
|
|
|
|
| -
| 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...


| -
|-
! | Foxy
Foxy (P2P)
Foxy is a Chinese P2P software by Vastel Technology Ltd. Inc. popular in Taiwan, Hong Kong and Macau. This software was treated as trojan in antivirus software Norton Antivirus or AVG for its file sharing. There may also be a malware Foxy...


|
|
|
|
|
|
|
|
|
|
|
| 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...


| 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...


| GPL violator
|-
! | FileScope
FileScope
FileScope is a multi-network filesharing client mainly written by Matt Zyzik, supporting the Gnutella1, Gnutella2, eDonkey and OpenNap networks.- 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...


| -
|-
! | 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...


| 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...


| -
|-
! | Kiwi Alpha
|
|
|
|
|
|
|
|
|
|
|
| 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...


| 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...


| -
|-
! | MLdonkey
MLDonkey
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...


| colspan=11
| -
| 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...


|
|-
! | 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...


|
|
|
|
|
|
|
|
|
|
|
| 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...


| 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...


| Development and hosting of the client has been stopped
|-
! | 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...


|
|
|
|
|
|
|
|
|
|
|
| -
| 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...


| Includes IRC support
|-
! | Sharelin
Sharelin
Sharelin is a terminal peer-to-peer file sharing client for Unix-derived operating systems. It operates on the Gnutella2 network. The project is based at SourceForge.net and was established in 2008. It is since under active development. Features of the Gnutella2 network similar to those of...


|
|
|
|
|
|
|
|
|
|
|
| -
| Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...

/Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...


| Console application with WEB-GUI
|-
! | TrustyFiles
TrustyFiles
TrustyFiles is a closed source Microsoft Windows-based peer-to-peer client which connects to the Gnutella, Gnutella2, FastTrack, eDonkey, Overnet and BitTorrent network protocols....


|
|
|
|
|
|
|
|
|
|
|
| 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...

 (partial)
| 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...


| -
|-
|}

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK