网络 / 知名端口、注册端口与动态端口的范围
网络端口号范围为0~65535。IANA将其分为知名端口(0~1023)、注册端口(1024~49151)和动态/私有端口(49152~65535)。这些范围说明号码的分配方式,不能仅凭端口号确定正在通信的程序或防火墙应允许的流量。
端口号的三个范围
IANA(Internet Assigned Numbers Authority,互联网号码分配机构)维护服务名称和各传输协议的端口号注册表。RFC 6335对范围的定义如下。
| 类别 | 端口范围 | 含义 |
|---|---|---|
| 知名端口 System / Well-Known Ports |
0~1023 | 通过IANA较严格的系统端口程序为服务分配号码 |
| 注册端口 User / Registered Ports |
1024~49151 | 通过IANA注册和分配服务端口号的范围 |
| 动态/私有端口 Dynamic / Private Ports |
49152~65535 | 供本地和动态使用;IANA不将其分配为服务标识符 |
名称为“注册端口”不代表范围内每个号码都已注册。应区分已分配、未分配和保留号码。0虽然属于数值范围,但IANA注册表将TCP和UDP的0都列为保留号码,不应把它当作普通服务端口的例子。
为什么要结合TCP或UDP判断?
IP地址表示通信源或目标地址,端口则帮助区分该地址上处理通信的服务或套接字。TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)使用独立的端口号空间。因此,TCP 53与UDP 53即使数字相同,也需要分别确认。
常见例子包括HTTP的TCP 80、HTTPS的TCP 443和SSH(Secure Shell,安全外壳协议)的TCP 22。DNS(Domain Name System,域名系统)使用TCP及UDP的53。注册端口范围内的例子有MySQL的TCP 3306和远程桌面的TCP 3389。这些只是典型用途,不能代替全部已注册传输协议清单或实际配置。
服务器可以配置为监听其他号码,熟悉的号码也可能被其他程序使用。TCP 3306开放,并不能单独证明正在运行MySQL或通信安全。IANA也说明,注册不代表为产品背书,也不保证该号码上的流量一定属于注册服务。
服务器端口与客户端临时端口的区别
客户端连接服务器TCP 443时,并不意味着两端都使用443。下面是假设源端口选为51514的连接示例。实际号码取决于操作系统和连接。
TCP: client:51514 -> server:443
TCP: server:443 -> client:51514
服务器的443是用于寻找服务的目标端口,客户端的51514是本次通信的本地临时端口。响应时源与目标交换。TCP连接由协议及两端IP地址、端口的组合区分,因此不能理解为“一个端口只能对应一条连接”。
动态/私有端口中的“私有”不代表私有IP地址,也不代表自动阻止外部访问。该范围内的号码也不保证始终空闲。如果设备或中间的NAT(Network Address Translation,网络地址转换)改变地址或端口,不同观察位置看到的连接信息可能不同。
查询操作系统的实际临时端口范围
IANA动态范围与操作系统自动选择临时端口的范围应加以区分。Microsoft的动态端口说明介绍了Windows Vista及Server 2008起默认使用49152~65535,但当前设备的配置仍应直接查询。
在Windows的PowerShell或命令提示符中运行以下查询,分别检查IPv4、IPv6与TCP、UDP。这些命令不会修改设置。
netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv6 show dynamicport tcp
netsh int ipv6 show dynamicport udp
查看起始端口和端口数量。例如,起始49152、数量16384,最后一个号码为49152 + 16384 - 1 = 65535。不要把“数量”当作结束号码。结果表示自动选择范围,并不保证每个号码当前都可用。
Linux可以读取以下文件查询本地端口范围。请在实际承担通信的Linux环境中执行。
cat /proc/sys/net/ipv4/ip_local_port_range
两个整数分别是起始和结束号码。Linux内核的ip_local_port_range说明给出的默认值为32768和60999,发行版及环境设置可能不同。保留端口等配置也会影响自动分配,因此范围内的每个号码不一定都能被选择。
排查连接或配置防火墙的检查顺序
- 确定目标与协议。明确服务器IP、TCP或UDP及目标端口,并将IANA记录与实际服务配置对照。
- 确认监听位置。程序运行中也可能只监听其他端口或本地地址。应区分“已安装”和“在预期地址、端口监听”。
- 检查通信路径。结合主机防火墙、网络防火墙、云规则、端口转发与NAT分析。明确方向、源与目标,不要因为知道临时端口范围就直接开放全部范围。
- 用实际应用验证。TCP连接成功并不证明应用认证和功能正常。不要把TCP测试结果直接套用于UDP,应采用适合该服务的方法。




