Developers.Gnutella.Notes

From Shareaza Wiki
Jump to navigation Jump to search

on this page, have a hyperlinked table of contents to their page, complete url, and your page of notes, wiki url beneath that write a really short summary it's not just gdf wiki pages on their table of contents, it's also their deeper wiki pages, and the pages they link to add this to the developers toplevel, now the three are getting started, how shareaza works, how gnutella works

lists list the individual gnutella topics, like gwebcache, packets, ultrapeer, handshake list the individual prerequisite topics, like socket, ascii text headers list the acronyms and terms, like ggep, magnet, uri, huge

program write a really simple java program which implements this spec correctly used for demonstration and learning purposes, functional but not intended for use get developers from the gdf involved project at sourceforge, documentation at gdf wiki not named, simply called gnutella performance doesn't matter at all, only clarity in the code try to keep each topic separate, like everything related to ultrapeers in one section, not scattered through the entire code

notes

Introduction to the Gnutella Network

[1] Developers.Gnutella.Background

[2] Developers.Gnutella.Terminology

[3] Developers.Gnutella.Characteristics

[4] Developers.Gnutella.Extending

Core Protocol Services

[5] Developers.Gnutella.Bootstrapping

[6] Developers.Gnutella.Handshaking

[7] Developers.Gnutella.Ultrapeer

[8] Developers.Gnutella.Message Developers.Gnutella.Message.TTLAndHops Developers.Gnutella.Message.Ping Developers.Gnutella.Message.Pong Developers.Gnutella.Message.Query Developers.Gnutella.Message.QueryHit Developers.Gnutella.Message.Push

[9] Developers.Gnutella.NetworkTopology

[10] Developers.Gnutella.SharedContent

[11] Developers.Gnutella.Querying

[12] Developlers.Gnutella.FileTransfer

[13] Developers.Gnutella.AlternateLocations

Self-Organization of the Gnutella Network

[14] Developers.Gnutella.Hostcache

[15] Developers.Gnutella.Webcache

[16] Developlers.Gnutella.DownloadMesh

[17] Developers.Gnutella.PongCaching

[18] Developers.Gnutella.FlowControl

[19] Developers.Gnutella.Routing

[20] Developers.Gnutella.UltrapeerElection

[21] Developers.Gnutella.QueryRouting

[22] Developers.Gnutella.ManagingConnections

Approved Protocol Extensions

[23] Developers.Gnutella.GGEP

[24] Developlers.Gnutella.VendorMessages

[25] Developers.Gnutella.Bye

[26] Developlers.Gnutella.Metadata

[27] Developers.Gnutella.ActiveQueuing

[28] Developlers.Gnutella.LinkCompression

[29] Developlers.Gnutella.Browse

[30] Developers.Gnutella.Magnet

Appendices

[31] Developers.Gnutella.ConnectionHeaders

[32] Developers.Gnutella.DownloadHeaders

[33] Developers.Gnutella.GGEPBlocks

[34] Developlers.Gnutella.VendorMessages

[35] Developlers.Gnutella.Distributions

[36] Developers.Gnutella.GUID

[37] Developers.Gnutella.ReferenceList




I just found the official Gnutella wiki at the-gdf.org. From the wiki history logs, it looks like it was started last month, in March 2005. Until now, there wasn't really a place that described how Gnutella works for a technical, but non-expert, audience. Every article I could find either assumed you knew nothing about programming or sockets, and wanted to see a diagram with lines drawn between computers, or, you already had programmed a working Gnutella client, and wanted to know how to optimise the way it's routing pongs. There's just nothing in the middle. I'm really glad the GDF has started this wiki. I'm reading it now, cover to cover, and making notes. It will be a lot easier to figure out how Shareaza works if I can come to it with an understanding of how Gnutella works. Developers.Gnutella.Notes



using the gdf wiki

read in 3 passes

  1. without making notes
  2. making notes in the wiki
  3. finding and documenting shareaza classes

[38] Developers.Gnutella.Notes

I just found the official Gnutella wiki at the-gdf.org. From the wiki history logs, it looks like it was started last month, in March 2005. Until now, there wasn't really a place that described how Gnutella works for a technical, but non-expert, audience. Every article I could find either assumed you knew nothing about programming or sockets, and wanted to see a diagram with lines drawn between computers, or, you already had programmed a working Gnutella client, and wanted to know how to optimise the way it's routing pongs. There's just nothing in the middle. I'm really glad the GDF has started this wiki. I'm reading it now, cover to cover, and making notes. It will be a lot easier to figure out how Shareaza works if I can come to it with an understanding of how Gnutella works.

notes

Notes Reading the GDF Wiki

The Gnutella Developer Forum has started a wiki that describes how Gnutella works. I'm reading it now, and making notes here. It's online, at:

[39]

Below are the links of their outline, and my notes for each page.

1. Introduction

Background Terminology and Network Management Characteristics Extending the Protocol

Gnutella is a protocol that lets computers share files without a central server. Introduction.

2. Core Protocol Services

Bootstrapping A Gnutella program finds IP addresses of other programs from GWebCaches, X-Try headers, and some kinds of packets. Connecting.

Handshaking The first bytes two Gnutella programs send to each other after connecting a TCP/IP socket are lines of ASCII text that describe what their abilities are. Handshaking.

Leaf Mode and Ultrapeer Mode Gnutella programs can act in one of two roles, called leaf and ultrapeer. Ultrapeers have fast Internet connections, and help leaves, which have slow connections. Ultrapeers.

Standard Message Architecture Once connected, Gnutella programs communicate by sending information formatted into Gnutella packets. Packets.

Communicating Network Topology Information Notes.

Advertising Shared Content Notes.

Querying the Network Notes.

File Transfer Notes.

Finding Alternate Locations Notes.