TCP & UDP Port Numbers Reference
Well-known and registered ports with the service on each and its transport protocol.
| Port | Protocol | Service | Category | Description | |
|---|---|---|---|---|---|
| 20 | TCP | FTP | Well-known | File Transfer Protocol — data transfer | |
| 21 | TCP | FTP | Well-known | File Transfer Protocol — control | |
| 22 | TCP | SSH | Well-known | Secure Shell — encrypted remote login and tunneling | |
| 23 | TCP | Telnet | Well-known | Telnet — unencrypted remote terminal (legacy) | |
| 25 | TCP | SMTP | Well-known | Simple Mail Transfer Protocol — email sending | |
| 53 | TCP/UDP | DNS | Well-known | Domain Name System — hostname to IP resolution | |
| 67 | UDP | DHCP | Well-known | Dynamic Host Configuration Protocol — server | |
| 68 | UDP | DHCP | Well-known | Dynamic Host Configuration Protocol — client | |
| 69 | UDP | TFTP | Well-known | Trivial File Transfer Protocol | |
| 80 | TCP | HTTP | Well-known | Hypertext Transfer Protocol — unencrypted web traffic | |
| 110 | TCP | POP3 | Well-known | Post Office Protocol v3 — email retrieval | |
| 119 | TCP | NNTP | Well-known | Network News Transfer Protocol | |
| 123 | UDP | NTP | Well-known | Network Time Protocol — clock synchronization | |
| 143 | TCP | IMAP | Well-known | Internet Message Access Protocol — email retrieval | |
| 161 | UDP | SNMP | Well-known | Simple Network Management Protocol | |
| 194 | TCP | IRC | Well-known | Internet Relay Chat | |
| 389 | TCP/UDP | LDAP | Well-known | Lightweight Directory Access Protocol | |
| 443 | TCP | HTTPS | Well-known | HTTP Secure — encrypted web traffic (TLS) | |
| 445 | TCP | SMB | Well-known | Server Message Block — Windows file sharing | |
| 465 | TCP | SMTPS | Well-known | SMTP over TLS — secure email sending | |
| 514 | UDP | Syslog | Well-known | System Logging Protocol | |
| 587 | TCP | SMTP | Well-known | SMTP submission — email sending (STARTTLS) | |
| 636 | TCP | LDAPS | Well-known | LDAP over TLS | |
| 993 | TCP | IMAPS | Well-known | IMAP over TLS — secure email retrieval | |
| 995 | TCP | POP3S | Well-known | POP3 over TLS | |
| 1080 | TCP | SOCKS | Registered | SOCKS proxy protocol | |
| 1194 | TCP/UDP | OpenVPN | Registered | OpenVPN | |
| 1433 | TCP | MSSQL | Registered | Microsoft SQL Server database | |
| 1521 | TCP | Oracle DB | Registered | Oracle Database default listener | |
| 1883 | TCP | MQTT | Registered | Message Queuing Telemetry Transport (IoT) | |
| 2181 | TCP | ZooKeeper | Registered | Apache ZooKeeper client port | |
| 2375 | TCP | Docker | Registered | Docker daemon API (unencrypted) | |
| 2376 | TCP | Docker | Registered | Docker daemon API (TLS) | |
| 3000 | TCP | Dev Server | Registered | Common dev server port (React, Next.js, etc.) | |
| 3306 | TCP | MySQL | Registered | MySQL and MariaDB database | |
| 3389 | TCP | RDP | Registered | Remote Desktop Protocol — Windows | |
| 4200 | TCP | Angular | Registered | Angular CLI dev server default | |
| 4443 | TCP | HTTPS Alt | Registered | Alternate HTTPS port | |
| 5000 | TCP | Flask / UPnP | Registered | Flask dev server / UPnP | |
| 5432 | TCP | PostgreSQL | Registered | PostgreSQL database | |
| 5601 | TCP | Kibana | Registered | Kibana web interface (ELK stack) | |
| 5672 | TCP | RabbitMQ | Registered | RabbitMQ AMQP messaging | |
| 5900 | TCP | VNC | Registered | Virtual Network Computing remote desktop | |
| 6379 | TCP | Redis | Registered | Redis key-value data store | |
| 6443 | TCP | Kubernetes | Registered | Kubernetes API server | |
| 7700 | TCP | Meilisearch | Registered | Meilisearch search engine | |
| 8000 | TCP | HTTP Alt | Registered | Common alternative HTTP / Django dev server | |
| 8080 | TCP | HTTP Alt | Registered | Common HTTP proxy / Tomcat / Spring Boot | |
| 8086 | TCP | InfluxDB | Registered | InfluxDB time-series database HTTP API | |
| 8443 | TCP | HTTPS Alt | Registered | Common alternative HTTPS port | |
| 8888 | TCP | Jupyter | Registered | Jupyter Notebook web interface | |
| 9000 | TCP | PHP-FPM | Registered | PHP-FPM / SonarQube / MinIO API | |
| 9090 | TCP | Prometheus | Registered | Prometheus metrics server | |
| 9092 | TCP | Kafka | Registered | Apache Kafka broker | |
| 9200 | TCP | Elasticsearch | Registered | Elasticsearch REST API | |
| 9300 | TCP | Elasticsearch | Registered | Elasticsearch inter-node communication | |
| 9418 | TCP | Git | Registered | Git protocol | |
| 10250 | TCP | Kubelet | Registered | Kubernetes Kubelet API | |
| 15672 | TCP | RabbitMQ | Registered | RabbitMQ management web UI | |
| 27017 | TCP | MongoDB | Registered | MongoDB document database | |
| 50051 | TCP | gRPC | Registered | gRPC default port |
The three port ranges
| Range | Name | Assignment | Notes |
|---|---|---|---|
| 0–1023 | Well-known | IANA | Binding requires root on Unix — the origin of privilege-dropping in daemons |
| 1024–49151 | Registered | IANA on request | Where most application services live |
| 49152–65535 | Dynamic / ephemeral | Unassigned | Source ports for outbound connections, allocated by the OS |
Linux defaults its ephemeral range to 32768–60999 rather than the IANA range, which is why a service bound to 40000 can intermittently conflict with an outbound connection. Check /proc/sys/net/ipv4/ip_local_port_range before choosing a fixed port in that region.
Ports worth knowing by heart
| Port | Service | Note |
|---|---|---|
| 22 | SSH | Also used by SFTP and git over SSH |
| 53 | DNS | UDP for queries, TCP for large responses and zone transfers |
| 80 / 443 | HTTP / HTTPS | 443 also carries HTTP/3 over QUIC, which is UDP |
| 3306 | MySQL / MariaDB | Should never be exposed publicly |
| 5432 | PostgreSQL | Should never be exposed publicly |
| 6379 | Redis | Historically no authentication by default — a long-running source of breaches |
| 27017 | MongoDB | Same history as Redis; bind to localhost |
| 9200 / 9300 | Elasticsearch | HTTP API and transport. Frequently found exposed |
| 3000 / 5173 / 8080 | Dev servers | Node, Vite, and the common alternate HTTP port |
| 25 / 587 / 465 | SMTP | 25 for server-to-server, 587 for submission with STARTTLS, 465 for implicit TLS |
Port problems
EADDRINUSE — address already in use
Cause:Another process holds the port, or a previous instance did not release it.
Fix:Find it with `lsof -i :3000` on macOS/Linux or `netstat -ano | findstr :3000` on Windows. If the old process is gone but the port is held, it is in TIME_WAIT; SO_REUSEADDR lets you rebind immediately.
EACCES binding to port 80 or 443
Cause:Ports below 1024 require elevated privileges on Unix.
Fix:Do not run the application as root. Put a reverse proxy in front, use setcap to grant CAP_NET_BIND_SERVICE, or bind high and redirect with a firewall rule.
Service works locally but not from another machine
Cause:Bound to 127.0.0.1 rather than 0.0.0.0, so it only accepts loopback connections.
Fix:Bind to 0.0.0.0 to listen on all interfaces — and make sure a firewall is in front, because this exposes it to the whole network.
Intermittent connection failures under load
Cause:Ephemeral port exhaustion. Each outbound connection consumes a source port, and ports in TIME_WAIT are held for up to two minutes.
Fix:Use connection pooling and keep-alive so connections are reused rather than reopened. Widening the ephemeral range treats the symptom.
About
The Port Numbers Reference lists well-known (0–1023) and registered (1024–49151) TCP and UDP ports used by common network services and protocols. It covers HTTP (80), HTTPS (443), SSH (22), FTP (21), DNS (53), SMTP (25), MySQL (3306), PostgreSQL (5432), Redis (6379), and many more — useful for firewall rules, server configuration, and network debugging.
How to use
- 1 Browse the list or search by service name or port number.
- 2 Filter between Well-known (0–1023) and Registered (1024–49151) ports.
- 3 Click any row to copy the port number.
- What is the difference between well-known ports and registered ports?
- Well-known ports (0–1023) are assigned by IANA to fundamental internet services — HTTP uses port 80, HTTPS uses 443, SSH uses 22, DNS uses 53. They typically require root/admin privileges to bind. Registered ports (1024–49151) are assigned to specific applications by IANA request — MySQL uses 3306, PostgreSQL uses 5432, Redis uses 6379 — and can be bound by any user.
- What are ephemeral or dynamic ports?
- Ephemeral ports (49152–65535) are temporary ports automatically assigned by the operating system to client-side connections. When your browser makes an HTTP request, the OS assigns an ephemeral port for the client side of the connection. These ports are not assigned to specific services and are recycled after each connection closes.
- Why do some services use both TCP and UDP on the same port?
- Some protocols are designed to run over both transport layers. DNS uses UDP port 53 for fast query/response (queries fit in a single datagram) and TCP port 53 for large responses (zone transfers, DNSSEC). The same port number is used in both cases but they are separate sockets — the OS distinguishes them by protocol.
More in Reference & Data
See all reference & data.