View Single Post
  #1 (permalink)  
Old January 3rd, 2002
Moak's Avatar
Moak Moak is offline
Guest
 
Join Date: September 7th, 2001
Location: Europe
Posts: 816
Moak is flying high
Post Gnutella Protocoll v0.7 Proposal

Moak's protocoll v0.7 proposal (REVISED, see rev 1 posting below, click here)

* Take v0.6 handshaking and leave the 3rd step away ([1]).
* Replace GIV with a real HTTP style PUT/POST header
* Document GUID tagging
* Rename Ultrapeers back to 'Superpeers' or 'Superservants'
* Use ISO Latin 1 character set (ISO 8859-1) in search queries/queryhits/HTTP filenames.
* Think about an Unicode addon, for world wide file trade (including Asia)!

Hope you like it. Comments, more ideas? Moak

PS: Okay some explanations are needed. Take a look into current 0.6 handshaking in [1] [2]. The client initates a connection together with HTTP-style headers, the other side answers with an OK and more HTTP-style headers. So far so good (great idea and very flexible)! Then there is this 3rd step (before sending binary data stream), unnecessary I think: the client sends another OK. I see no purpose for the 3rd step, kick it?

Here is a sample interaction between a client and a server with a new v0.7 handshaking:
Code:
Client                           Server
-----------------------------------------------------------
GNUTELLA CONNECT/0.7<cr><lf>
User-Agent: AOLOA<cr><lf>
Query-Routing: 0.3<cr><lf>
<cr><lf>
                                GNUTELLA/0.7 200 OK<cr><lf>
                                User-Agent: Peeranha<cr><lf>
                                Query-Routing: 0.1<cr><lf>
                                Your-IP: 194.246.250.222<cr><lf>
                                <cr><lf>
[binary messages]               [binary messages]
All information are exchanged in a two step handshaking.

In the very rare case the servants need to shake hands once more and exchange more information (does it ever happen?), they can just continue with another "GNUTELLA/0.7 200 OK" round, but they don't need to. Suprised? This works because the binary message stream will never start with "GNUTELLA" (the first 16 bytes will be the GUID in a descriptor header, which byte 9 is allways 0xFF following the modern GUID-tagging rules, pseudo code: guid[8]=0xFF). (Revised, see rev 1 posting below)

Next point, replacing GIV with PUT or POST, see [3] [4]. Should be self explanary, the HTTP protocoll [5] allready provides a "upload" functionality... we can use this instead of cooking our own HTTP. For sure Gnutella's Push descriptor is still needed, no change here.

Next point, document GUID tagging as mentioned in [6]. New developers need to have a full documented protocoll to contribute.

Next point, umm, Giga-, Hyper- and Ultrapeers [7]. Can we just forget about marketing and name them simply 'Superpeers' or 'Superservants' please. :-) Only the name 'Supernode' is trademarked (Kazaa/Morpheus/Grokster use only this term on their webpages, eDonkey uses the term 'server'), everything else is free. AFAIK good old Clip2 was first mentioning superpeers or refelectors.

Last point, character set. I think we still have none and Gnutella is world wide, eeks! In a first step I suggest to orientate at the web and use ISO Latin 1 (ISO 8859-1) at least, US_ASCII or "wild wild west" isn't enough [8]. Okay, ISO Latin 1 is very selfish, I live in Europe and this will fit my needs. We also should think about a Unicode alternative, perhaps together with file hashs this will perfectly fit into a new HUGE proposal [9].

PPS: Thx to Tamama and Mike Green (Emixode), #gnutelladev

[1] Gnutella v0.6 Handshake Summary - http://www.gnucleus.com/research/connect.html
[2] Gnutella v0.6 Handshake - http://groups.yahoo.com/group/the_gd...ing%20Protocol (Yahoo account required)
[3] Gnutella V0.4/0.6 File Transfer Summary - http://www.gnucleus.com/research/transfer.html
[4] Gnutella protocoll specification v0.4 revision 1.2 - http://www.clip2.com/GnutellaProtocol04.pdf
[5] HTTP/1.0, RFC 1945 - http://www1.ics.uci.edu/pub/ietf/http/rfc1945.html
[6] Gnutella GUID tagging - http://groups.yahoo.com/group/the_gdf/message/1397
[7] "Ultra"peers - http://groups.yahoo.com/group/the_gd...ltrapeers.html (Yahoo account required)
[8] ISO 8859-1 character set - http://www.htmlhelp.com/reference/charset/
[9] "HUGE" - http://groups.yahoo.com/group/the_gd...roposals/HUGE/ (Yahoo account required)

Last edited by Moak; February 15th, 2002 at 10:05 AM.
Reply With Quote