Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Gnutella2
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Design == Gnutella2 divides [[Node (networking)|nodes]] into two groups: [[leaf node|Leaves]] and Hubs. Most Leaves maintain two [[Telecommunication circuit|connections]] to Hubs,<ref name="G2 Network history">{{cite web| url=http://crawler.trillinux.org/history.html| title=Gnutella2 Network history| publisher=Trillinux crawler (G2paranha)| access-date=2009-04-12| archive-date=2009-05-15| archive-url=https://web.archive.org/web/20090515142530/http://crawler.trillinux.org/history.html| url-status=live}}</ref> 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 [[computer file|files]] a Leaf has by means of a [[Query Routing Table]], which is filled with single [[bit]] entries of [[Hash function|hashes]] of [[Index term|keyword]]s, which the Leaf [[upload]]s to the Hub, and which the Hub then combines with all the [[hash table]]s its Leaves have sent, it in order to create a version to send to their neighboring Hubs. This allows for Hubs to reduce [[Bandwidth (computing)|bandwidth]] greatly by simply not forwarding [[query string|queries]] to Leaves and neighboring Hubs, if the entries which match the search are not found in the [[routing table]]s. Gnutella2 relies extensively on [[User Datagram Protocol|UDP]], rather than [[Transmission Control Protocol|TCP]], for searches. The [[Overhead (computing)|overhead]] of setting up a TCP connection would make a [[random walk]] 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 passing|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 field|flag]] to enable a reliability setting. When an UDP packet with enabled reliability flag is received, the client will respond with an [[Acknowledgement (data networks)|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 and waited upon.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)