![]() |
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? |
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? |
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. |
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. |
Interesting idea, thx Quote from that GDF message: Quote:
|
All times are GMT -7. The time now is 02:39 PM. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.
Copyright © 2020 Gnutella Forums.
All Rights Reserved.