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.
| Port | Protocol | Service | Notes |
|---|---|---|---|
| Web · 9 | |||
| 80 | TCP | HTTP | Unencrypted web traffic. Now almost always a redirect to 443. |
| 443 | TCP/UDP | HTTPS | TLS-encrypted web. HTTP/3 uses the same number over UDP via QUIC. |
| 1080 | TCP | SOCKS | SOCKS4/5 proxy, including SSH dynamic port forwarding. |
| 3128convention | TCP | Squid proxy | Default forward-proxy port for Squid. |
| 8000convention | TCP | HTTP alternate | Django, python -m http.server, and countless internal tools. |
| 8008 | TCP | HTTP alternate | Chromecast control, Matrix Synapse, misc. embedded HTTP. |
| 8009 | TCP | AJP | Apache JServ Protocol — Tomcat behind httpd. Ghostcat (CVE-2020-1938) lives here. |
| 8080 | TCP | HTTP alternate | The classic unprivileged stand-in for 80 — Tomcat, proxies, containers. |
| 8443 | TCP | HTTPS alternate | Unprivileged TLS, common for admin consoles and app servers. |
| Mail · 8 | |||
| 24 | TCP | LMTP | Local Mail Transfer Protocol, used between MTA and local delivery agent. |
| 25 | TCP | SMTP | Server-to-server mail relay. Blocked outbound by most consumer ISPs and clouds. |
| 110 | TCP | POP3 | Legacy download-and-delete mail retrieval. |
| 143 | TCP | IMAP | Server-side mailbox access. Use STARTTLS or 993. |
| 465 | TCP | SMTPS | Implicit-TLS submission. Deprecated in 1998, un-deprecated by RFC 8314. |
| 587 | TCP | SMTP submission | The correct port for a mail client to send through. Authenticated, STARTTLS. |
| 993 | TCP | IMAPS | IMAP wrapped in TLS from the first byte. |
| 995 | TCP | POP3S | POP3 wrapped in TLS. |
| File transfer · 12 | |||
| 20 | TCP | FTP data | Active-mode data channel, opened from server back to client. |
| 21 | TCP | FTP control | Command channel. Plaintext credentials — prefer SFTP. |
| 22 | TCP | SSH / SFTP / SCP | One port covers shell, file transfer, and tunnelling. |
| 69 | UDP | TFTP | Trivial FTP — no auth. PXE boot and network device firmware. |
| 115 | TCP | SFTP (simple) | The obsolete Simple FTP, unrelated to SSH file transfer. |
| 445 | TCP | SMB / CIFS | Windows file sharing. Never expose to the internet — EternalBlue, WannaCry. |
| 548 | TCP | AFP | Apple Filing Protocol, superseded by SMB on modern macOS. |
| 873 | TCP | rsync | rsync daemon mode, distinct from rsync over SSH. |
| 989 | TCP | FTPS data | Implicit-TLS FTP data channel. |
| 990 | TCP | FTPS control | Implicit-TLS FTP control channel. |
| 2049 | TCP/UDP | NFS | Network File System. NFSv4 needs only this port. |
| 9418 | TCP | git | The unauthenticated git:// protocol. Read-only and unencrypted. |
| Remote access · 12 | |||
| 23 | TCP | Telnet | Plaintext remote shell. Obsolete, but still on network gear and IoT. |
| 500 | UDP | IKE / IPsec | IPsec key exchange; 4500 carries NAT-traversal traffic. |
| 512 | TCP | rexec | Berkeley remote execution. Plaintext, long obsolete. |
| 513 | TCP | rlogin | Berkeley remote login, replaced by SSH. |
| 514 | TCP | rsh | Remote shell over TCP; syslog uses 514 over UDP. |
| 1194 | UDP | OpenVPN | Default OpenVPN port. TCP/443 is the common firewall-evading fallback. |
| 1701 | UDP | L2TP | Layer 2 Tunnelling Protocol, usually paired with IPsec. |
| 1723 | TCP | PPTP | Cryptographically broken VPN protocol. Do not use. |
| 3389 | TCP/UDP | RDP | Windows Remote Desktop. The most brute-forced port on the internet after 22. |
| 4500 | UDP | IPsec NAT-T | Encapsulates ESP in UDP so IPsec survives NAT. |
| 5900 | TCP | VNC | Display :0. Each extra display adds one (5901, 5902…). Weak native auth. |
| 51820convention | UDP | WireGuard | Conventional default. Silent to unauthenticated probes. |
| Database · 15 | |||
| 1433 | TCP | Microsoft SQL Server | Default instance. Named instances are brokered over UDP/1434. |
| 1521convention | TCP | Oracle DB | Oracle TNS listener. |
| 2379 | TCP | etcd client | Kubernetes' backing store; 2380 carries peer traffic. |
| 3306 | TCP | MySQL / MariaDB | Classic protocol. MySQL X Protocol uses 33060. |
| 5432 | TCP | PostgreSQL | Frontend/backend protocol. PgBouncer commonly fronts it on 6432. |
| 5439convention | TCP | Amazon Redshift | PostgreSQL wire protocol on a different default port. |
| 5984 | TCP | CouchDB | HTTP-native document database. |
| 6379 | TCP | Redis | No auth by default in older builds — a classic accidental exposure. |
| 7000convention | TCP | Cassandra inter-node | Cluster gossip; 7001 is the TLS variant. |
| 8123convention | TCP | ClickHouse HTTP | HTTP interface; 9000 is the native protocol. |
| 9042convention | TCP | Cassandra CQL | Client-facing CQL native transport. |
| 9200convention | TCP | Elasticsearch / OpenSearch | REST API. Publicly exposed clusters have leaked billions of records. |
| 9300convention | TCP | Elasticsearch transport | Node-to-node binary transport, removed in ES 8. |
| 11211 | TCP/UDP | memcached | The UDP side was the amplification vector behind the 1.35 Tbps GitHub attack. |
| 27017convention | TCP | MongoDB | Default mongod. Historically bound to 0.0.0.0 with no auth. |
| Name & directory · 11 | |||
| 53 | UDP/TCP | DNS | UDP for queries, TCP for zone transfers and responses over 512 bytes. |
| 88 | TCP/UDP | Kerberos | Ticket-granting service, the core of Active Directory authentication. |
| 137 | UDP | NetBIOS name | Legacy Windows name resolution. 138 datagram, 139 session. |
| 389 | TCP/UDP | LDAP | Directory queries. Upgradeable to TLS via STARTTLS. |
| 464 | TCP/UDP | kpasswd | Kerberos password change. |
| 636 | TCP | LDAPS | LDAP wrapped in TLS from connection start. |
| 749 | TCP | Kerberos admin | kadmin administrative interface. |
| 853 | TCP/UDP | DNS over TLS / QUIC | Encrypted DNS. DoH instead rides ordinary HTTPS on 443. |
| 1812 | UDP | RADIUS auth | Network access authentication; 1813 carries accounting. |
| 3268 | TCP | AD Global Catalog | Forest-wide directory search; 3269 is the TLS version. |
| 5353 | UDP | mDNS | Multicast DNS — Bonjour, AirPlay, Chromecast discovery. |
| Network & infrastructure · 16 | |||
| 67 | UDP | DHCP server | Server listens on 67, client replies on 68. |
| 68 | UDP | DHCP client | The client half of the DHCP conversation. |
| 111 | TCP/UDP | rpcbind / portmapper | Maps RPC programs to ports. Another amplification favourite. |
| 123 | UDP | NTP | Time sync. The monlist command was a major DDoS amplifier until 2014. |
| 135 | TCP | MS RPC endpoint mapper | Windows DCOM/RPC locator. Should never face the internet. |
| 161 | UDP | SNMP | Device polling. v1/v2c send the community string in the clear. |
| 162 | UDP | SNMP trap | Unsolicited alerts pushed from device to manager. |
| 179 | TCP | BGP | The routing protocol that holds the internet together. |
| 514 | UDP | syslog | Classic unencrypted log shipping; 6514 is syslog over TLS. |
| 520 | UDP | RIP | Routing Information Protocol, largely historical. |
| 546 | UDP | DHCPv6 client | IPv6 address configuration; 547 is the server side. |
| 623 | UDP | IPMI / BMC | Out-of-band server management. Notoriously weak authentication. |
| 631 | TCP/UDP | IPP / CUPS | Internet Printing Protocol and the CUPS admin interface. |
| 1900 | UDP | SSDP / UPnP | Device discovery. Exposed on WAN it is a serious amplification risk. |
| 3260 | TCP | iSCSI target | Block storage over IP. |
| 4789 | UDP | VXLAN | Layer-2 overlay tunnelling for data-centre and container networks. |
| Messaging & streaming · 10 | |||
| 554 | TCP/UDP | RTSP | Stream control for IP cameras and media servers. |
| 1883 | TCP | MQTT | Lightweight IoT pub/sub; 8883 is the TLS version. |
| 1935 | TCP | RTMP | The ingest protocol still used by nearly every live-streaming platform. |
| 2181convention | TCP | ZooKeeper | Coordination service still fronting many Kafka and Hadoop clusters. |
| 4222convention | TCP | NATS | Client connections; 8222 serves monitoring. |
| 4369 | TCP | EPMD | Erlang port mapper — RabbitMQ and Elixir clusters depend on it. |
| 5222 | TCP | XMPP client | Jabber client-to-server; 5269 is server-to-server. |
| 5672 | TCP | AMQP / RabbitMQ | Broker protocol; 5671 for TLS, 15672 for the management UI. |
| 6667convention | TCP | IRC | Classic IRC; 6697 is the TLS convention. |
| 9092convention | TCP | Apache Kafka | Broker listener. KRaft controllers commonly use 9093. |
| Monitoring & ops · 12 | |||
| 2375convention | TCP | Docker daemon | Unencrypted API. Open to the internet it is instant root on the host. |
| 2376convention | TCP | Docker daemon TLS | The certificate-authenticated variant of 2375. |
| 3000convention | TCP | Grafana | Shares its default with Node/Next dev servers — a frequent local clash. |
| 3100convention | TCP | Loki | Grafana's log aggregation API. |
| 4317convention | TCP | OpenTelemetry gRPC | OTLP collector receiver; 4318 takes HTTP. |
| 6443convention | TCP | Kubernetes API | kube-apiserver. Exposing it without RBAC hands over the cluster. |
| 8006convention | TCP | Proxmox VE | Hypervisor management interface. |
| 8086convention | TCP | InfluxDB | HTTP API for the time-series database. |
| 9090convention | TCP | Prometheus | Server UI and query API. Also Cockpit's default on some distros. |
| 9100convention | TCP | node_exporter | Host metrics endpoint. Collides with the JetDirect printing port. |
| 10000convention | TCP | Webmin | Server administration web UI. |
| 10250convention | TCP | kubelet | Node agent API — unauthenticated access allows container exec. |
| Dev servers · 10 | |||
| 1313convention | TCP | Hugo | hugo server default. |
| 3001convention | TCP | Node alternate | Where the API lands when the frontend already took 3000. |
| 4040convention | TCP | Spark UI / ngrok | Spark application UI, and ngrok's local inspection dashboard. |
| 4200convention | TCP | Angular CLI | ng serve default. |
| 4321convention | TCP | Astro | Astro dev server default. |
| 5000convention | TCP | Flask / .NET | On macOS this collides with AirPlay Receiver — a well-known trap. |
| 5173convention | TCP | Vite | Vite dev server default, inherited by SvelteKit, Nuxt 3 and others. |
| 8888convention | TCP | Jupyter | Notebook and JupyterLab default. |
| 9000convention | TCP | PHP-FPM / SonarQube / MinIO | One of the most heavily overloaded defaults in existence. |
| 19000convention | TCP | Expo | React Native / Expo dev tooling. |
| Games & media · 8 | |||
| 3478 | UDP | STUN / TURN | NAT traversal for WebRTC voice and video. |
| 5060 | TCP/UDP | SIP | VoIP call signalling; 5061 is the TLS variant. |
| 6881 | TCP/UDP | BitTorrent | The historical default; clients now randomise across 6881–6889 and beyond. |
| 8096convention | TCP | Jellyfin | Open-source media server HTTP port. |
| 19132convention | UDP | Minecraft Bedrock | Bedrock Edition, which runs over UDP instead. |
| 25565convention | TCP | Minecraft Java | Java Edition server default. |
| 27015convention | UDP/TCP | Source engine | Counter-Strike, Team Fortress, Garry's Mod and other Valve servers. |
| 32400convention | TCP | Plex | Media 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
| Range | Name | What it means in practice |
|---|---|---|
| 0 – 1023 | Well-known / system | Assigned 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 – 49151 | Registered / user | Vendors 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 – 65535 | Dynamic / ephemeral | Never 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.