CIDR 表示法

12月 22, 2025
计算机网络, Linux, Kubernetes, ByAI

1. CIDR 的最小定义(一句话版)#

CIDR 是一种表示“一段连续 IP 地址范围”的写法。

形式固定为:

IP地址/数字

例如:

192.168.1.0/24

2. 斜杠后面的数字,到底是什么意思#

斜杠后面的数字,只表示一件事

前多少位是“网络位”,后面的都是“可变化的主机位”

IPv4 地址一共 32 位二进制数

192.168.1.0
= 11000000.10101000.00000001.00000000

/24 的含义#

/24  → 前 24 位固定
       后 8 位可以变化
[网络位.................][主机位....]
11000000.10101000.00000001 | 00000000

3. CIDR 实际“代表的范围”#

因为后面的位可以变化,所以 CIDR 表示的是一个 范围

例子:192.168.1.0/24#

后 8 位可以从:

00000000  → 00000001 → ... → 11111111

换回十进制:

192.168.1.0
192.168.1.1
...
192.168.1.255

所以:

192.168.1.0/24
= 192.168.1.0 – 192.168.1.255

4. /16/24/32 的直觉理解#

/16#

10.0.0.0/16
  • 前 16 位固定

  • 后 16 位变化

范围是:

10.0.0.0 – 10.0.255.255

IP 数量:

2^(32 - 16) = 65,536

/24#

10.0.1.0/24

范围:

10.0.1.0 – 10.0.1.255

IP 数量:

256

/32#

10.0.1.5/32
  • 前 32 位全部固定

  • 没有可变位

范围:

只有一个 IP:10.0.1.5

5. CIDR 的“数学本质”(非常重要)#

CIDR 本质上是:

一个二进制前缀匹配规则

判断一个 IP 是否属于某个 CIDR,只做一件事:

IP 的前 N 位,是否和 CIDR 的前 N 位相同

例子#

CIDR: 10.0.0.0/16
IP:   10.0.23.7

二进制前 16 位都是:

00001010.00000000

属于

IP: 10.1.0.1

前 16 位不同
不属于


6. CIDR 和“子网掩码”的关系(简单说清)#

传统写法:

255.255.255.0

等价于:

/24

本质完全一样,只是:

  • 子网掩码:十进制表示

  • CIDR:位数表示(更直接)

所以:

/24 = 255.255.255.0
/16 = 255.255.0.0

7. 为什么必须用这种表示法(只说“表示法层面”)#

因为 CIDR 具备三点 表示层面的优势

  1. 精确

    • 清楚表达“前多少位固定”
  2. 可计算

    • 属不属于 = 位运算
  3. 可组合

    • 多个 /24 可以合并成一个 /16

8. 一句话总结(表示法角度)#

  • IP 是 32 位二进制数

  • CIDR 用 /N 指定前 N 位固定

  • CIDR 表示的是 一个连续 IP 区间

  • 所有网络系统都只是围绕这条规则在做判断

二叉树对比#

🌳 一、为什么 IP 地址空间像一棵“二叉树”?#

IPv4 地址是 32 位二进制数。CIDR 的核心是:前缀(网络位)固定,后缀(主机位)可变

  • 每次增加 1 位网络位(即前缀长度 +1),就把当前网络 平均分成两半
  • 这和二叉树每次分裂成左右两个子节点完全对应!

每增加 1 位前缀 = 一次二分 = 一个层级的下探


🧩 二、从 /0/32:整棵 IP 树#

  • /0:整个 IPv4 地址空间(0.0.0.0 ~ 255.255.255.255),根节点
  • /1:分成两半:
    • 0.0.0.0/1(0xxxxxxx…)
    • 128.0.0.0/1(1xxxxxxx…)
  • /2:每个 /1 再分两半 → 共 4 个块
  • /32:叶子节点,单个 IP 地址

这棵树有 33 层(从 /0 到 /32),每一层都是上一层的 二分细化


🔍 三、具体例子:以 192.168.0.0/24 为例构建子网树#

我们聚焦一个常见的私有网段:192.168.0.0/24(256 个地址)

第 0 层(根):192.168.0.0/24#

  • 范围:192.168.0.0 ~ 192.168.0.255
  • 主机位:8 位
                [192.168.0.0/24]
                     (256 IPs)

第 1 层:划分为 /25(借 1 位 → 2 个子网)#

  • 每个子网 128 个 IP
  • 关键:看第 25 位(即第 24 位后的第一位)是 0 还是 1
                [192.168.0.0/24]
               /                \
   [192.168.0.0/25]     [192.168.0.128/25]
    (0~127)                (128~255)

第 2 层:再划为 /26(再借 1 位 → 每个 /25 分成 2 个)#

  • 每个子网 64 个 IP
                [192.168.0.0/24]
               /                \
   [192.168.0.0/25]     [192.168.0.128/25]
      /        \             /          \
[0/26]     [64/26]    [128/26]      [192/26]
(0-63)     (64-127)   (128-191)     (192-255)

注:192.168.0.64/26 表示起始地址是 64,掩码 /26


第 3 层:继续划为 /27(每个 /26 分成 2 个,共 8 个子网)#

  • 每个子网 32 个 IP
[0/26] → [0/27] (0-31), [32/27] (32-63)
[64/26] → [64/27] (64-95), [96/27] (96-127)
...

最终得到 8 个 /27 子网:

子网起始地址结束地址可用主机数
192.168.0.0/27.0.3130
192.168.0.32/27.32.6330
192.168.0.64/27.64.9530
192.168.0.96/27.96.12730
192.168.0.128/27.128.15930
192.168.0.160/27.160.19130
192.168.0.192/27.192.22330
192.168.0.224/27.224.25530

每向下一层,子网数量 ×2,每个子网大小 ÷2


📐 四、通用划分公式(必记!)#

当你有一个父网段 A.B.C.D/N,想划分为更小的 /M 子网(M > N):

  • 借用的位数k = M - N
  • 子网数量2^k
  • 每个子网的地址数2^(32 - M)
  • 每个子网的可用主机数2^(32 - M) - 2(减去网络地址和广播地址,除非是 /31 或 /32)

⚠️ 注意:/31 用于点对点链路(无广播),/32 是单 IP,常用于主机路由。


🎯 五、实战练习:灵活划分(VLSM)#

假设你有 10.10.0.0/23(共 512 个 IP),需要分配给:

  • 部门 A:需要 200 台主机
  • 部门 B:需要 100 台
  • 部门 C:需要 50 台
  • 部门 D:需要 10 台
  • 点对点链路:2 条(每条 2 个 IP)

步骤 1:按需从大到小分配(VLSM 原则)#

1. 部门 A(200 主机)#

  • 最小满足:(2^n - 2 ≥ 200) → (n=8)(256-2=254)
  • 所需前缀:32 - 8 = /24
  • 分配:10.10.0.0/24(0~255)

2. 部门 B(100 主机)#

  • (2^7 - 2 = 126 ≥ 100) → 需要 7 位主机 → /25
  • 下一个可用块:10.10.1.0/25(128 个地址:.0 ~ .127)

3. 部门 C(50 主机)#

  • (2^6 - 2 = 62 ≥ 50) → /26
  • 下一块:10.10.1.128/26(.128 ~ .191)

4. 部门 D(10 主机)#

  • (2^4 - 2 = 14 ≥ 10) → /28
  • 下一块:10.10.1.192/28(.192 ~ .207)

5. 点对点链路(每条 2 IP)#

  • /31(RFC 3021),每个子网正好 2 个地址,无广播
  • 分配:
    • 10.10.1.208/31 → .208, .209
    • 10.10.1.210/31 → .210, .211

✅ 总共使用到 .211,远小于 /23 的上限(.511),高效无浪费


🧠 六、回到“二叉树”视角#

在上面的例子中:

  • /23 是一个大节点
  • 我们没有“均匀”地一直二分到底,而是按需在不同深度“剪枝”
    • 给部门 A 一个 /24(只分一层)
    • 给部门 D 一个 /28(分了 5 层)
  • 这就是 VLSM 的灵活性树的不同分支可以有不同的深度

🌲 IP 地址空间 = 一棵完整的二叉树
子网划分 = 在树上选择若干不重叠的子树作为“叶子块”


✅ 七、总结:关键要点#

概念说明
二叉树模型每增加 1 位前缀 = 一次二分
子网再划分只要有主机位,就能继续分
VLSM允许不同子网使用不同前缀长度,按需分配
规划原则从大到小分配,避免碎片
边界对齐子网起始地址必须是“块大小”的整数倍(如 /26 块大小 64,起始地址必须是 0,64,128,…)
本文共 2318 字,上次修改于 Dec 23, 2025,以 CC 署名-非商业性使用-禁止演绎 4.0 国际 协议进行许可。

相关文章

» Serverless与边缘计算:从底层硬件到架构的深度解析

» pm2 使用

» 使用 GDB 调试 Python

» Shell Script to Check if a File Exists

» 了解 glob 模式匹配