DeveloperInformationEducationUtility

Well-Known Port Numbers

Searchable reference of the TCP and UDP ports that actually matter, from HTTP and SSH to Kafka, Postgres and dev servers, with the port ranges and what each one is really used for.

0 – 1023

Well-known

Assigned by IANA. Binding requires root or CAP_NET_BIND_SERVICE.

1024 – 49151

Registered

Registered by vendors. Any user can bind these.

49152 – 65535

Dynamic

Ephemeral source ports. Never assign a service here.

PortProtocolServiceNotes
Web · 9
80TCPHTTPUnencrypted web traffic. Now almost always a redirect to 443.
443TCP/UDPHTTPSTLS-encrypted web. HTTP/3 uses the same number over UDP via QUIC.
1080TCPSOCKSSOCKS4/5 proxy, including SSH dynamic port forwarding.
3128conventionTCPSquid proxyDefault forward-proxy port for Squid.
8000conventionTCPHTTP alternateDjango, python -m http.server, and countless internal tools.
8008TCPHTTP alternateChromecast control, Matrix Synapse, misc. embedded HTTP.
8009TCPAJPApache JServ Protocol — Tomcat behind httpd. Ghostcat (CVE-2020-1938) lives here.
8080TCPHTTP alternateThe classic unprivileged stand-in for 80 — Tomcat, proxies, containers.
8443TCPHTTPS alternateUnprivileged TLS, common for admin consoles and app servers.
Mail · 8
24TCPLMTPLocal Mail Transfer Protocol, used between MTA and local delivery agent.
25TCPSMTPServer-to-server mail relay. Blocked outbound by most consumer ISPs and clouds.
110TCPPOP3Legacy download-and-delete mail retrieval.
143TCPIMAPServer-side mailbox access. Use STARTTLS or 993.
465TCPSMTPSImplicit-TLS submission. Deprecated in 1998, un-deprecated by RFC 8314.
587TCPSMTP submissionThe correct port for a mail client to send through. Authenticated, STARTTLS.
993TCPIMAPSIMAP wrapped in TLS from the first byte.
995TCPPOP3SPOP3 wrapped in TLS.
File transfer · 12
20TCPFTP dataActive-mode data channel, opened from server back to client.
21TCPFTP controlCommand channel. Plaintext credentials — prefer SFTP.
22TCPSSH / SFTP / SCPOne port covers shell, file transfer, and tunnelling.
69UDPTFTPTrivial FTP — no auth. PXE boot and network device firmware.
115TCPSFTP (simple)The obsolete Simple FTP, unrelated to SSH file transfer.
445TCPSMB / CIFSWindows file sharing. Never expose to the internet — EternalBlue, WannaCry.
548TCPAFPApple Filing Protocol, superseded by SMB on modern macOS.
873TCPrsyncrsync daemon mode, distinct from rsync over SSH.
989TCPFTPS dataImplicit-TLS FTP data channel.
990TCPFTPS controlImplicit-TLS FTP control channel.
2049TCP/UDPNFSNetwork File System. NFSv4 needs only this port.
9418TCPgitThe unauthenticated git:// protocol. Read-only and unencrypted.
Remote access · 12
23TCPTelnetPlaintext remote shell. Obsolete, but still on network gear and IoT.
500UDPIKE / IPsecIPsec key exchange; 4500 carries NAT-traversal traffic.
512TCPrexecBerkeley remote execution. Plaintext, long obsolete.
513TCPrloginBerkeley remote login, replaced by SSH.
514TCPrshRemote shell over TCP; syslog uses 514 over UDP.
1194UDPOpenVPNDefault OpenVPN port. TCP/443 is the common firewall-evading fallback.
1701UDPL2TPLayer 2 Tunnelling Protocol, usually paired with IPsec.
1723TCPPPTPCryptographically broken VPN protocol. Do not use.
3389TCP/UDPRDPWindows Remote Desktop. The most brute-forced port on the internet after 22.
4500UDPIPsec NAT-TEncapsulates ESP in UDP so IPsec survives NAT.
5900TCPVNCDisplay :0. Each extra display adds one (5901, 5902…). Weak native auth.
51820conventionUDPWireGuardConventional default. Silent to unauthenticated probes.
Database · 15
1433TCPMicrosoft SQL ServerDefault instance. Named instances are brokered over UDP/1434.
1521conventionTCPOracle DBOracle TNS listener.
2379TCPetcd clientKubernetes' backing store; 2380 carries peer traffic.
3306TCPMySQL / MariaDBClassic protocol. MySQL X Protocol uses 33060.
5432TCPPostgreSQLFrontend/backend protocol. PgBouncer commonly fronts it on 6432.
5439conventionTCPAmazon RedshiftPostgreSQL wire protocol on a different default port.
5984TCPCouchDBHTTP-native document database.
6379TCPRedisNo auth by default in older builds — a classic accidental exposure.
7000conventionTCPCassandra inter-nodeCluster gossip; 7001 is the TLS variant.
8123conventionTCPClickHouse HTTPHTTP interface; 9000 is the native protocol.
9042conventionTCPCassandra CQLClient-facing CQL native transport.
9200conventionTCPElasticsearch / OpenSearchREST API. Publicly exposed clusters have leaked billions of records.
9300conventionTCPElasticsearch transportNode-to-node binary transport, removed in ES 8.
11211TCP/UDPmemcachedThe UDP side was the amplification vector behind the 1.35 Tbps GitHub attack.
27017conventionTCPMongoDBDefault mongod. Historically bound to 0.0.0.0 with no auth.
Name & directory · 11
53UDP/TCPDNSUDP for queries, TCP for zone transfers and responses over 512 bytes.
88TCP/UDPKerberosTicket-granting service, the core of Active Directory authentication.
137UDPNetBIOS nameLegacy Windows name resolution. 138 datagram, 139 session.
389TCP/UDPLDAPDirectory queries. Upgradeable to TLS via STARTTLS.
464TCP/UDPkpasswdKerberos password change.
636TCPLDAPSLDAP wrapped in TLS from connection start.
749TCPKerberos adminkadmin administrative interface.
853TCP/UDPDNS over TLS / QUICEncrypted DNS. DoH instead rides ordinary HTTPS on 443.
1812UDPRADIUS authNetwork access authentication; 1813 carries accounting.
3268TCPAD Global CatalogForest-wide directory search; 3269 is the TLS version.
5353UDPmDNSMulticast DNS — Bonjour, AirPlay, Chromecast discovery.
Network & infrastructure · 16
67UDPDHCP serverServer listens on 67, client replies on 68.
68UDPDHCP clientThe client half of the DHCP conversation.
111TCP/UDPrpcbind / portmapperMaps RPC programs to ports. Another amplification favourite.
123UDPNTPTime sync. The monlist command was a major DDoS amplifier until 2014.
135TCPMS RPC endpoint mapperWindows DCOM/RPC locator. Should never face the internet.
161UDPSNMPDevice polling. v1/v2c send the community string in the clear.
162UDPSNMP trapUnsolicited alerts pushed from device to manager.
179TCPBGPThe routing protocol that holds the internet together.
514UDPsyslogClassic unencrypted log shipping; 6514 is syslog over TLS.
520UDPRIPRouting Information Protocol, largely historical.
546UDPDHCPv6 clientIPv6 address configuration; 547 is the server side.
623UDPIPMI / BMCOut-of-band server management. Notoriously weak authentication.
631TCP/UDPIPP / CUPSInternet Printing Protocol and the CUPS admin interface.
1900UDPSSDP / UPnPDevice discovery. Exposed on WAN it is a serious amplification risk.
3260TCPiSCSI targetBlock storage over IP.
4789UDPVXLANLayer-2 overlay tunnelling for data-centre and container networks.
Messaging & streaming · 10
554TCP/UDPRTSPStream control for IP cameras and media servers.
1883TCPMQTTLightweight IoT pub/sub; 8883 is the TLS version.
1935TCPRTMPThe ingest protocol still used by nearly every live-streaming platform.
2181conventionTCPZooKeeperCoordination service still fronting many Kafka and Hadoop clusters.
4222conventionTCPNATSClient connections; 8222 serves monitoring.
4369TCPEPMDErlang port mapper — RabbitMQ and Elixir clusters depend on it.
5222TCPXMPP clientJabber client-to-server; 5269 is server-to-server.
5672TCPAMQP / RabbitMQBroker protocol; 5671 for TLS, 15672 for the management UI.
6667conventionTCPIRCClassic IRC; 6697 is the TLS convention.
9092conventionTCPApache KafkaBroker listener. KRaft controllers commonly use 9093.
Monitoring & ops · 12
2375conventionTCPDocker daemonUnencrypted API. Open to the internet it is instant root on the host.
2376conventionTCPDocker daemon TLSThe certificate-authenticated variant of 2375.
3000conventionTCPGrafanaShares its default with Node/Next dev servers — a frequent local clash.
3100conventionTCPLokiGrafana's log aggregation API.
4317conventionTCPOpenTelemetry gRPCOTLP collector receiver; 4318 takes HTTP.
6443conventionTCPKubernetes APIkube-apiserver. Exposing it without RBAC hands over the cluster.
8006conventionTCPProxmox VEHypervisor management interface.
8086conventionTCPInfluxDBHTTP API for the time-series database.
9090conventionTCPPrometheusServer UI and query API. Also Cockpit's default on some distros.
9100conventionTCPnode_exporterHost metrics endpoint. Collides with the JetDirect printing port.
10000conventionTCPWebminServer administration web UI.
10250conventionTCPkubeletNode agent API — unauthenticated access allows container exec.
Dev servers · 10
1313conventionTCPHugohugo server default.
3001conventionTCPNode alternateWhere the API lands when the frontend already took 3000.
4040conventionTCPSpark UI / ngrokSpark application UI, and ngrok's local inspection dashboard.
4200conventionTCPAngular CLIng serve default.
4321conventionTCPAstroAstro dev server default.
5000conventionTCPFlask / .NETOn macOS this collides with AirPlay Receiver — a well-known trap.
5173conventionTCPViteVite dev server default, inherited by SvelteKit, Nuxt 3 and others.
8888conventionTCPJupyterNotebook and JupyterLab default.
9000conventionTCPPHP-FPM / SonarQube / MinIOOne of the most heavily overloaded defaults in existence.
19000conventionTCPExpoReact Native / Expo dev tooling.
Games & media · 8
3478UDPSTUN / TURNNAT traversal for WebRTC voice and video.
5060TCP/UDPSIPVoIP call signalling; 5061 is the TLS variant.
6881TCP/UDPBitTorrentThe historical default; clients now randomise across 6881–6889 and beyond.
8096conventionTCPJellyfinOpen-source media server HTTP port.
19132conventionUDPMinecraft BedrockBedrock Edition, which runs over UDP instead.
25565conventionTCPMinecraft JavaJava Edition server default.
27015conventionUDP/TCPSource engineCounter-Strike, Team Fortress, Garry's Mod and other Valve servers.
32400conventionTCPPlexMedia server web interface and streaming.

What a port actually is

An IP address gets a packet to the right machine. A port gets it to the right program on that machine. It is a 16-bit number in the TCP or UDP header, which is why the range stops at 65535, and it exists purely so one host can run a web server, a database, and an SSH daemon without them reading each other's mail.

A connection is identified by four things together — source IP, source port, destination IP, destination port — so thousands of browsers can all talk to port 443 on the same server without ambiguity. Each of them uses a different source port, drawn from the ephemeral range at the top.

TCP and UDP number their ports independently. Port 53/TCP and 53/UDP are technically different endpoints, even though DNS happens to use both. That is why the protocol column matters.

The three ranges

RangeNameWhat it means in practice
0 – 1023Well-known / systemAssigned by IANA. On Unix, binding one requires root or the CAP_NET_BIND_SERVICE capability — a 1980s security assumption that a low port implied a trusted service.
1024 – 49151Registered / userVendors register these with IANA, but nothing enforces it. Any unprivileged process can bind here, which is why containers and dev servers live in this range.
49152 – 65535Dynamic / ephemeralNever assigned. The kernel hands these out as source ports for outbound connections. Linux actually defaults to 32768–60999, which you can read from /proc/sys/net/ipv4/ip_local_port_range.

Only the first range is genuinely coordinated. Much of what developers meet day to day — 3000, 5432, 6379, 9092, 27017 — is convention, not assignment, and the table above marks those rows accordingly.

Ports that should never face the internet

Internet-wide scanning finds every open port on every public address within hours. These are the ones that turn an exposed host into someone else's host:

  • 445 (SMB) — the vector for WannaCry and NotPetya. There is no configuration that makes public SMB acceptable.
  • 3389 (RDP) — among the most brute-forced ports on the internet and the most common ransomware entry point. Put it behind a VPN.
  • 2375 (Docker API) — unauthenticated by design. Anyone who can reach it can start a privileged container and own the host.
  • 6379 (Redis), 27017 (MongoDB), 9200 (Elasticsearch) — all historically shipped with no authentication and bound to every interface. Billions of records have leaked this way.
  • 623 (IPMI) — out-of-band management with a long history of authentication bypasses. It grants power over the physical machine.
  • 10250 (kubelet) — unauthenticated access allows executing commands inside any container on the node.

The general rule: databases, admin interfaces and orchestration APIs belong on a private network or behind a VPN. Binding to 127.0.0.1 instead of 0.0.0.0 is the single cheapest mitigation, and it prevents most accidental exposure outright.

Finding out what is using a port

macOS / Linux

lsof -i :3000
ss -tulpn | grep :3000
kill -9 $(lsof -t -i :3000)

Windows

netstat -ano | findstr :3000
tasklist /fi "pid eq 12345"
taskkill /PID 12345 /F

Is a remote port open?

nc -zv example.com 443
curl -v telnet://example.com:5432
nmap -p 22,80,443 example.com

What is listening everywhere?

ss -tulpn | grep '0.0.0.0'
docker ps --format '{{.Names}} {{.Ports}}'

The three most common local collisions

3000 — Node/Next and Grafana want the same port. 5000 — on macOS this is taken by AirPlay Receiver, which breaks Flask and .NET defaults until you turn it off in System Settings. 9000 — PHP-FPM, SonarQube, MinIO, and Portainer all claim it.

Ports and modern networking

HTTP/3 kept the number and changed the transport. It runs on 443/UDP via QUIC rather than 443/TCP. Firewalls that allow TCP 443 but block UDP 443 silently force clients back to HTTP/2, which is a common and hard-to-spot performance regression.

NAT made source ports scarce. Carrier-grade NAT shares one public address across thousands of subscribers by multiplexing source ports. Each device gets a slice of the 65k space, which is why aggressive connection-per-request patterns behave badly on mobile networks.

Containers remapped everything. A port inside a container is not the port outside it, and -p 8080:80 means the world sees 8080 while the process believes it is on 80. Most "the port is not open" incidents in container setups are a mapping mistake, not a firewall one.

SNI ended the one-IP-per-site era. Virtual hosting on 443 means the port no longer identifies the service — the TLS handshake does. Which is also why a single well-known port can front thousands of unrelated applications.