常见端口及其含义
端口是一个 16 位的数字,用来告诉计算机应由哪个程序接收传入的网络数据。IP 地址用来找到正确的机器,端口则用来找到该机器上正确的服务,例如 443 对应 HTTPS,25 对应邮件投递。端口范围是 0 到 65535,服务会在某个端口上「监听」,直到有客户端连接。
端口是什么
一个连接由五个值标识:协议(TCP 或 UDP)、源地址和源端口、目的地址和目的端口。浏览器为每个连接随机选择源端口,但目的端口由服务固定。这就是标准端口号很重要的原因:浏览器无需任何提示就知道 https:// 对应 443 端口。
TCP 与 UDP
- TCP 是面向连接的。它会建立连接、给数据编号、重传丢失的部分,并按顺序交付。网页、邮件、SSH 和数据库都使用 TCP。
- UDP 发送相互独立的数据报,没有连接也不重传。它延迟更低、开销更小。DNS 查询、DHCP、NTP 以及许多语音和视频服务使用 UDP。
TCP 80 端口和 UDP 80 端口是不同的东西。有些服务两者都用,例如 53 端口上的 DNS。关于各层如何配合,请参阅 OSI 模型。
端口范围
互联网号码分配机构(IANA)把端口分为三个范围:
| 范围 | 名称 | 用途 |
|---|---|---|
| 0 – 1023 | 知名端口(系统端口) | HTTP、SSH、SMTP 等核心服务。在类 Unix 系统上,只有特权进程才能在此范围内监听。 |
| 1024 – 49151 | 注册端口 | 在 IANA 注册的应用程序,例如 MySQL (3306) 和 PostgreSQL (5432)。 |
| 49152 – 65535 | 动态(临时)端口 | 客户端选择的临时源端口。有些操作系统的默认范围不同,例如 Linux 使用 32768 – 60999。 |
注册并不是强制保证。任何程序都可以监听任何空闲端口,有些服务也运行在非标准端口上,例如 SSH 使用 2222。
常见端口及其用途
| 端口 | 协议 | 服务 | 用途 | |
|---|---|---|---|---|
| 20 | TCP | FTP data | 文件共享 | FTP 数据通道(主动模式)。 |
| 21 | TCP | FTP | 文件共享 | 文件传输协议控制通道。以明文发送密码,建议改用 SFTP 或 FTPS。 |
| 22 | TCP | SSH | 远程访问 | Secure Shell:加密的远程登录、SFTP 和 SCP 文件传输以及隧道。 |
| 23 | TCP | Telnet | 远程访问 | 未加密的远程终端。不应暴露在互联网上。 |
| 25 | TCP | SMTP | 邮件 | 服务器之间的邮件传输。许多运营商会对家庭用户封锁出站 25 端口。 |
| 53 | TCP/UDP | DNS | 网络服务 | 域名系统查询。大多数查询使用 UDP,较大的应答和区域传送使用 TCP。 |
| 67 | UDP | DHCP server | 网络服务 | DHCP 服务器:在局域网中分配 IP 地址。 |
| 68 | UDP | DHCP client | 网络服务 | DHCP 客户端。 |
| 69 | UDP | TFTP | 文件共享 | 简单文件传输协议,用于网络启动 (PXE) 和设备固件。 |
| 80 | TCP | HTTP | 网站 | 未加密的网页流量。如今大多只用于跳转到 HTTPS。 |
| 110 | TCP | POP3 | 邮件 | 从邮箱下载邮件(未加密)。 |
| 123 | UDP | NTP | 网络服务 | 网络时间协议:时钟同步。 |
| 135 | TCP | MS RPC | 文件共享 | Microsoft RPC 端点映射器。请勿暴露在互联网上。 |
| 137 | UDP | NetBIOS name | 文件共享 | NetBIOS 名称服务(旧版 Windows 网络)。 |
| 139 | TCP | NetBIOS session | 文件共享 | NetBIOS 会话服务,旧版 SMB。 |
| 143 | TCP | IMAP | 邮件 | 在服务器上读取邮件(未加密,或通过 STARTTLS 升级加密)。 |
| 161 | UDP | SNMP | 监控 | 简单网络管理协议:设备监控。 |
| 162 | UDP | SNMP trap | 监控 | SNMP 陷阱:设备发出的告警。 |
| 179 | TCP | BGP | 网络服务 | 边界网关协议:网络(运营商)之间的路由。 |
| 389 | TCP | LDAP | 目录服务 | 目录访问(Active Directory、OpenLDAP)。 |
| 443 | TCP/UDP | HTTPS | 网站 | 加密的网页流量 (TLS)。UDP 443 承载 HTTP/3 (QUIC)。 |
| 445 | TCP | SMB | 文件共享 | Windows 文件共享。常见的攻击目标——切勿暴露在互联网上。 |
| 465 | TCP | SMTPS | 邮件 | 基于隐式 TLS 的邮件提交。 |
| 500 | UDP | IKE | VPN | IPsec VPN 密钥交换。 |
| 514 | UDP | Syslog | 监控 | 系统日志转发。 |
| 587 | TCP | Submission | 邮件 | 客户端邮件提交,使用 STARTTLS 和身份验证。 |
| 636 | TCP | LDAPS | 目录服务 | 基于 TLS 的 LDAP。 |
| 853 | TCP | DNS over TLS | 网络服务 | 加密 DNS (DoT)。 |
| 873 | TCP | rsync | 文件共享 | 用于文件同步的 rsync 守护进程。 |
| 993 | TCP | IMAPS | 邮件 | 基于 TLS 的 IMAP。 |
| 995 | TCP | POP3S | 邮件 | 基于 TLS 的 POP3。 |
| 1194 | UDP | OpenVPN | VPN | OpenVPN 默认端口。 |
| 1433 | TCP | MS SQL | 数据库 | Microsoft SQL Server。 |
| 1521 | TCP | Oracle | 数据库 | Oracle 数据库监听器。 |
| 1701 | UDP | L2TP | VPN | L2TP VPN。 |
| 1723 | TCP | PPTP | VPN | PPTP VPN——已过时且不安全。 |
| 1883 | TCP | MQTT | 物联网与设备 | 用于物联网设备的 MQTT 消息传输。 |
| 2049 | TCP | NFS | 文件共享 | 网络文件系统 (NFS)。 |
| 3306 | TCP | MySQL | 数据库 | MySQL / MariaDB。请将数据库置于防火墙之后。 |
| 3389 | TCP | RDP | 远程访问 | Windows 远程桌面。经常遭到暴力破解;请放在 VPN 之后。 |
| 3478 | UDP | STUN/TURN | VoIP | 用于 WebRTC、视频通话和游戏的 NAT 穿透。 |
| 4500 | UDP | IPsec NAT-T | VPN | 穿越 NAT 的 IPsec。 |
| 5060 | TCP/UDP | SIP | VoIP | VoIP 通话信令。 |
| 5061 | TCP | SIP TLS | VoIP | 基于 TLS 的 SIP。 |
| 5432 | TCP | PostgreSQL | 数据库 | PostgreSQL 数据库。 |
| 5900 | TCP | VNC | 远程访问 | VNC 远程桌面。 |
| 6379 | TCP | Redis | 数据库 | Redis 内存数据库。常常未设密码就对外开放。 |
| 8080 | TCP | HTTP alt | 网站 | 备用 HTTP 端口:代理、应用服务器、管理后台。 |
| 8443 | TCP | HTTPS alt | 网站 | 备用 HTTPS 端口。 |
| 9100 | TCP | Printer | 物联网与设备 | 原始网络打印 (JetDirect)。 |
| 9200 | TCP | Elasticsearch | 数据库 | Elasticsearch REST API。 |
| 11211 | TCP | Memcached | 数据库 | Memcached 缓存。 |
| 25565 | TCP | Minecraft | 游戏 | Minecraft Java 版服务器。 |
| 27015 | TCP/UDP | Steam / Source | 游戏 | Source 引擎游戏服务器(CS、TF2 等)。 |
| 27017 | TCP | MongoDB | 数据库 | MongoDB 数据库。 |
| 51820 | UDP | WireGuard | VPN | WireGuard VPN 默认端口。 |
如何检测端口是否开放
你可以用我们的端口检测工具从外部测试端口。它会尝试向你输入的主机和端口打开 TCP 连接,并报告以下三种结果之一:
- 开放:有服务接受了连接。主机可达,并且有程序在监听。
- 关闭:主机作出了应答,但拒绝了连接(TCP 重置)。网络路径正常,但该端口上没有程序在监听。
- 被过滤:在超时之前没有收到任何应答。很可能是防火墙悄悄丢弃了数据包,也可能是主机已离线。
在自己的电脑上,可以用以下命令测试:
Test-NetConnection -ComputerName example.com -Port 443 (Windows PowerShell)
nc -vz example.com 443 (Linux, macOS)
ss -tlnp (Linux: list local listening ports)
netstat -ano (Windows: list local connections)
测试 UDP 更困难,因为没有应答既可能表示「开放」,也可能表示「被过滤」。因此在线端口检测工具大多只测试 TCP。
安全建议:不应暴露的端口
每个开放的端口都是潜在的入口。只开放必要的端口,关闭其余的。有些服务几乎不应该对整个互联网开放:
- Telnet (23):以明文发送密码。请改用 SSH (22)。
- SMB (445) 和 NetBIOS (137-139):Windows 文件共享。它曾是众多蠕虫和勒索软件攻击的目标。切勿暴露在互联网上。
- RDP (3389):远程桌面是密码猜测攻击的常见目标。请把它放在 VPN 或带多因素认证的网关之后。
- 数据库:MySQL (3306)、PostgreSQL (5432)、SQL Server (1433)、MongoDB (27017)、Redis (6379) 和 Elasticsearch (9200)。只允许需要访问的应用服务器连接。
- FTP (21):未加密。请使用 SFTP 或 FTPS。
- SSH (22):如果使用密钥、禁用密码登录并限制来源地址,可以对外开放,但要预期会遭遇持续不断的自动化登录尝试。
通用原则:默认拒绝所有入站流量,只允许特定端口;尽可能按来源地址限制;保持每个端口背后的软件为最新版本;并定期扫描自己的服务器,把实际开放的端口与预期对照。任何没有明确理由而开放的端口都应该调查。