Understanding NAT Issues.
In Maximizing Upload/Downloads Success I outlined a procedure which includes a provision for people who are having problems
sharing files with others (specifically people on hosts which are using NAT.) I can see by the responses from one of the
more knowlegable users (you know who you are) that there is some confusion over the problem my suggestions were intended to
address.
This thread is being started to clarify these issues for anyone interested in some ofthe challenges facing users who wish to
share files on Gnutella but can't seem to get it to work correctly.
I recommend that you read this post carefully and make an effort to clearly understand the problem before posting counter
productive comments.
My intent is to make sure that the comments posted to this thread add to the value of the conversation. This discussion seeks
to addess this issue technically.
Recommendation #1 Understand your connection to the Internet. You can go to the following site and look at the various
broadband implementations:
http://www.dslreports.com/pictures
Your connection to the Internet will fall under one of these categories the problems you are likely to have will be related
to your connection.
Recommendation#2 Most firewall issues can be address by LimeWire and most p2p application that support push request. This
usually works unless both users are behind firewalls.
Recommendation#3 Learn a little about the problem / Technology
For general information on how gnutella based applications work (ping, pong query, queryhits, http get and push requests.)
Goto the following site and view the flash presentation great resource for non-techies.
http://www.toadnode.com/site_how_toa...ilx?idVisitor={0917DC6F-6B2A-4B6C-8CE1-15832277C0C5}
Now, for the issue of NAT and forcing the IP. If you don't know what NAT is, or how it works, you can find a complete
overview of the technology here:
http://www.howstuffworks.com/nat.htm
User Issue: "I get lots of hits on my files but no downloads, is something wrong?"
Yes, if your using NAT.
The basic problem with NAT and p2p based application is this:
Your messages can make it onto the network because NAT does the translation between your machine and the machines you are
talking to. (Which means you can search and even download from other people without a problem.) If you can connect, search
and download you don't have to worry about port forwarding or anything of that nature as these activities prove that you can
talk to the network.
Remember this issue we are attempting to address is being able to send or have files uploaded from our/ your computer onto
the network.
When you are using a p2p application that application reads the IP address from the machine it is installed on. Now if the IP
happens to be a NAT Address (192.168.*.* or 10.*.*.* most likely) it inserts this IP into the QueryHit messages and even the
Pong Messages (This happens at the application level NOT the network level.)
Any communications with a NAT based host on the Gnutella network will result in the messages from that machine containing the
NAT address in the Pong message and the QueryHit messages. When someone clicks on these results in their favorite p2p
application it will first attempt to contact the host ip embedded in the queryhit message (which happens to be a private net
ip.)
Private Net Ip address cannot be routed over the public Internet please see:
http://www.faqs.org/rfcs/rfc1918.htm for more
information on private network addresses.
When this fails it immediately attempts to send a PUSH request to the host that originally sent queryhit but this fails
because the host just before the original sender cannot communicate with a Private NET IP so the message is dropped (These
are all application level communication failures.)
So how do you fix this? Force the IP or binding in the Application this causes the correct IP to be embedded in the messages
leaving your p2p application. By default most p2p applications assume that you have a public net IP address and this option
is not configured by default.
These issues are not new ones but very old ones to anyone that's been around a while.
http://www.oreillynet.com/cs/weblog/view/wlg/317
Read the sections on experiments and results from the following article.
http://www.firstmonday.org/issues/is...dar/index.html
Hope this helps to clarify the issue or confuse you a little more :-)