Gnutella Forums

Gnutella Forums (https://www.gnutellaforums.com/)
-   General Gnutella / Gnutella Network Discussion (https://www.gnutellaforums.com/general-gnutella-gnutella-network-discussion/)
-   -   Gnutella: How does it work. (https://www.gnutellaforums.com/general-gnutella-gnutella-network-discussion/90903-gnutella-how-does-work.html)

gogalop27 February 20th, 2009 10:39 AM

Gnutella: How does it work.
 
Hello everyone ,

I have an article which describes how Gnutella works: in 5 Steps.

1. Connect to at least one active peer (address received from bootstrap)
2. Explore your neighborhood (Ping/Pong)
3. Submit Query with list of keywords to your neighbors (they forward it)
4. Select "best" of correct answers (which we receive after a while)
5. Connect to providing host/peer

I can not really understand the 2nd point. Well, how can we explore our neighborhood via Ping/Pong? Well, after point 1, we have lets say 1 neighbor. After that we want to explore our neighbor via Ping/Pong. Who do we ping then?

Because, what I know about Ping/Pong, is that, we ping some nodes, and we receive pong as answers from them, in order to know how the latency to each node looks like (in Napster). The requirement is that we already know these nodes.

In Gnutella, in the 2nd point, we have only 1 neighbor, we dont know any other nodes, so how can we explore our neighborhood via ping/pong?

Well, I imagin, probabaly, the 2nd step means: we ping our existence to our neighbor, and this neighbor will ping continously to his neighbors, so that these neighbors know about me. Well, sounds very coriously?
Can someone help me? Thanks so much. :aweof:

Perhaps, can someone give a brief description, how point 3-5 work. Thanks..

Ratna from Germany.:giggle:

GregorK February 21st, 2009 02:13 AM

Ping/Pong on Gnutella is not mainly used to measure latency or any other time related issue. Actually I don't even know a single servent which uses Ping/Pong to measure any kind time or latency related things.

On Gnutella Ping/Pong is mainly used to discover more parts of the network and find other nodes which are of high value for you.
There are usually two types of Pings. The KeepAlive-Pings carry a TTL of 1 and are only used to check if your neighbor still responds with a Pong or is offline or overloaded.
Then there are Pings with higher TTL, your neighbor will respond to this Ping but he also forwards the Ping to its neighbors (at least in the traditional Ping/Pong schema) and routes the Pongs back to you. This way you learn about hosts further away from you. Additionally the Pongs carry node information, most importantly its uptime. With the uptime data you build yourself a list of nodes mainly ordered by uptime and maybe some other criteria (every vendor has its own recipe).
Next time you go online your servent will go through this list and tries to connect to the nodes it will most likely successful connect to first.

Today most servents don't use the traditional Ping/Pong concept anymore. It causes too much traffic. It was replaced by a Pong caching algorithm. But the concept remains the same. Depending on your Ping TTL your neighbor will send you Pongs from nodes further away.

Gregor

arne_bab February 25th, 2009 02:35 AM

Just have a look at the guide Gnutella for Users - Gnufu

It describes Gnutella in easy to understand language.


All times are GMT -7. The time now is 05:19 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.