CIDR 表示法
12月 22, 2025
1. CIDR 的最小定义(一句话版)#
CIDR 是一种表示“一段连续 IP 地址范围”的写法。
形式固定为:
IP地址/数字例如:
192.168.1.0/242. 斜杠后面的数字,到底是什么意思#
斜杠后面的数字,只表示一件事:
前多少位是“网络位”,后面的都是“可变化的主机位”
IPv4 地址一共 32 位二进制数。
192.168.1.0
= 11000000.10101000.00000001.00000000/24 的含义#
/24 → 前 24 位固定
后 8 位可以变化[网络位.................][主机位....]
11000000.10101000.00000001 | 000000003. 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.2554. /16、/24、/32 的直觉理解#
/16#
10.0.0.0/16前 16 位固定
后 16 位变化
范围是:
10.0.0.0 – 10.0.255.255IP 数量:
2^(32 - 16) = 65,536/24#
10.0.1.0/24范围:
10.0.1.0 – 10.0.1.255IP 数量:
256/32#
10.0.1.5/32前 32 位全部固定
没有可变位
范围:
只有一个 IP:10.0.1.55. 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.07. 为什么必须用这种表示法(只说“表示法层面”)#
因为 CIDR 具备三点 表示层面的优势:
精确
- 清楚表达“前多少位固定”
可计算
- 属不属于 = 位运算
可组合
- 多个 /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 | .31 | 30 |
| 192.168.0.32/27 | .32 | .63 | 30 |
| 192.168.0.64/27 | .64 | .95 | 30 |
| 192.168.0.96/27 | .96 | .127 | 30 |
| 192.168.0.128/27 | .128 | .159 | 30 |
| 192.168.0.160/27 | .160 | .191 | 30 |
| 192.168.0.192/27 | .192 | .223 | 30 |
| 192.168.0.224/27 | .224 | .255 | 30 |
✅ 每向下一层,子网数量 ×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, .20910.10.1.210/31→ .210, .211
✅ 总共使用到 .211,远小于 /23 的上限(.511),高效无浪费!
🧠 六、回到“二叉树”视角#
在上面的例子中:
/23是一个大节点- 我们没有“均匀”地一直二分到底,而是按需在不同深度“剪枝”
- 给部门 A 一个
/24(只分一层) - 给部门 D 一个
/28(分了 5 层)
- 给部门 A 一个
- 这就是 VLSM 的灵活性:树的不同分支可以有不同的深度
🌲 IP 地址空间 = 一棵完整的二叉树
子网划分 = 在树上选择若干不重叠的子树作为“叶子块”
✅ 七、总结:关键要点#
| 概念 | 说明 |
|---|---|
| 二叉树模型 | 每增加 1 位前缀 = 一次二分 |
| 子网再划分 | 只要有主机位,就能继续分 |
| VLSM | 允许不同子网使用不同前缀长度,按需分配 |
| 规划原则 | 从大到小分配,避免碎片 |
| 边界对齐 | 子网起始地址必须是“块大小”的整数倍(如 /26 块大小 64,起始地址必须是 0,64,128,…) |