首页/网络/IP 与子网速查/可用主机数公式与 /31 /32 特例
掩码与 CIDR 速算50 条

可用主机数公式与 /31 /32 特例

主机位为 k 时可用地址 = 2^k - 2(去掉网络地址与广播地址);/31 与 /32 是特例:分别提供 2 个点对点地址与 1 个单主机地址。

IP 与子网速查网络更新于 2026-10-13

公式与两个特例

主机位为 k 位时,网段内共 2^k 个地址,其中第一个是网络地址(用作路由条目,不能给主机)、最后一个是定向广播地址(发给全段所有主机),所以经典可用主机数是 2^k - 2。只有两种公认特例:/31 按 RFC 3021 把两个地址都当可用,用于路由器点对点互联;/32 是单主机地址,用于主机路由或环回接口。

为什么必须减 2

网络地址与广播地址不是「浪费」,它们在协议里有明确职责:前者是这台子网在路由表里的标识,后者用于在二层做泛洪送达。把 PING 广播地址当成可用主机地址配置,设备会直接报错或产生不可预期的行为;而在地址规划里按 2^k 而不是 2^k-2 估算容量,就会在最后几台设备上线时才发现地址不够。

基本信息

通用公式可用主机 = 2^(32-n) - 2
/31 特例RFC 3021:点对点链路 2 个地址都可用
/32 特例单主机地址,常用于主机路由与环回接口
块大小2^主机位,用于定位子网边界
判定依据RFC 950(子网划分)、RFC 3021

典型使用场景

  • 按需求反选掩码:先算需要几台,再找满足 2^k-2 ≥ 需求的 k
  • 评估现网剩余容量:看某个 /26 里还剩多少个可分配地址
  • 规划 DHCP 池边界:池的起止必须是 HostMin 与 HostMax 之间
  • 给点对点链路选掩码:两台路由器互联时比较 /30 与 /31 的地址开销
  • 写地址规划表时填「可用主机数」列,避免按地址量高估容量
  • 考试里判断某主机地址是否有效:落在网络或广播地址上即无效

常见掩码可用主机数

掩码/24/25/26/27/28/29/30/31/32
主机位876543210
可用主机2541266230146221
地址量2561286432168421

速算:先数主机位再减 2

速算:先数主机位再减 2
# 主机位 = 32 - 前缀长度
/26 → 6 位 → 2^6 - 2 = 62
/29 → 3 位 → 2^3 - 2 = 6
/30 → 2 位 → 2^2 - 2 = 2(路由器互联)
/31 → 1 位 → 特例:2 个地址都可用(RFC 3021)

反推与校验(Python)

反推与校验(Python)
import ipaddress as ip
def mask_for(hosts):
    k = 2
    while 2 ** k - 2 < hosts:
        k += 1
    return 32 - k, 2 ** k - 2
print(mask_for(50))    # (26, 62)
net = ip.ip_network('192.168.1.0/26')
print(net.num_addresses - 2, len(list(net.hosts())))   # 62 62
许多云平台与容器网络会额外保留网关、DHCP、保留地址各若干,实际可用数可能比 2^k-2 更少。做容量规划时按云厂商文档再扣减,别只用通用公式。

相邻掩码的数量关系

前缀每减 1,地址量翻倍、可用主机数大约也翻倍再加 2:/27 是 30 台,/26 是 62 台,/25 是 126 台,/24 是 254 台。反过来每加 1 位前缀就少一半地址。记住这条链就能在需求与掩码之间快速跳转,不必每次重算,也能立刻看出「用 /26 装 100 台」这种明显不够的方案。

容易被漏掉的开销

  • 网关地址占 1 个:每段至少消耗一个可用地址
  • 网络设备管理地址:交换机、AP、防火墙互联口都吃地址
  • DHCP 与保留段:池外还要给打印服务器、UPS 等固定设备留号
  • 广播域越大泛洪越多:主机数不是越多越好,超过约 500 台建议再切
  • 地址浪费与汇总取舍:为对齐汇总边界常常主动放弃一些地址
习惯上先用 2^k-2 算纯可用数,再按「乘 0.8」估算可实配终端数,多出来的部分留给网关、管理地址、保留与临时设备,这样现场装机时很少出现临时补段的返工。

点对点链路的地址取舍

两台设备直连时只需要两个地址,用 /30 会浪费一半地址,于是有了 RFC 3021 的 /31:只有两个地址且都可用,双方各配一个,不需要网络与广播。多数现代路由平台支持 /31,但部分老旧设备或某些三层交换机不支持,落地前先在测试环境验证;不支持时退回 /30,或把互联地址做在环回加静态路由的方案里。

需要 2 个地址时不一定要 /30:两端都是路由器接口时 /31 更省地址;若该段还要接管理设备或未来加设备,反而应选 /29 留出扩展空间。

易错点

  • 忘记减 2:把 64 当成 /26 的可用主机数,规划时超配两台
  • 对 /31 仍套 2^k-2:会得出 0 个可用地址的错误结论
  • 把广播地址配给主机:设备报错或产生不可预期行为
  • 按当前在线数精确选掩码:扩容时无地址可用,只能重新编址
  • 忽略网关、DHCP、保留地址:实际可分配数少于公式结果

数据来源与参考

  • RFC 3021(31 位点对点子网)
  • RFC 4632(CIDR)

相关工具

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