首页/网络/常用端口速查/0 保留端口(Reserved)
0-99 系统端口81 条

0 保留端口(Reserved)

IANA 保留的 0 号端口,不能作为目的端口使用;编程里 bind(0) 的语义是请内核分配临时端口,与监听 0 号端口无关。

常用端口速查网络更新于 2026-10-13

0 号端口是干什么的

端口 0 是 TCP/UDP 端口空间的下边界。RFC 6335 明确把 0 号保留,不分配给任何服务;链路上出现目的端口为 0 的报文,通常意味着畸形流量或人为构造。编程语境里的 bind(0) 是另一件事:它的语义是请内核分配一个临时端口,与监听 0 号端口毫无关系。

基本信息

分配状态IANA Reserved(保留)
协议TCP/UDP 均保留
编程语义bind 端口 0 表示请求内核分配临时端口
实际用途无服务监听,仅作边界值
易混点与 0.0.0.0 表示监听全部地址是两回事

典型使用场景

  • 抓包看到目的端口 0 时判断流量是否畸形或被构造
  • 写 socket 程序时用 bind(0) 让内核挑一个空闲端口
  • 排障时确认进程监听的是具体端口还是全部地址
  • 编写扫描与过滤规则时把端口 0 当作非法值处理
  • 梳理端口区间划分,明确系统端口与动态端口的边界

bind(0) 获取临时端口

bind(0) 获取临时端口
python3 -c "import socket; s=socket.socket(); s.bind(('0.0.0.0',0)); print(s.getsockname())"
# 打印出来的端口才是内核分配的,0 只是请求值
cat /proc/sys/net/ipv4/ip_local_port_range   # 查看动态端口范围
ss -lntp | head -5                            # 对照监听地址的写法

端口区间划分

区间名称说明
0保留不分配给任何服务,出现即为异常
1-1023系统端口Linux 默认需要特权才能绑定
1024-49151注册端口由 IANA 登记,服务可按规范申请
49152-65535动态端口客户端源端口,内核自动分配
客户端 connect 不指定源端口时,内核从 ip_local_port_range 中挑一个临时端口,Linux 默认范围是 32768-60999。高并发短连接场景下临时端口耗尽的典型表现是连接建立失败,需要同时调大范围并启用端口复用。
另一个高频误解:ss 输出里的 0.0.0.0:80 表示监听本机全部 IPv4 地址,IPv6 的对应写法是 ::,两者都与端口 0 无关。排查暴露面时要看端口号与绑定地址的组合,而不是单看某一列。

易错点

  • 把 bind(0) 当成监听 0 端口:两者语义完全不同,会导致对程序行为的错误判断
  • 把 0.0.0.0 误解成端口 0:监听全部地址与端口号是两件不相干的事
  • 过滤规则没处理端口 0:畸形报文被当作正常流量统计进指标,掩盖真实攻击特征
  • 自定义服务落在动态端口区间:可能与客户端临时端口撞号,表现为偶发的连接异常

数据来源与参考

  • RFC 6335:IANA 端口注册规程(端口 0 保留)
  • IANA Service Name and Transport Protocol Port Number Registry

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌