读懂 CIDR:前缀、可用主机数与范围判断
读懂 CIDR:前缀、可用主机数与范围判断
斜杠后面的数字到底代表什么、一个前缀实际能给你多少地址,以及怎么判断某个地址是否落在范围内。
原创流程图
读懂 CIDR:前缀、可用主机数与范围判断
理解原理
检查后再进入下一步
检查边界
检查后再进入下一步
使用工具
检查后再进入下一步
IPv4 地址是 32 位。192.168.1.0/24 里的 /24 表示前 24 位标识网络,剩下 8 位留给主机。前缀数字越大,网络越小——这一点初看是反直觉的:/30 极小,/8 极大。地址块大小等于 2 的自由位数次方,所以 /24 有 256 个地址,/25 有 128 个,每多一位就减半。
范围里最小的地址标识网络本身,最大的是广播地址,两者都不能分配给主机。所以可用主机数 = 2^(32−前缀) − 2。/24 有 256 个地址但只有 254 台主机;/30 有 4 个地址、只有 2 个可用,这正是 /30 传统上被用作两台路由器之间点对点链路的原因。容量规划时忘了减二,两端各会差一个地址。
减二规则在小端会失效。/32 就是单个地址,用来在防火墙规则或路由里表示某一台具体主机。/31 只有两个地址,放不下「网络 + 广播」这一对,所以 RFC 3021 把它重新定义为点对点链路专用,两个地址都可用。现代路由配置常常优先用 /31 而不是 /30,正是因为它能把只需要两个端点的链路的地址消耗减半。
255.255.255.0 这样的子网掩码,就是把前缀写成点分十进制:24 个 1 位后面跟 8 个 0 位。掩码某一段能出现的数值是有限的,因为 1 必须连续——128、192、224、240、248、252、254、255。看到 255.255.255.192 就知道固定了 26 位,也就是 /26,62 台可用主机。像 255.255.255.100 这种不在上述取值里的掩码段,是畸形的。
把掩码分别作用在待判断地址和网络地址上,再比较结果。掩码后的值相同,地址就在范围内。这也解释了为什么一段范围的网络地址主机位总是零:192.168.1.0/24 是合法网络,而 192.168.1.5/24 描述的是它里面的一台主机,要求干净网络前缀的工具会把后者归一化或直接拒绝。当两段范围看起来重叠时,比较掩码后的值是最快的判断方式。
RFC 1918 保留了 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16 作为私有用途。172.16 那段最容易记错——它覆盖 172.16.0.0 到 172.31.255.255,而不是只有 172.16 一段。另外两个也值得知道:100.64.0.0/10 是运营商级 NAT 空间,在移动网络里会出现,容易被误认成私有段;169.254.0.0/16 是链路本地地址,看到它通常意味着 DHCP 失败了,而不是有人配置了什么。
应用新前缀之前,先写出网络地址、广播地址、第一个可用主机、最后一个可用主机和主机数。然后从两端和中间各取一个地址,用掩码测试确认它们都落在范围内。如果是重新编号,在所有主机和防火墙规则迁移完成之前保留旧段可达,因为临时重叠的网段是静默路由环路的常见来源。
常见问题
254 个。这一段共 256 个地址,网络地址和广播地址不能分配。
它一共 4 个地址,其中两个是网络地址和广播地址,剩下正好两个,适合两台路由器之间的链路。
相反。前缀数的是固定位数,数字越大留给主机的位越少,范围也就越小。
是,而且一直到 172.31.255.255。从 172.32 开始就是公网地址了。