TCP 和 UDP 端口
服务器、网络和开发中最常用的 TCP 和 UDP 端口参考:每个端口上监听的服务、使用的传输协议,以及哪些以明文传输。可按端口号或服务名称搜索。

共 130 个端口,显示 130 个

端口协议服务用途
20系统TCPFTP-DATA明文 主动模式下的 FTP 数据通道。 文件
21系统TCPFTP明文 FTP 控制通道:用户名、密码和命令均以明文传输。 文件
22系统TCPSSH 加密的远程访问;SFTP、SCP 和通过 SSH 的 Git 也使用它。 远程访问
23系统TCPTelnet明文 未加密的远程终端;如今只在老旧网络设备上使用。 远程访问
25系统TCPSMTP 服务器之间投递邮件;许多服务商会封锁出站连接。 邮件
49系统TCPTACACS+ 网络设备上管理员的认证与授权。 目录与认证
53系统TCP/UDPDNS 域名解析;较大的响应和区域传送使用 TCP。 网络服务
67系统UDPDHCP DHCP 服务器:在局域网中分配 IP 地址。 网络服务
68系统UDPDHCP DHCP 客户端:接收分配的 IP 地址。 网络服务
69系统UDPTFTP明文 无认证的文件传输,用于网络启动(PXE)和固件。 文件
80系统TCPHTTP明文 未加密的 Web;如今几乎总会重定向到 HTTPS。 Web 与开发
88系统TCP/UDPKerberos Kerberos 认证,Active Directory 登录的基础。 目录与认证
110系统TCPPOP3明文 未加密的邮件下载;其安全版本使用 995。 邮件
111系统TCP/UDPrpcbind Unix RPC 端口映射器,NFS v3 必需。 网络服务
123系统UDPNTP 与时间服务器同步时间。 网络服务
135系统TCPMS-RPC Windows RPC 端点映射器,DCOM 和 WMI 使用。 目录与认证
137系统UDPNetBIOS-NS 旧版 Windows 网络的 NetBIOS 名称服务。 文件
138系统UDPNetBIOS-DGM 用于在网络上通告计算机的 NetBIOS 数据报。 文件
139系统TCPNetBIOS-SSN NetBIOS 会话;基于 NetBIOS 的 SMB 共享文件夹。 文件
143系统TCPIMAP明文 未加密的邮箱访问;其安全版本使用 993。 邮件
161系统UDPSNMP明文 向网络设备发出的监控查询;v1 和 v2c 不加密。 网络服务
162系统UDPSNMP-TRAP 设备发送给监控系统的告警(trap)。 网络服务
179系统TCPBGP 路由器与自治系统之间交换路由。 网络服务
389系统TCP/UDPLDAP明文 不使用 TLS 的目录查询(Active Directory、OpenLDAP)。 目录与认证
443系统TCP/UDPHTTPS 使用 TLS 加密的 Web;UDP 上由基于 QUIC 的 HTTP/3 使用。 Web 与开发
445系统TCPSMB Windows 文件和打印机共享;绝不应暴露在互联网上。 文件
464系统TCP/UDPkpasswd Kerberos 密码修改。 目录与认证
465系统TCPSMTPS 使用隐式 TLS 提交邮件,RFC 8314 推荐的方式。 邮件
500系统UDPIKE IPsec VPN 的密钥协商。 VPN 与代理
514系统UDPSyslog明文 向 syslog 服务器发送日志,既不加密也不确认送达。 网络服务
520系统UDPRIP 小型网络中的 RIP 路由协议。 网络服务
546系统UDPDHCPv6 DHCPv6 客户端。 网络服务
547系统UDPDHCPv6 DHCPv6 服务器。 网络服务
548系统TCPAFP Apple 文件共享(AFP),在 macOS 中已被 SMB 取代。 文件
554系统TCP/UDPRTSP 视频流控制,常见于网络摄像头。 语音、视频与消息
587系统TCPSubmission 客户端和应用程序通过认证提交邮件,使用 STARTTLS。 邮件
631系统TCP/UDPIPP 网络打印(IPP)以及 CUPS 的 Web 界面。 网络服务
636系统TCPLDAPS 使用 TLS 加密的 LDAP。 目录与认证
853系统TCP/UDPDoT / DoQ 加密 DNS:TCP 上为 DNS over TLS,UDP 上为 DNS over QUIC。 网络服务
873系统TCPrsync 用于在服务器之间同步文件的 rsync 守护进程。 文件
989系统TCPFTPS-DATA 使用隐式 TLS 的 FTP 数据通道。 文件
990系统TCPFTPS 使用隐式 TLS 的 FTP 控制通道。 文件
993系统TCPIMAPS 使用 TLS 加密的 IMAP;当前的邮件客户端使用它。 邮件
995系统TCPPOP3S 使用 TLS 加密的 POP3。 邮件
1080注册TCPSOCKS SOCKS 代理;使用 ssh -D 建立动态隧道时通常选用的端口。 VPN 与代理
1194注册UDPOpenVPN OpenVPN VPN;也可以通过 TCP 运行。 VPN 与代理
1433注册TCPMS SQL Server Microsoft SQL Server 数据库引擎。 数据库
1434注册UDPSQL Browser 告知 SQL Server 命名实例端口的服务。 数据库
1521注册TCPOracle Oracle Database 监听器。 数据库
1701注册UDPL2TP L2TP 隧道,通常与 IPsec 结合使用。 VPN 与代理
1723注册TCPPPTP明文 PPTP VPN,已过时:其认证自 2012 年起被认为已被攻破。 VPN 与代理
1812注册UDPRADIUS 用于企业 Wi-Fi(802.1X)和 VPN 的 RADIUS 认证。 目录与认证
1813注册UDPRADIUS-ACCT RADIUS 使用记录(计费)。 目录与认证
1883注册TCPMQTT明文 未加密的 MQTT 物联网消息;TLS 版本使用 8883。 语音、视频与消息
1900注册UDPSSDP 在局域网中通过 UPnP 发现设备。 网络服务
1935注册TCPRTMP 向 YouTube 或 Twitch 等平台推送直播流。 语音、视频与消息
2049注册TCP/UDPNFS NFS 网络文件系统。 文件
2181注册TCPZooKeeper 使用 Apache ZooKeeper 协调集群。 容器与 DevOps
2222注册TCPSSH (alt) SSH 常用的备用端口;非官方。 远程访问
2375注册TCPDocker API明文 未启用 TLS 的 Docker API:暴露它等同于交出主机的 root 权限。 容器与 DevOps
2376注册TCPDocker API (TLS) 使用双向 TLS 保护的 Docker API。 容器与 DevOps
2379注册TCPetcd etcd 的客户端 API,Kubernetes 的状态数据库。 容器与 DevOps
2380注册TCPetcd peer etcd 集群节点之间的通信。 容器与 DevOps
2525注册TCPSMTP (alt) 当服务商封锁端口时,发信服务提供的 587 非官方替代端口。 邮件
3000注册TCPNode.js / Grafana Node.js 开发服务器以及 Grafana 的 Web 界面。 Web 与开发
3128注册TCPSquid Squid HTTP 代理。 VPN 与代理
3260注册TCPiSCSI 通过 iSCSI 使用网络上的远程磁盘。 文件
3268注册TCPGlobal Catalog Active Directory 全局编录,用于整个林范围的搜索。 目录与认证
3269注册TCPGlobal Catalog (TLS) 使用 TLS 的 Active Directory 全局编录。 目录与认证
3306注册TCPMySQL MySQL 和 MariaDB 数据库。 数据库
3389注册TCP/UDPRDP Windows 远程桌面;一旦暴露就常成为攻击目标。 远程访问
3478注册TCP/UDPSTUN / TURN WebRTC 视频通话中的 NAT 穿透。 语音、视频与消息
4200注册TCPAngular CLI Angular 开发服务器(ng serve)。 Web 与开发
4222注册TCPNATS 使用 NATS 在微服务之间传递消息。 容器与 DevOps
4500注册UDPIPsec NAT-T 封装在 UDP 中以穿越 NAT 的 IPsec。 VPN 与代理
5000注册TCPFlask / Registry Flask 和 Docker 镜像仓库的默认端口;在 macOS 上被 AirPlay 接收器占用。 容器与 DevOps
5044注册TCPLogstash Beats 供 Beats 代理使用的 Logstash 输入。 容器与 DevOps
5060注册TCP/UDPSIP 未加密的 IP 电话信令。 语音、视频与消息
5061注册TCPSIPS 使用 TLS 的 IP 电话信令。 语音、视频与消息
5173注册TCPVite Vite 开发服务器。 Web 与开发
5222注册TCPXMPP XMPP(Jabber)即时通讯客户端连接。 语音、视频与消息
5269注册TCPXMPP S2S XMPP 服务器之间的联合。 语音、视频与消息
5349注册TCPTURN (TLS) 基于 TLS 的 STUN 和 TURN。 语音、视频与消息
5353注册UDPmDNS 多播 DNS(Bonjour),无需 DNS 服务器即可发现设备。 网络服务
5355注册UDPLLMNR Windows 本地名称解析;由于存在欺骗风险,建议禁用。 网络服务
5432注册TCPPostgreSQL PostgreSQL 数据库。 数据库
5601注册TCPKibana Kibana 的 Web 界面。 容器与 DevOps
5672注册TCPAMQP AMQP 消息队列,例如 RabbitMQ。 容器与 DevOps
5683注册UDPCoAP 面向资源受限物联网设备的 CoAP 协议。 语音、视频与消息
5900注册TCPVNC VNC 远程桌面;每多一个显示器就加一。 远程访问
5938注册TCPTeamViewer TeamViewer 连接。 远程访问
5984注册TCPCouchDB Apache CouchDB 的 HTTP API。 数据库
5985注册TCPWinRM 通过 HTTP 进行 Windows 远程管理(PowerShell Remoting)。 远程访问
5986注册TCPWinRM (HTTPS) 通过 HTTPS 进行 Windows 远程管理。 远程访问
6000注册TCPX11 通过网络运行的 X11 窗口系统;如今通过 SSH 隧道使用。 远程访问
6379注册TCPRedis Redis 和 Valkey 内存数据库。 数据库
6443注册TCPKubernetes API Kubernetes API 服务器,kubectl 连接的目标。 容器与 DevOps
6514注册TCPSyslog (TLS) 基于 TLS 的 Syslog。 网络服务
6667注册TCPIRC明文 未加密的 IRC 聊天;启用 TLS 时使用 6697。 语音、视频与消息
7474注册TCPNeo4j 图数据库 Neo4j 的 HTTP 接口;Bolt 协议使用 7687。 数据库
8000注册TCPHTTP (dev) Django 或 python -m http.server 等开发服务器。 Web 与开发
8080注册TCPHTTP (alt) 代理和 Tomcat、Jenkins 等应用服务器使用的备用 HTTP 端口。 Web 与开发
8081注册TCPHTTP (alt) 另一个备用 HTTP 端口;Nexus Repository 默认使用。 Web 与开发
8086注册TCPInfluxDB 时序数据库 InfluxDB 的 HTTP API。 数据库
8123注册TCPClickHouse / Home Assistant ClickHouse 的 HTTP 接口;也是 Home Assistant 的 Web 界面。 数据库
8200注册TCPVault 用于管理机密的 HashiCorp Vault API。 容器与 DevOps
8443注册TCPHTTPS (alt) 管理面板和应用服务器使用的备用 HTTPS 端口。 Web 与开发
8500注册TCPConsul HashiCorp Consul 的 HTTP API 和 Web 界面。 容器与 DevOps
8883注册TCPMQTT (TLS) 使用 TLS 加密的 MQTT。 语音、视频与消息
8888注册TCPJupyter Jupyter Notebook 和 JupyterLab。 Web 与开发
9000注册TCPPHP-FPM Nginx 后面的 PHP-FPM;ClickHouse、SonarQube 和 Portainer 也使用。 Web 与开发
9042注册TCPCassandra Apache Cassandra 和 ScyllaDB 的 CQL 协议。 数据库
9050注册TCPTor SOCKS Tor 客户端的 SOCKS 代理。 VPN 与代理
9090注册TCPPrometheus Prometheus 指标服务器。 容器与 DevOps
9092注册TCPKafka Apache Kafka 代理节点。 容器与 DevOps
9100注册TCPJetDirect / node_exporter 直接向网络打印机发送 RAW 打印;也是 Prometheus node_exporter 的端口。 网络服务
9200注册TCPElasticsearch Elasticsearch 和 OpenSearch 的 REST API。 数据库
9300注册TCPElasticsearch transport Elasticsearch 集群节点之间的通信。 数据库
9418注册TCPGit明文 只读的 git:// 协议,没有认证也没有加密。 容器与 DevOps
10250注册TCPkubelet 每个 Kubernetes 节点上的 kubelet API。 容器与 DevOps
11211注册TCP/UDPMemcached Memcached 缓存;其 UDP 端口曾被滥用于放大攻击。 数据库
11434注册TCPOllama 用于运行语言模型的本地 Ollama API。 容器与 DevOps
15672注册TCPRabbitMQ UI RabbitMQ 管理 Web 界面。 容器与 DevOps
19132注册UDPMinecraft Bedrock Minecraft 基岩版服务器。 游戏
25565注册TCPMinecraft Minecraft Java 版服务器。 游戏
27015注册TCP/UDPSteam / Source 采用 Source 引擎和 Steam 的游戏服务器,例如 Counter-Strike。 游戏
27017注册TCPMongoDB MongoDB 数据库。 数据库
32400注册TCPPlex Plex 媒体服务器。 语音、视频与消息
50000动态TCPDb2 / Jenkins agent IBM Db2 的默认端口;也是 Jenkins 代理的连接端口。 数据库
51820动态UDPWireGuard WireGuard 常用端口;它没有官方端口,可以修改。 VPN 与代理

工作原理

端口是 0 到 65535 之间的 16 位数字,让同一个 IP 能同时提供多种服务:操作系统会把每个数据包交给在目标端口上监听的程序。TCP 和 UDP 各有一套独立的端口,因此即使同一个服务同时使用,53/TCP 和 53/UDP 也是两个不同的端口。

IANA 将这个范围分为三段(RFC 6335)。0 到 1023 是系统端口,分配给经典协议,在 Linux 上默认只有特权进程才能打开。1024 到 49151 是注册端口,由应用向 IANA 申请。49152 到 65535 是动态端口,由系统临时分配给每个连接的客户端一侧。

这张表汇集了管理员或开发者在实践中会遇到的端口,其中也包括一些非官方但人人都用的端口,例如 8080、3000 或 WireGuard 的 51820。端口说明的是那里通常运行什么,而不是实际运行什么:任何服务都可以监听任何端口号,所以想知道一台机器上是什么在响应,只能去问那台机器本身。

示例

443/UDPHTTP/3 · QUIC多年来 443 只用于 TCP。HTTP/3 运行在使用 UDP 的 QUIC 之上,所以只放行 443/TCP 的防火墙会迫使浏览器退回 HTTP/2。
ss -tulpn | grep :8080tcp LISTEN 0 100 *:8080 *:* users:(("java",pid=2314,fd=45))在 Linux 上,ss 会显示每个端口由哪个进程监听。Windows 上对应的是显示 PID 的 netstat -ano,或 PowerShell 中的 Get-NetTCPConnection;macOS 上是 lsof -i :8080。
sysctl net.ipv4.ip_local_port_range32768 60999Linux 默认从这个范围分配客户端的临时端口,而不是 IANA 推荐、Windows 采用的 49152-65535。在出站连接很多的代理或负载均衡器上,这个范围可能不够用。

使用场景

  • 了解每个服务会开放什么,据此编写防火墙或云安全组规则。
  • 解读对自己网络进行端口扫描的结果。
  • 发现不应暴露却暴露在外的服务,例如 SMB、RDP、Redis 或 Docker API。
  • 为新服务选择端口,避免与常见端口冲突。
  • 理解启动开发服务器或容器时出现的“端口已被占用”错误。
  • 找出网络中哪些协议仍以明文传输。

常见问题

TCP 端口和 UDP 端口有什么区别?

TCP 会建立连接,保证数据完整、按顺序到达,并重传丢失的部分;Web、邮件和 SSH 使用它。UDP 发送独立的数据包,不需要确认,延迟更低;DNS、语音、游戏和 QUIC 使用它。两者的端口号空间相互独立:在防火墙上开放 53/TCP 并不会开放 53/UDP。

如何知道是哪个程序占用了某个端口?

在 Linux 上,ss -tulpn 会列出正在监听的端口以及打开它们的进程。在 Windows 上,netstat -ano 显示 PID,再到任务管理器中查找;也可以在 PowerShell 中使用 Get-NetTCPConnection -LocalPort 8080。在 macOS 和 Linux 上还可以用 lsof -i :8080。如果命令没有显示进程,请以管理员权限运行。

更改服务的端口会让它更安全吗?

作用不大。把 SSH 从 22 改到 2222,能减少在默认端口上尝试密码的机器人噪音,但一次完整扫描几秒钟就能找到该服务。真正的防护在于使用密钥认证、限制允许连接的 IP,以及不把不需要的服务暴露到互联网上。

哪些端口绝不应该对互联网开放?

管理类和数据库类端口:SMB(445)、RDP(3389)、Telnet(23),MySQL、PostgreSQL、Redis、MongoDB 等数据库,Docker API(2375)以及 kubelet(10250)。它们是自动化扫描器最常搜寻的目标。如果需要从外部访问,正确的做法是使用 VPN 或 SSH 隧道。

为什么开发服务器使用 8080 或 3000,而不是 80?

因为在 Linux 上,默认只有 root 才能打开 1024 以下的端口,而以特权运行开发服务器并不妥当。所以各个工具都选了一个较大的端口号:Java 服务器用 8080,Node.js 用 3000,Angular 用 4200,Vite 用 5173,Django 用 8000。在生产环境中,由 Nginx 之类的代理处理 80 和 443,再转发到这些内部端口。