两种写法的关系
前缀长度(/26)与点分掩码(255.255.255.192)描述的是同一个东西:32 位里左侧连续 1 的个数。网络设备有的只接受点分掩码,配置模板与规划文档又常用 CIDR 写法,换算就成了日常操作。好在规则很固定,掌握后可以心算,不必查表。
换算规则
把 n 写成 n = 8q + r:前 q 段全是 255,第 q+1 段从 128 开始按 128、64、32、16、8、4、2 顺序相加前 r 个位权,其余段填 0。举例 /26 = 3×8+2,前 3 段 255,第 4 段 128+64=192;/21 = 2×8+5,第 3 段 128+64+32+16+8=248,于是 255.255.248.0。
基本信息
| 换算公式 | n = 8q + r → 前 q 段 255,第 q+1 段为前 r 个位权之和 |
|---|---|
| 位权序列 | 128、64、32、16、8、4、2、1 |
| 常见锚点 | /25=128、/26=192、/27=224、/28=240、/29=248、/30=252 |
| 反向读数 | 掩码段值 + 块大小 = 256 |
典型使用场景
- 把规划文档里的 /22 填进只认点分掩码的老旧设备
- 核对现网配置:看到 255.255.254.0 要立刻想到这是 /23
- ACL 与路由策略里同时出现掩码与通配符时快速互推
- 考试题给出点分掩码求可用主机数与块大小
- 写自动化脚本时先用公式生成掩码,再与设备回显比对
Python 快速核对
Python 快速核对
import ipaddress as ip
for n in (13, 21, 26, 27):
net = ip.ip_network('0.0.0.0/%d' % n)
print('/%-3d %-16s %s' % (n, str(net.netmask), str(net.hostmask)))
# /13 255.248.0.0 0.7.255.255
# /21 255.255.248.0 0.0.7.255
# /26 255.255.255.192 0.0.0.63
# /27 255.255.255.224 0.0.0.31跨段掩码易错对照
| 前缀 | 点分掩码 | 关键段与位权 | 块大小 |
|---|---|---|---|
| /9 | 255.128.0.0 | 第 2 段 128 | 8388608 |
| /12 | 255.240.0.0 | 第 2 段 128+64+32+16=240 | 1048576 |
| /13 | 255.248.0.0 | 第 2 段 加 8 得 248 | 524288 |
| /17 | 255.255.128.0 | 第 3 段 128 | 32768 |
| /21 | 255.255.248.0 | 第 3 段 248 | 2048 |
| /22 | 255.255.252.0 | 第 3 段 252 | 1024 |
| /26 | 255.255.255.192 | 第 4 段 192 | 64 |
| /27 | 255.255.255.224 | 第 4 段 224 | 32 |
反向推导同样简单:拿掩码最后一个非 255 的段值去和 256 相减,就得到块大小,块大小转成二进制数位就是主机位个数,32 减去它就是前缀长度。
为什么值得背下来
现场排障时往往只有一台笔记本和一条串口线,没有计算器也不能上网。把 128、192、224、240、248、252、254 这一串与 /25 到 /31 对应记住,就能在一分钟内判断出故障主机属于哪个子网、跟网关是否同段。这一串数字的规律是每次加上递减的 2 的幂:128、加 64 得 192、加 32 得 224、加 16 得 240、加 8 得 248、加 4 得 252、加 2 得 254。
记住「段值 + 块大小 = 256」这条互补关系,就能双向推:给掩码算块大小,给块大小也能反推掩码,两边互验不必依赖工具。
换算完成后建议再做一次区间校验:把算出的掩码套回原网段,确认广播地址与可用范围与规划表一致,避免一处笔误连带影响后续所有子网。
/26 与 /27 只差 32:192 是 /26、224 是 /27。这类相邻档位写错在配置里不会报错,只会让网段凭空少一半或大一倍,改完务必用 ipcalc 复核。