Packet Loss Test

What Is a Networking Port?

Every communication in a computer network needs two things to figure out where to go. The first is an IP address. In modern web browsing these are typically abstracted away through the use of domain names. However, most people with a decent understanding of technology have heard of them.

The other thing needed to get a network message to where it needs to go is a port. Like IP addresses, ports are just numbers to help computers know where to send a message. However, where IP addresses identify which device on a network should receive the message, a port tells a computer which program on a computer should be sent the message. A program can tell the operating system to send it messages that come in on a certain port number, and—absent firewall rules stopping it—the computer will do so. This is called port binding or listening to a port.

To use the analogy of mailing addresses, it's as if the IP address is the mailing address itself, and the port number is a box number telling the building manager whom should get the letter. The IP address tells where it should go among the public, and the port, although just as visible, is only used to direct the message once it has reached its destination. A sender can address messages to any number, and the building manager/operating system can decide what number should correspond to what resident/program. Numbers can be requested, but those requests don't have to be honored.

In the same way each packet has a destination port of which program it should be delivered to, each packet typically also has a source port. This is essentially like the the box number on a return address. If a program is sending a message or requesting something, it needs to tell your computer how to get the response to the right program. Given how many messages you likely send and since the other party doesn't have to know this port ahead of time, these are often just randomly generated to avoid conflicts or needing some special designation rules.

Certain port numbers are indeed special and reserved. Port numbers below 1024 are so often special that they require a program to have administrator rights to listen to them. Port 80 is the standard port for unencrypted web traffic. Port 443 is the port for encrypted web traffic. Port 20 is for unencrypted FTP connections. Port 22 is for SSH connections. Port 25 is for SMTP email sending. Port 3478 is for WebRTC STUN connections. There are hundreds and hundreds more. If you try to use one of these for something else, you'll likely run into problems, either from permissions, conflicts, or firewalls.

Firewalls

As a consumer, likely the only problem you'll run into with ports is firewall issues. A firewall is a program that blocks certain network traffic, often based on the port that it is connecting to. Such a rule can prevent unapproved web traffic from accessing programs on your computer or other devices which may be listening to ports without your knowledge. This is especially prevalent now with "smart devices", which often make themselves available over the Internet but don't always have the best security and open themselves up to being taken over by hackers.

Another reason for firewalls is simply to prohibit programs on your computer from accessing the Internet. A firewall on your computer can do this based on the program itself, but many corporate or school networks block the vast majority of outbound ports simply to prevent the risk of someone doing something that may open them up to risk. For example, ports 3389 and 5900 are both used for remote desktop connections. If a computer on a network is allowed to connect to these ports, it could allow someone to remotely control the computer, which is a major vector for attacks. Blocking these ports prevents this from happening.

Of course, blocking ports can also be a hinderance to using the Internet. If you need to use something that tries to connect to a port that is blocked, it will fail, likely with a confusing error message. If the rest of your Internet works, but one specific program or game does not, this is a potential reason.

If you would like to check if a specific outbound port is blocked, I made another site specifically for that: ProbeOut

ProbeOut uses WebSocket connections, like Packet Loss Test, to establish connections on unconventional ports in your browser. Through this it can simply try a ton of different ports to see which are blocked and which are not.

Packet Loss Test itself is very robust with ports. I believe it only needs port 443 unblocked and essentially any other free port at all.