FAQ
What are 3306, 6379 and 27017?
MySQL, Redis and MongoDB defaults respectively. Exposing them to the public internet is a serious risk.
How do I fix a port already in use?
Use another port, or find the process holding it and stop it. In development this usually means a previous run did not exit cleanly.
Should all these ports be open?
No. Open only what the service genuinely needs; database and cache ports should stay internal-only.
About this tool
A reference for 68 common service ports, searchable and filterable by port number, service name, description or category, with protocol (TCP / UDP) and purpose.
Ports come in three ranges with different rules: 0-1023 are system ports and need administrator rights to bind; 1024-49151 are registered ports that services claim by convention; 49152-65535 are ephemeral ports assigned to client connections. That is why "port 8080 is taken" and "port 80 is taken" need completely different responses - the latter usually means a system-level service must be stopped.
Finding what holds a port (this tool only looks up numbers, it does not scan): on Windows use netstat -ano | findstr :8080 for the PID, then tasklist /FI "PID eq 1234"; on macOS or Linux use lsof -i :8080 or ss -lptn 'sport = :8080'. A classic macOS trap: port 5000 is taken by the AirPlay Receiver, so Flask fails mysteriously - move to 5001 or turn the receiver off.
Security basics matter more than the numbers: an open port does not mean a working service (it may bind to 127.0.0.1 only or be blocked by a firewall), and exposing database or cache ports (3306, 6379, 27017, 9200 and friends) to the internet is the most common source of breaches - unauthenticated Redis reachable from the internet gets ransomed every year. Only scan ports on assets you own or are authorised to test.