Common network ports cheat sheet

TCP and UDP ports fall into three IANA-defined ranges: well-known ports 0–1023 (system services such as 22 SSH and 443 HTTPS), registered ports 1024–49151 (application services such as 3306 MySQL), and dynamic/ephemeral ports 49152–65535 (outbound client connections). Every row below is checked against the IANA registry — use this page to look up which service goes with which port, or to check what a port is actually serving.

The three port ranges

Every TCP or UDP connection needs two ends: an address and a port. The port tells the stack which service the payload belongs to, and IANA keeps the registry that settles what a well-known number means. Three ranges come out of RFC 6335:

The table

Use the filter to skip everything you don't care about: type mysql, tls or k8s to see only matching rows.

Stacked from the IANA registry: the registered service name where one exists, and the software that actually owns the port in real networks. Rows marked "common use, not IANA" are conventions, not registrations.
PortTCP/UDPService (IANA name where registered)Uses
20TCPftp-dataFTP data transfer — the control connection is port 21
21TCPftpFTP control — authentication and commands
22TCP/UDPsshSecure Shell: remote shell, SFTP, SCP. IANA registers the UDP side too
23TCP/UDPtelnetTelnet — plaintext remote terminal; use SSH across the internet
25TCPsmtpSMTP mail transfer between servers
53TCP/UDPdomain (DNS)DNS name resolution; TCP 53 also carries zone transfers
67-68UDPbootps / bootpcDHCP server (BOOTP server) and client — the server listens on 67, clients reply from 68
69UDPtftpTrivial File Transfer — no authentication; LAN imaging and firmware only
80TCPhttpWorld Wide Web HTTP — the default cleartext web port
88TCP/UDPkerberosKerberos tickets — authentication in an AD domain
110TCPpop3POP3 mail retrieval
111TCP/UDPsunrpcrpcbind/portmapper — RPC services register here; the legacy RPC-mode rsync used it
123TCP/UDPntpNetwork Time Protocol
135TCP/UDPepmapDCE endpoint mapper — the handshake behind Windows WMI and DCOM remoting
137-139TCP/UDPnetbios-ns / -dgm / -ssnNetBIOS name, datagram and session — legacy Windows sharing, superseded by SMB on 445
143TCPimapIMAP mail retrieval with server-side folders
161-162UDPsnmp / snmptrapSNMP polling (161) and the traps devices push here (162)
179TCPbgpBGP routing between networks
194TCPircInternet Relay Chat
389TCP/UDPldapLDAP directory queries; LDAP over TLS is 636
443TCP/UDPhttpsHTTPS — the port web clients hit by default; also HTTP/2 and other tunnels
445TCP/UDPmicrosoft-dsSMB direct — modern Windows file sharing, AD SYSVOL and netlogon
465TCPsubmissions (SMTPS)SMTP over TLS — the registry renamed the service SMTPS to submissions
514UDPsyslogSyslog transport (UDP). TCP 514 is an IANA-registered RSH shell service — check before assuming
515TCPprinterLPD / LPR line-printer daemon
548TCPafpovertcpAFP over TCP — Apple file sharing, Time Machine targets
587TCPsubmissionMail submission — where authenticated mail clients hand mail to their server
631TCP/UDPippIPP printing — CUPS and AirPrint
636TCP/UDPldapsLDAP over TLS
873TCPrsyncrsync daemon for rsync:// transfers; rsync over SSH still uses 22
9418TCPgitgit:// pack-transfer service
989-990TCPftps-data / ftpsFTPS — FTP with TLS on the data and control channels
992, 993, 995TCPtelnets / imaps / pop3sTelnet, IMAP and POP3 wrapped in TLS
1022TCPexp2Convenient SSH alternate port for dual-stack or restricted setups (common use, not IANA)
1433TCPms-sql-sMicrosoft SQL Server
1521TCPncube-lmOracle Database listener (common use, not IANA)
2049TCP/UDPnfsNFS file sharing
2181TCPeforwardApache ZooKeeper clients (common use, not IANA)
2375-2376TCPdocker / docker-sDocker daemon HTTP API, plaintext and TLS — both IANA-registered; never expose plaintext
3000TCPhbciDev servers, Grafana, Node apps (common use, not IANA)
3128TCPndl-aasSquid proxy (common use, not IANA)
3306TCPmysqlMySQL
3389TCP/UDPms-wbt-serverRemote Desktop (RDP)
4369TCPepmdErlang port mapper — RabbitMQ cluster peer discovery
5432TCPpostgresqlPostgreSQL
5601TCPesmagentKibana dashboard (common use, not IANA)
5671TCPamqpsAMQP over TLS — RabbitMQ and other brokers
5672TCPamqpAMQP — plaintext broker protocol
5900TCPrfbVNC — IANA registers the protocol name (Remote Framebuffer), which is what VNC uses
5985-5986TCPwsman / wsmansWinRM over HTTP (5985) and HTTPS (5986) — PowerShell remoting
6379TCPredisRedis — IANA-registered; not bound to localhost by default, so firewall it or set requirepass/ACLs
6443TCPsun-sr-httpsKubernetes API server (common use, not IANA)
8080-8443TCPhttp-alt / pcsync-httpsHTTP and HTTPS on alternate ports — proxies, app consoles, dev containers; 8443 also carries the k8s node listeners
8500TCPfmtpConsul server RPC and HTTP UI (common use, not IANA)
9000TCPcslistenerPHP-FPM, SonarQube, Portainer and friends (common use, not IANA)
9090TCPwebsmPrometheus web UI (common use, not IANA)
9092TCPXmlIpcRegSvcKafka broker (common use, not IANA)
9200-9300TCPwap-wsp / vraceElasticsearch HTTP API (9200) and node-to-node transport (9300) (common use, not IANA)
11211TCP/UDPmemcacheMemcached — authless by default; never cross a firewall
15672TCPnot registeredRabbitMQ management UI (common use, not IANA)
27017TCPmongodbMongoDB — IANA-registered
5000TCPcommplex-mainLocal Docker registry for image pushes (common use, not IANA)

How to check what a port is actually serving

Find what owns a port
netstat -ano | findstr :443
tasklist /fi "PID eq 5688"

# PowerShell equivalents
Get-NetTCPConnection -LocalPort 443 | Select-Object LocalAddress, LocalPort, State, OwningProcess
Get-Process -Id 5688

For every listener you see, the State column says what it is: Listen is a service accepting new connections, Established is a live session, TimeWait is a just-closed connection. TimeWait is normal after a burst of short connections, but it is never the state you firewall against.

Who may bind low ports: on Linux, binding below 1024 needs root or CAP_NET_BIND_SERVICE, so an unprivileged service such as a PHP-FPM pool or a Node app picks a registered-range or dynamic port. On Windows no special right is needed to bind a low port, which is why so many dev services sit on 8080 instead of 80. Reading the table is a different matter: a port is an identifier, not a policy — the port number never makes the traffic secure, only the service and its controls do.

FAQ

What is a well-known port?

A port in the IANA well-known range (0-1023). IANA assigns each number to a service — 80 HTTP, 443 HTTPS, 25 SMTP — and the assignment is what lets clients know what they are talking to without prior configuration. The registered range (1024-49151) holds app-specific services, and 49152-65535 is the dynamic range the OS hands out to outbound connections. That classification came from RFC 6335.

Why is port 443 HTTPS?

Because IANA registered it that way: 'https' is the officially reserved name for HTTP over TLS/SSL on 443. Browsers use it by default when you type https://, and it has grown beyond web pages — HTTP/2, WebSockets and APIs all route through it, which makes it the only port most modern deployments have to open.

Is port 9000 secure?

The number is not the security boundary. IANA has no 'PHP-FPM' entry on 9000 — it is assigned to cslistener — so any app can use the port, and what matters is which service listens there and how you filter it. Check the actual service with netstat or Get-NetTCPConnection, restrict with firewall rules that match the service, and never treat a famous port number as authentication.

How do I find which process is using a port?

In cmd: netstat -ano | findstr :443, then tasklist /fi "PID eq <pid>". In PowerShell: Get-NetTCPConnection -LocalPort 443 | Select-Object State, OwningProcess, then Get-Process -Id <pid>. Watch the transport when checking: UDP 514 is syslog, while TCP 514 is a registered RSH shell protocol — the same number, two different services.