Port forwarding is necessary so that other users can reach you from the outside; place “incoming calls” so to speak, as opposed to only you contacting other users. If you can’t receive any incoming connections, you might loose peers, not being able to contact them if they, too, don’t have setup proper port forwarding.
As a result, you may not reach the downloading speed possible, and rare files with a very limited amount of sources might not even work at all. In networks such as Soulseek, it means that you won’t be able to connect to a lot of people and thus, you might miss out on that file you wanted to badly.
To avoid this, you need to either forward the necessary ports, either manually or automatically, or use a VPN which supports port forwarding.
Not clear enough? Let us try to explain.
As established before, users communicate directly with each other on a file sharing network, and this means they have to somehow contact each other. Now, there are two important numbers here that allow somebody online to identify you: Your IP (a “telephone number” for the Internet) and the port. If your IP is the telephone number, the port is the name of the department in the house you want to reach.
So, if an incoming call comes, there has to be someone to pick it up and redirect it to the right person and port. However, in most networks, the “person” behind the phone on your end is your router, a device that allows it several people to be connected through the same IP address (or number).
Well, how is your router supposed to know where to redirect the “call”? There has to be some configuration that says “if a call comes in, and someone wants to speak with department 10957 (the port of your P2P client), then redirect it to Michaels computer”, or something like it. Otherwise, the request is simply rejected, and never reaches you.
Some P2P networks have developed methods to circumvent this problem, by using a third party to act as helper in some way (Skype is a real artist when it comes to cirvumventing firewalls for example), but that is certainly not a perfect solution: Some protocols don’t even have any way to deal with the issue.
A person going under the name Sitoplex explained on a thread on Superuser.com forums:
I would compare open port with a telephone number.
Imagine you can have a telephone to dial, but not a telephone number to receive calls.
For two parties to talk to each other (or one talking all the time) it does not matter who actually dial. The important part is that at least one them has a telephone number, then the other partner just calls him.
If none of them has a telephone number, a supernode is used in some systems, which could be friend that receives two calls, one from each of them, and joins them together. This is the only way to talk if none of the two parties has a telephone number. The problem is that the conversation is then constrained to the quality of the telephone line of this supernode friend.
I hope this analogy makes it easier to understand the 3 possible scenarios.
Another problem can be your firewall, your personal gatekeeper that might be installed on either your PC or your router (sometimes on both), as it might identify the package as a threat, and reject it. So, in some cases, it could be your firewall blocking incoming connections, and that needs to be properly configured.
Though in most cases you won’t need this, we compiled a guide on how to configure the Windows firewall for this. This might, for example, come in handy for Ares Galaxy or other, older file sharing clients: How To Configure The Windows Firewall For P2P
Or, just read our complete tutorial on how to correctly setup port forwarding on your network: Port Forwarding Tutorial