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.0192.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 计算器中试用任何块,即时地、完全在你的浏览器中,看到它的网络地址、广播地址、掩码与可用主机数被算出。