CIDR 是什么
CIDR(无类别域间路由,RFC 4632)用 a.b.c.d/n 表示一个网段:斜杠后的 n 是前缀长度,即网络位数,剩下 32-n 位是主机位。它取代了早年按 A/B/C 类固定边界的分配方式,让地址可以按实际需要切分与合并,也让路由表能用一条前缀代表成百上千个网段。
网络地址怎么来
把 IPv4 看成 32 个二进制位后,网络地址就是「IP 与掩码按位与」的结果:掩码为 1 的位保留(网络位),为 0 的位全部清零(主机位)。广播地址则是把主机位全部置 1,也就是网络地址加上块大小减一。这两个运算是一切子网计算、判断同网段、写路由汇总的出发点,手算与工具算的是同一件事。
基本信息
| 表示法 | a.b.c.d/n,n 为前缀长度(网络位数) |
|---|---|
| 网络地址 | IP AND 掩码(主机位清零) |
| 广播地址 | 网络地址 OR 通配符(主机位全置 1) |
| 可用主机 | 2^(32-n) - 2 |
| 规范来源 | RFC 4632(CIDR)、RFC 950(子网划分) |
典型使用场景
- 把一个大网段按部门或楼层切成若干子网,先在纸面算出边界再配置
- 核对现网某台主机到底属于哪个网段,判断它和网关是否同段
- 写路由或防火墙规则时确认哪个前缀能覆盖一批地址,避免范围写错
- 抓包或看日志时把裸 IP 还原成网段,快速定位属于哪个区域
- 做地址规划时评估每个 /n 能装多少主机、浪费多少地址
- 考试与面试里所有子网题的第一步都是按位与求网络地址
用 ipcalc 验证主机地址归位
用 ipcalc 验证主机地址归位
ipcalc 192.168.10.25/26
# Network: 192.168.10.0/26 # 主机地址被按掩码归位
# Netmask: 255.255.255.192
# Broadcast: 192.168.10.63
# HostMin: 192.168.10.1
# HostMax: 192.168.10.62
# Hosts/Net: 62手算:按位与与求广播
手算:按位与与求广播
# 以 192.168.10.25/26 为例
# 掩码 255.255.255.192 → 末段 11000000
# 25 的二进制 → 00011001
# 按位与 → 00000000 → 网络末段 0
# 主机位全置 1 → 00111111 = 63 → 广播 .63
# 结论:网段 192.168.10.0/26,可用 .1 - .62输出逐列读法
| 字段 | 含义 | 正常 / 异常 |
|---|---|---|
| Network | 归位后的网段 | 显示 192.168.10.0/26;若原样显示 .25/26 说明工具未按掩码归位 |
| Netmask | 点分掩码 | 255.255.255.192 |
| Broadcast | 广播地址 | 192.168.10.63 |
| HostMin / HostMax | 可用地址首尾 | .1 / .62 |
| Hosts/Net | 可用主机数 | 62;写成 64 说明漏减网络与广播 |
输入主机地址时工具会自动归位:ipcalc 直接给出网络地址,Python 的 ip_network(strict=False) 行为相同;strict=True 会抛 ValueError,因为主机地址本身不是合法网段。
落到配置里是什么样
在 Linux 与网络设备上,同一个前缀会被写成不同形态:接口配置用 CIDR 或点分掩码(ip addr add 192.168.10.1/26),路由表存的是网络地址加前缀长度(192.168.10.0/26),访问控制列表则可能要写通配符(0.0.0.63)。三者位模式完全一致,只是书写习惯不同,改配置时先确认设备要哪一种写法。
常见判断口径
- 已知掩码求网段:网络地址 = IP 归位到块大小整数倍
- 已知网段求广播:网络地址 + 块大小 - 1
- 判断同段:两个 IP 分别与掩码按位与,结果相同即同段
- 判断合法性:掩码必须是左侧连续 1,中间不能夹 0
- 校验工具结果:网络地址一定整除块大小,广播地址一定不在可用范围内
前缀长度越大网段越小:把 /24 改写成 /25 会把原来的一个网段劈成两个,原来同段的设备可能瞬间跨段,必须同步调整网关与 DHCP,这类改动不能只改一台设备。
主机位数决定一切
同一个 IP 配上不同前缀长度会属于完全不同的网段:192.168.1.130 在 /24 下是 192.168.1.0/24 的成员,在 /25 下属于 192.168.1.128/25,在 /27 下又变成 192.168.1.128/27 的成员。所以任何子网计算的第一步都是先确认掩码,只看地址前三段就下结论是排障中最常见的误判来源。
配置里写 192.168.10.25/26 这种「主机地址加掩码」是常见写法,但把它当网段计算就会得到错误边界。判断网段时永远先归位到块起点的整数倍。