Toolman

Common port numbers

The ports you actually run into, with what each is for and why it matters if one is exposed.

PortServiceProtocol
20FTP dataTCP
21FTP controlTCP
22SSH / SFTPTCP
23TelnetTCP
25SMTPTCP
53DNSTCP/UDP
67DHCP serverUDP
68DHCP clientUDP
69TFTPUDP
80HTTPTCP
110POP3TCP
123NTPUDP
143IMAPTCP
161SNMPUDP
389LDAPTCP
443HTTPSTCP
445SMBTCP
465SMTPSTCP
514SyslogUDP
587SMTP submissionTCP
636LDAPSTCP
993IMAPSTCP
995POP3STCP
1080SOCKS proxyTCP
1433Microsoft SQL ServerTCP
1521Oracle DatabaseTCP
1883MQTTTCP
2049NFSTCP/UDP
2375Docker API (plain)TCP
2376Docker API (TLS)TCP
3000Node.js / dev serverTCP
3306MySQL / MariaDBTCP
3389RDPTCP
4200Angular dev serverTCP
5000Flask / dev serverTCP
5173ViteTCP
5432PostgreSQLTCP
5672AMQP / RabbitMQTCP
6379RedisTCP
8000HTTP alternateTCP
8080HTTP alternateTCP
8443HTTPS alternateTCP
8883MQTT over TLSTCP
9000PHP-FPM / SonarQube / PortainerTCP
9090PrometheusTCP
9200ElasticsearchTCP
11211MemcachedTCP/UDP
27017MongoDBTCP

The three port ranges

RangeNameWhat it means
0–1023Well-known portsAssigned by IANA to standard services. On Unix, binding to these requires root or the CAP_NET_BIND_SERVICE capability — which is why development servers use 3000 or 8080 instead.
1024–49151Registered portsRegistered with IANA for specific applications, but usable by ordinary user processes. Most database and application servers live here.
49152–65535Dynamic / ephemeral portsAllocated automatically for the client side of outbound connections. Running out of them is a real failure mode on busy proxies.

The ports that should never face the internet

If a scan finds any of these open on a public address, treat it as an incident rather than a configuration preference: 23 (Telnet), 445 (SMB), 2375 (Docker API), 3306 (MySQL), 3389 (RDP), 5432 (PostgreSQL), 6379 (Redis), 9200 (Elasticsearch) and 27017 (MongoDB). Each of these has been the root cause of large, well-documented breaches.

Why development servers use 3000 and 8080

On Unix-like systems, binding to a port below 1024 requires root. Rather than run a development server as root, the convention settled on high ports — 3000, 4200, 5173, 8000, 8080 — which any user process can bind. In production a reverse proxy holds 80 and 443 and forwards to the application on its high port.