跳转到内容

✂️ 子网掩码与 CIDR:网络边界的精确切割

🌱 创建: 2026/04/01 ⏱️ 更新: 2026/05/22

在探讨网络通信时,IP 地址(例如 192.168.10.5)本身只是一个孤立的坐标。计算机如何判断另一个 IP 地址是与自己在同一个局域网(可以直接通信),还是在遥远的广域网(需要交给路由器转发)?

这个判断的唯一依据,就是子网掩码(Subnet Mask)

本指南将深入拆解子网掩码的底层运行逻辑,以及现代网络中最常用的 CIDR(无类别域间路由) 表示法。


1. 核心概念:一刀切开网络与主机

Section titled “1. 核心概念:一刀切开网络与主机”

一个 32 位的 IPv4 地址,在逻辑上被硬性分为两个部分:

  1. 网络位(Network ID):标识该设备所在的“网段”。如果两台设备的网络位完全相同,它们就处于同一个物理或逻辑链路中(即同一个广播域),彼此可以通过交换机直接进行二层(MAC 地址)通信。
  2. 主机位(Host ID):标识该网段内的“特定设备”。在同一个网段内,每台设备的主机位必须是唯一的。

子网掩码的作用,就是作为一把“尺子”,明确地标示出 32 位 IP 地址中,哪几位是网络位,哪几位是主机位。


要真正理解掩码,必须将其还原为 32 位的二进制数字。 子网掩码的根本规则是:掩码中为 1 的位对应的 IP 地址部分是网络位,为 0 的位对应的是主机位。并且,掩码中的 1 必须是连续的。

假设一台主机的 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

当我们看到 192.168.10.0/24 这个网段描述时,它包含了以下所有极其关键的网络参数:

  1. 网络地址(Network Address)192.168.10.0
    • 主机位全部为 0 的地址。它代表这个网段本身,不可分配给任何具体设备
  2. 广播地址(Broadcast Address)192.168.10.255
    • 主机位全部为 1 的地址。发往此地址的数据包,会被同一网段内的所有设备接收。不可分配给任何具体设备
  3. 可用主机范围(Usable Host Range)192.168.10.1192.168.10.254
    • 刨除网络地址和广播地址后,中间的所有地址。这些是可以分配给服务器、路由器或手机的有效 IP。
  4. 可用 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 通。


在网络规划时,无需每次都进行复杂的二进制推演。记住以下几个关键的 CIDR 长度,足以应对 99% 的架构设计:

admin@tech-fortress:~# cat /etc/network/cidr_cheat_sheet.conf
CIDR子网掩码包含的 IP 总数可用 IP 数量典型应用场景
/8255.0.0.016,777,21616,777,214巨型企业内网 (10.0.0.0/8)
/16255.255.0.065,53665,534大型园区网、Docker 默认虚拟网桥
/24255.255.255.0256254最标准的局域网配置、家庭路由器默认配置
/25255.255.255.128128126将标准局域网一分为二
/30255.255.255.25242路由器之间的点对点(P2P)直连链路
/32255.255.255.25511标识唯一的一台主机(常用于路由表精确指向)

  • RFC 4632: Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan

最近更新: