这张表解决什么问题
地址规划、设备配置和考试题里反复要在三种写法之间来回换:前缀长度(/26)、点分掩码(255.255.255.192)与通配符反掩码(0.0.0.63)。这三个数由同一个位模式导出,只要记住规则就不必死背:掩码是左侧连续 1,通配符是它按位取反,可用主机数是 2 的主机位次方再减 2。
换算规则
把 n 写成 n = 8q + r:点分掩码前 q 段是 255,第 q+1 段按 128、64、32、16、8、4、2 依次叠加前 r 个位权,其余段为 0。通配符逐段用 255 减去掩码段值即可。块大小(子网在第 4 段的步长)则是 256 减去该段掩码值,这是心算子网边界最常用的数字。
基本信息
| 点分掩码 | n=8q+r:前 q 段 255,第 q+1 段为前 r 个位权之和 |
|---|---|
| 通配符 | 255.255.255.255 减去掩码,逐段相减 |
| 可用主机 | 2^(32-n) - 2(/31、/32 例外) |
| 块大小 | 256 - 掩码进位段的值 |
| 常见口径 | 范围详见本表;/31、/32 见 RFC 3021 与主机路由 |
典型使用场景
- 设备上只接受点分掩码,规划表里却是 CIDR 写法时快速对照
- 写思科/华为 ACL 与 OSPF 时把前缀换成通配符,避免范围写反
- 做容量盘点:用可用主机数与地址量两个口径估算浪费
- 考试时判断某个需求该选哪档掩码,直接查表定位候选
- 审计现网配置:发现 255.255.255.224 就知道它对应对 /27
- 写脚本时先查表确认参数,再让 Python 复算一遍
常用前缀对照表
| CIDR | 点分掩码 | 通配符 | 可用主机 | 地址量 |
|---|---|---|---|---|
| /8 | 255.0.0.0 | 0.255.255.255 | 16777214 | 16777216 |
| /12 | 255.240.0.0 | 0.15.255.255 | 1048574 | 1048576 |
| /16 | 255.255.0.0 | 0.0.255.255 | 65534 | 65536 |
| /20 | 255.255.240.0 | 0.0.15.255 | 4094 | 4096 |
| /21 | 255.255.248.0 | 0.0.7.255 | 2046 | 2048 |
| /22 | 255.255.252.0 | 0.0.3.255 | 1022 | 1024 |
| /23 | 255.255.254.0 | 0.0.1.255 | 510 | 512 |
| /24 | 255.255.255.0 | 0.0.0.255 | 254 | 256 |
| /25 | 255.255.255.128 | 0.0.0.127 | 126 | 128 |
| /26 | 255.255.255.192 | 0.0.0.63 | 62 | 64 |
| /27 | 255.255.255.224 | 0.0.0.31 | 30 | 32 |
| /28 | 255.255.255.240 | 0.0.0.15 | 14 | 16 |
| /29 | 255.255.255.248 | 0.0.0.7 | 6 | 8 |
| /30 | 255.255.255.252 | 0.0.0.3 | 2 | 4 |
| /31 | 255.255.255.254 | 0.0.0.1 | 2(点对点) | 2 |
| /32 | 255.255.255.255 | 0.0.0.0 | 1(单主机) | 1 |
核对:Python 一次生成三列
import ipaddress as ip
for n in (24, 26, 27, 28, 30):
net = ip.ip_network('0.0.0.0/%d' % n)
print(n, net.netmask, net.hostmask, max(net.num_addresses - 2, 0))
# 24 255.255.255.0 0.0.0.255 254
# 26 255.255.255.192 0.0.0.63 62
# 27 255.255.255.224 0.0.0.31 30通配符为什么数值相反
通配符(反掩码)里 0 表示这一位必须匹配、1 表示忽略,含义与子网掩码正好相反,所以数值上是掩码的逐位取反。/24 的掩码 255.255.255.0 对应通配符 0.0.0.255;/26 的掩码 255.255.255.192 对应 0.0.0.63。写成 0.0.0.63 而不是 255.255.255.192 是协议要求,写在 ACL 里把两者弄反会让匹配范围完全走样。
手算换算顺序
拿到一个前缀先做两件事:用 n=8q+r 算点分掩码,用 256 减去掩码的进位段得到块大小。之后求通配符就变成逐段相减,求可用主机数是 2 的主机位次方减 2。三者互相校验:掩码段值与块大小之和必须等于 256,可用主机乘以 2 加 2 必须等于地址量,对不上就说明记错了一档。
写配置前的检查项
- 确认设备要的是前缀长度、点分掩码还是通配符,别混用
- 确认掩码是左侧连续 1,别出现 255.255.255.129 这类写法
- 确认网段起点按块大小对齐,否则设备会拒绝或自动改写
- 确认可用主机数满足需求,并预留扩展余量
- 在脚本里直接用 Python 复算一遍,避免手抄出错
最易混的三组数字
第一组是 192 与 224:192 是 /26(块 64)、224 是 /27(块 32),两者只差 32 但相差 32 个地址。第二组是掩码与通配符方向:255.255.255.192 与 0.0.0.63 指同一个网段。第三组是地址量与可用主机:/26 是 64 个地址、62 台可用,写规划表时把 64 填进「可用主机」列会在扩容时暴露问题。