Gnutella Forums

Gnutella Forums (https://www.gnutellaforums.com/)
-   General Gnutella Development Discussion (https://www.gnutellaforums.com/general-gnutella-development-discussion/)
-   -   routing question (https://www.gnutellaforums.com/general-gnutella-development-discussion/7450-routing-question.html)

Ivex January 22nd, 2002 05:28 AM

routing question
 
Why we do not transfer the pong or queryhit directly to their requester(the original ping or query sender), but send them one by one back the way they came from?

Moak January 22nd, 2002 06:00 AM

Good question!

Looking into the protocol specification, you will see you need to route those messages. Ping and Query descriptors don't contain IP and port of the sender, but a GUID for routing. Only Pong, Queryhit and Push contain IP and port (for further contact/filetransfer).

Note: I never understood this design completely. :confused: Okay, we know all direct conections won't work to firewalled or NAT-routed peers... the routed way via the network does always work, since it does not establish a new (possibly blocked) connetion. But why we don't _try_ to direct connect to a peer first... or it's next superpeer? Is it a bad protocol design?
Anonymity could be an argument. The user searching is anonymous to the network, the content provider isn't (Queryhit descriptors contain IP of the sender). But on direct download each other knows the opponent's IP, together with a Push descriptor even more ppl know it. My conclusion = anonymity is very low or an illusion on Gnutella. Who cares if you search for chocolate-cake-recipes/porn/warez, when downloading or providing such content will uncover anonymity.
Passive searching and caching might be an argument together with superpeers (they could group searches together), but superpeers still don't direct connect the destination.
Or is this just all about a networking problem (rather than anonymity and stuff)... peers could never handle a high rate of incoming connections (limited nuber of sockets) + TCP lowlevel overhead is too big (SYN, ACK, FIN, ACK)? Someone with enlightenment?

Ivex January 24th, 2002 02:27 AM

Thanks to Cap'n Bry, here are two reasons given by him for why we couldn't send pong/queryhit directly.

quote:
Well, that would require you to create a connection out to the person who did the ping. You don't want to do that because:
-- There's overhead of creating the connection, sending the data and disconnecting. Not really that major, but there's alot less work if you just transmit rather than going through all that new connection rigormorah.
-- There's a chance that the originator is firewalled, meaning the only way to get a message back to him is through the network.

dux January 25th, 2002 11:55 AM

This biggest problem is actually with denial of service attacks. If someone sends out a string of queries with your ip address, your internet connection becomes toast.

But you could send query hits back with only the ip:port and the number of results. The querier could then connect to that ip address for the actual results. This wouldn't reduce the number of query hits, but it would make packet sizes much smaller (especially if the query hits contain a lot of metadata).

See the second part of this message:
http://groups.yahoo.com/group/the_gdf/message/4834

As for pongs, pings are no longer broadcast so they're fine the way they are.

Moak January 25th, 2002 12:05 PM

Interesting idea, thx
 
Quote from that GDF message:

Quote:

Gojomo writes:
Alternatively, a QueryReply could just be: "I have X hits,
request them from this URL". Then the originator issues a
request like what you've proposed above to finish the Query.
It's more steps, but then QueryReplies never get bloated
with tons of hits and markup/flags/metadata, and if in
fact the originator gets plenty of sufficiently good hits
early, it may never need to contact all the responders.


All times are GMT -7. The time now is 05:51 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.

Copyright © 2020 Gnutella Forums.
All Rights Reserved.