![]() |
Ping & Pong? What for? I know ping is for actively find out the servent on network. But I don't understand why should I send it. If we wanna find out some file, I think just Query is enough. To find out the file, why do we need ping and pong? |
If you haven't pinged anyone, who are you going to send your Query descriptor to? |
To those you are direct connected, no need to ping them before? |
ping/pong Okay, I wanna give a more detailed overview on what is ping/pong for. A ping on "traditional" TCP/IP is a tool for testing the network topology and functionality (Actually it uses ICMP protocoll. You send a small package of data and wait until a reply comes back. If nothing comes back, oops, you found a problem which may point to wrong configuration or physical problems. If something comes back you have a proof that route between you and another host is up. Ping is a perfect tool for fault isolation, it usually is run on the local host or LAN gateway to verify that the local network interface and routing is up and running. But it can also used to test the network between you and a foreign peer. Together with sending multiple pings you receive a short overview on round trips or detect droped packets or duplicated packets.) A ping on Gnutella is different to what we know from above. Gnutella's ping and pong descriptors serve two functions: 1) Provide a measure of the horizon size, to get knowledge of the current number of hosts and files available. 2) Return IP addresses of other servents so you can establish more connections. Notes to 1: Ping/pong messages caused a high amount of Gnutella's backbone traffic in past (ca 50%). It is highly recommended IMHO _not_ to use this feature in a future gnutella client. The Gnutella newtork should be scalable and not waste bandwith by a high percentage of broadcasts. AFAIK it is still a topic to find new ways to approximate the horizon in normal clients (ideas?). But I guess it still makes sense to use pings/pongs for special gnutella tools which map the network or for statistic purpose. If you code a kind of statistic tool, don't expect "deeper scans" with a high TTL, most clients lower a high TTL to something healthy (TTL<=7) while they route it. Notes to 2: It is not a optimal way to harvest IPs by using pings. Because you will generate a high broadcast, get IPs which are allready located in your local horizon (results in smaller horizon fou you in general, less available files, higher possibility to stuck in a seperated network, more duplicated traffic) and finally you get a high amount of IPs which do not allow incoming connections. A much better idea to get IPs of other gnutella clients -> use a gnutella host cache [3]. Additional Links: [1] New ping/pong ideas http://www.limewire.com/index.jsp/pingpong [2] Gnutella Protocoll http://www.clip2.com/GnutellaProtocol04.pdf [3] Host caches http://www.gnutellaforums.com/showth...4638#post16845 Hope it helps, Moak :) PS: Please correct me if my english is bad |
Re: ping/pong Quote:
|
Pings are more a network keep alive now, every 30 seconds a ping should be sent to check connected nodes. Host caches are currently the weak point in the network since there are only a few. Clients now return X-Try headers with IP's of other clients when you connect to them and they are busy or behind a superpeer. Swarming has caused a lot of busy problems. Now people can clog the upload slots 4 times as much! |
All times are GMT -7. The time now is 06:29 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.