✂️ 子网掩码与 CIDR:网络边界的精确切割
This content is not available in your language yet.
在探讨网络通信时,IP 地址(例如 192.168.10.5)本身只是一个孤立的坐标。计算机如何判断另一个 IP 地址是与自己在同一个局域网(可以直接通信),还是在遥远的广域网(需要交给路由器转发)?
这个判断的唯一依据,就是子网掩码(Subnet Mask)。
本指南将深入拆解子网掩码的底层运行逻辑,以及现代网络中最常用的 CIDR(无类别域间路由) 表示法。
1. 核心概念:一刀切开网络与主机
Section titled “1. 核心概念:一刀切开网络与主机”一个 32 位的 IPv4 地址,在逻辑上被硬性分为两个部分:
- 网络位(Network ID):标识该设备所在的“网段”。如果两台设备的网络位完全相同,它们就处于同一个物理或逻辑链路中(即同一个广播域),彼此可以通过交换机直接进行二层(MAC 地址)通信。
- 主机位(Host ID):标识该网段内的“特定设备”。在同一个网段内,每台设备的主机位必须是唯一的。
子网掩码的作用,就是作为一把“尺子”,明确地标示出 32 位 IP 地址中,哪几位是网络位,哪几位是主机位。
2. 透视底层:二进制与 AND 运算
Section titled “2. 透视底层:二进制与 AND 运算”要真正理解掩码,必须将其还原为 32 位的二进制数字。
子网掩码的根本规则是:掩码中为 1 的位对应的 IP 地址部分是网络位,为 0 的位对应的是主机位。并且,掩码中的 1 必须是连续的。
2.1 以 192.168.10.5 为例
Section titled “2.1 以 192.168.10.5 为例”假设一台主机的 IP 是 192.168.10.5,子网掩码是 255.255.255.0。
我们将它们全部转换为二进制并上下对齐:
- IP 地址:
11000000 . 10101000 . 00001010 . 00000101(192.168.10.5) - 子网掩码:
11111111 . 11111111 . 11111111 . 00000000(255.255.255.0)
计算机的网卡在处理时,会将 IP 和掩码进行**按位与(Bitwise AND)**运算(即:同为 1 才为 1,否则为 0):
- 运算结果:
11000000 . 10101000 . 00001010 . 00000000
将这个结果转换回十进制,就是 192.168.10.0。
这个得出的结果,就是这台主机所在的网络地址(Network Address)。计算机由此得知:所有网络地址同为 192.168.10.0 的设备,都是“自己人”。
3. CIDR 表示法:/24 到底是什么意思?
Section titled “3. CIDR 表示法:/24 到底是什么意思?”书写 255.255.255.0 这种格式既繁琐又容易出错。为了简化,IETF 引入了 CIDR(Classless Inter-Domain Routing,无类别域间路由,RFC 4632)。
CIDR 使用斜杠 / 加上一个数字来表示掩码。这个数字,代表的就是子网掩码中连续的 1 的个数。
- 掩码
255.255.255.0转换为二进制是 24 个1加 8 个0。 - 因此,它的 CIDR 表示法就是
/24。
3.1 深度拆解 192.168.10.0/24
Section titled “3.1 深度拆解 192.168.10.0/24”当我们看到 192.168.10.0/24 这个网段描述时,它包含了以下所有极其关键的网络参数:
- 网络地址(Network Address):
192.168.10.0- 主机位全部为
0的地址。它代表这个网段本身,不可分配给任何具体设备。
- 主机位全部为
- 广播地址(Broadcast Address):
192.168.10.255- 主机位全部为
1的地址。发往此地址的数据包,会被同一网段内的所有设备接收。不可分配给任何具体设备。
- 主机位全部为
- 可用主机范围(Usable Host Range):
192.168.10.1到192.168.10.254- 刨除网络地址和广播地址后,中间的所有地址。这些是可以分配给服务器、路由器或手机的有效 IP。
- 可用 IP 数量计算公式:
如果主机位有 $n$ 位,那么该网段的可用 IP 数量计算公式永远是:
$$可用 IP 数量 = 2^n - 2$$
在
/24网络中,主机位有 $32 - 24 = 8$ 位。因此:$2^8 - 2 = 256 - 2 = 254$ 个可用 IP。
4. 进阶:打破 8 的倍数(子网划分)
Section titled “4. 进阶:打破 8 的倍数(子网划分)”/8、/16、/24 是最常见的掩码,因为它们正好卡在点分十进制的句号上,非常符合人类的直觉。但网络工程师为了避免 IP 浪费,经常会进行“非标准”的子网切割。
4.1 案例:将 /24 劈成两半(/25)
Section titled “4.1 案例:将 /24 劈成两半(/25)”假设我们有一个网段 192.168.10.0/24,包含 254 个可用 IP。现在我们想把它切分为两个互相隔离的小网段,每个网段容纳大约 120 台设备。
我们需要向主机位“借”1 位,将其变成网络位。掩码也就从 24 个 1 变成了 25 个 1,即 /25。
/25掩码二进制:11111111 . 11111111 . 11111111 . 10000000/25掩码十进制:255.255.255.128
现在,主机位只剩下了 7 位($32 - 25 = 7$)。每个子网的可用 IP 数量变为 $2^7 - 2 = 126$ 个。 原来的一个大网段,被完美切割成了两个独立的小网段:
子网 A (0段):
- 网络地址:
192.168.10.0/25 - 可用范围:
192.168.10.1-192.168.10.126 - 广播地址:
192.168.10.127
子网 B (128段):
- 网络地址:
192.168.10.128/25 - 可用范围:
192.168.10.129-192.168.10.254 - 广播地址:
192.168.10.255
重要工程结论:虽然子网 A(如
.10.5)和子网 B(如.10.200)在物理上可能插在同一台交换机上,但由于它们的网络位不同,它们在逻辑上是被隔离的。如果不通过路由器进行三层转发,它们彼此之间绝对无法 PING 通。
5. 常用 CIDR 速查表(Cheat Sheet)
Section titled “5. 常用 CIDR 速查表(Cheat Sheet)”在网络规划时,无需每次都进行复杂的二进制推演。记住以下几个关键的 CIDR 长度,足以应对 99% 的架构设计:
| CIDR | 子网掩码 | 包含的 IP 总数 | 可用 IP 数量 | 典型应用场景 |
|---|---|---|---|---|
/8 | 255.0.0.0 | 16,777,216 | 16,777,214 | 巨型企业内网 (10.0.0.0/8) |
/16 | 255.255.0.0 | 65,536 | 65,534 | 大型园区网、Docker 默认虚拟网桥 |
/24 | 255.255.255.0 | 256 | 254 | 最标准的局域网配置、家庭路由器默认配置 |
/25 | 255.255.255.128 | 128 | 126 | 将标准局域网一分为二 |
/30 | 255.255.255.252 | 4 | 2 | 路由器之间的点对点(P2P)直连链路 |
/32 | 255.255.255.255 | 1 | 1 | 标识唯一的一台主机(常用于路由表精确指向) |
📚 权威参考
Section titled “📚 权威参考”- RFC 4632: Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan