CIDR 所解决的难题
一个 IP 网络上的每一台设备都需要一个地址。在 IPv4 中,那个地址是 32 位,通常写作以点分隔的、从 0 到 255 的四个数字,如 192.168.1.10。那个难题从来不是“一个地址是什么”,而是“我如何描述一段归属在一起的地址”——一个单独的办公室、一个子网、一份客户分配。 记法便是写出那一段的紧凑方式。
CIDR 代表 Classless Inter-Domain Routing(无类别域间路由)。“无类别”那一部分要紧:较旧的编址把段强行塞入固定的尺寸(旧的 Class A、B 与 C 块)。CIDR 移除了那种僵硬,让一段拥有任意二的幂的尺寸,这便是它今日为标准之由。
读那道斜杠
一个 CIDR 块看起来像 192.168.1.0/24。斜杠之后的那一部分,即前缀长度,是那个单独的、最重要的数字。它言明:该地址的前 N 位是固定的,而其余的可自由变化。
/24意味着前 24 位是固定的网络部分。剩下的 8 位(32 − 24)标识各个主机。- 8 个自由位给出 2⁸ = 256 种可能的组合,所以
192.168.1.0/24描述从192.168.1.0到192.168.1.255的 256 个地址。
改变那个前缀,块的尺寸便随之改变。一个更小的前缀意味着更多的自由位与一个更大的块:
/16固定 16 位,留下 16 位自由 → 65,536 个地址。/25固定 25 位,留下 7 位自由 → 128 个地址。/30固定 30 位,留下 2 位自由 → 4 个地址。
前缀长度每变化一步,便把块减半或加倍。那一条单独的规则便是全部的直觉。
网络、广播与可用主机
在大多数块之内,有两个地址是特殊的、且不可分配给一台主机:
- 网络地址是块中的第一个地址,所有主机位都置为 0(对一个
/24而言是192.168.1.0)。它命名块本身。 - 广播地址是最后一个地址,所有主机位都置为 1(
192.168.1.255)。发往此处的流量抵达块中的每一台主机。
所以一个 /24 总共有 256 个地址,但对实际的主机而言254 个可用。“可用主机”那个数字,不过是总数减去那两个保留的地址。
两个边缘情形打破此种模式,二者皆出于刻意:
- 一个 /31(RFC 3021)用于两台路由器之间的点对点链路。它只有 2 个地址,且按设计二者皆可用——没有空间容纳一个单独的网络与广播地址,而对一个恰有两端的链路而言也不需要。
- 一个 /32 是单独一个地址,一条主机路由。它恰好描述一台机器。
为何这值得理解
前缀长度统辖网络如何被设计、路由如何被汇总,以及地址空间如何被发放。当你在一张路由表中看到 10.0.0.0/8,或看到 0.0.0.0/0 作为一条默认路由时,你读的是同一种记法:一个基地址,外加一个言明其中多少是固定的前缀长度。那套算术从不改变,唯有数字改变。
你可以在 CIDR 计算器中试用任何块,即时地、完全在你的浏览器中,看到它的网络地址、广播地址、掩码与可用主机数被算出。