📖 IPv4 地址的无分类编址方法(CIDR)
🎯 课程摘要:本节课介绍 IPv4 地址的无分类编址方法 CIDR(无分类域间路由选择)。CIDR 消除了传统的 A/B/C 类地址及划分子网概念,采用不定长网络前缀 + 主机号的两级结构,配合斜线记法和地址掩码。重点掌握 CIDR 地址块细节求解、路由聚合(构成超网)及最长前缀匹配原则。
📝 详细笔记
1. CIDR 的提出背景
- 问题:划分子网编址在一定程度上缓解了困难,但数量巨大的 C 类网(每网地址数太少)未充分使用,IPv4 地址仍加速消耗,面临全部耗尽威胁。
- 解决措施(IETF 双管齐下):
- 1993 年发布 CIDR(无分类域间路由选择) 的 RFC 文档,更有效地分配 IPv4 地址资源;
- 成立 IPv6 工作组,研究新版 IP 彻底解决地址耗尽问题。
2. IPv4 编址方法的三个阶段
| 阶段 | 地址结构 | 说明 |
|---|---|---|
| 分类编址 | 网络号 + 主机号(两级) | 网络号定长(A=8, B=16, C=24) |
| 划分子网编址 | 网络号 + 子网号 + 主机号(三级) | 用子网掩码指明借用比特 |
| 无分类编址(CIDR) | 网络前缀 + 主机号(两级) | 网络前缀不定长,用地址掩码指明长度 |
- 关键区别:分类编址与划分子网编址的网络号是定长的;CIDR 的网络前缀是不定长的。
3. 地址掩码与斜线记法
- 地址掩码:与子网掩码类似,32 bit 构成。
- 左起多个连续比特 1 → 对应 IPv4 地址的网络前缀;
- 之后的多个连续比特 0 → 对应主机号。
- 斜线记法:在 IPv4 地址后加斜线
/,斜线后写网络前缀所占比特数(即地址掩码中连续 1 的数量)。- 例:
128.14.35.7/20→ 左起前 20 bit 为网络前缀,剩余 12 bit 为主机号。
- 例:
- ⚠️ 重点/考点:对无分类编址的 IPv4 地址,仅从地址自身无法看出网络前缀和主机号各自的长度,必须由地址掩码(或斜线记法)指明。
4. CIDR 地址块
- 概念定义:CIDR 将网络前缀都相同的连续多个无分类 IPv4 地址组成一个 CIDR 地址块。
- 特性:只要知道地址块中任何一个地址,就能推出该地址块的全部细节:
- 最小地址(主机号全 0,即网络地址);
- 最大地址(主机号全 1,即广播地址);
- 地址数量 = $2^{\text{主机号位数}}$;
- 可聚合某类网络的数量 = 地址块地址数 ÷ 该类网地址数;
- 地址掩码。
5. 地址块细节求解示例
已知:128.14.35.7/20,求该地址所在地址块的全部细节。
分析:
/20→ 前 20 bit 为网络前缀,即前两个十进制数(16 bit)+ 第三个十进制数的前 4 bit。- 将第三、四字节转二进制:
35=00100011,前 4 bit0010属网络前缀,后 4 bit0011属主机号;7=00000111(全部属主机号)。
- 最小地址(主机号 12 bit 全 0):
128.14.32.0/20。 - 最大地址(主机号 12 bit 全 1):
128.14.47.255/20。 - 地址数量 = $2^{32-20} = 2^{12} = 4096$。
- 聚合 C 类网数量 = $4096 \div 256 = 16$ 个。
- 地址掩码 = 20 个 1 + 12 个 0 =
255.255.240.0。
6. CIDR 的两个主要好处
好处一:更有效地分配 IPv4 地址空间
- 可根据客户需要分配适当大小的 CIDR 地址块,而非只能以 A/B/C 类(8/16/24 bit 前缀)为单位。
- 应用示例(对比分类编址):
| 网络需求 | 分类编址分配 | CIDR 分配 |
|---|---|---|
| 大型网络(需 ~6 万地址) | A 类网($2^{24}$,大量浪费) | /15 地址块($2^{17}$) |
| 中型网络(需 ~255 地址) | B 类网($2^{16}$,浪费) | /26 地址块($2^{6}=64$) |
| 路由器直连链路(需 2 地址) | C 类网($2^{8}$,浪费) | /30 地址块($2^{2}=4$,可分配 2) |
- 对路由器直连链路,后来还出现
/31前缀地址块甚至不分配 IP 地址的方法,进一步节省地址。
好处二:路由聚合(构成超网)
- 概念定义:路由聚合(也称构造超网)是将多个较小的 CIDR 地址块合并为一个更大的 CIDR 地址块。
- 方法:找共同前缀 —— 找出多个网络地址的最长共同前缀,共同前缀保持不变,其余比特全取 0。
- 示例:R1 直连 5 个网络,向相邻路由器 R2 通告时聚合:
- 5 个网络地址前两个十进制数相同,第三个不同 → 将第三字节转 8 bit 二进制;
- 找出共同前缀共 22 bit;
- 聚合后超网:共同前缀 + 其余 10 bit 全 0,记为
xxx.xxx.xxx.0/22。 - R1 只需通告 1 条路由记录(而非 5 条),减少路由表占用与通告信息开销。
7. 最长前缀匹配原则
- 概念定义:路由器查表转发分组时,若发现有多条路由条目匹配,则选择网络前缀最长的那条路由条目。
- 原理解析:网络前缀越长 → 地址块越小 → 路由越具体。
- ⚠️ 重点/考点:最长前缀匹配是 CIDR 路由转发的核心原则,常考。
8. 分类编址 vs CIDR 对比
| 对比项 | 分类编址 | CIDR(无分类编址) |
|---|---|---|
| 地址结构 | 网络号 + 主机号(两级) | 网络前缀 + 主机号(两级) |
| 网络(前缀)长度 | 定长(8/16/24) | 不定长 |
| 类别概念 | 有 A/B/C/D/E 类 | 消除分类概念 |
| 掩码名称 | 子网掩码 | 地址掩码 |
| 记法 | 点分十进制 | 斜线记法 /n |
| 地址分配粒度 | 固定(整类网) | 灵活(任意大小地址块) |
| 路由汇总 | 不支持 | 支持(路由聚合/超网) |
| 转发原则 | 精确匹配网络号 | 最长前缀匹配 |
9. 408 考研真题示例
2011 年题(地址块细节)
- 已知:CIDR 地址块
/30→ 前 30 bit 网络前缀,剩 2 bit 主机号。 - 第四字节转二进制:前 6 bit 属前缀,后 2 bit 主机号。
- 最小地址(主机号 00)= 网络地址;最大地址(主机号 11)= 广播地址。
- 可分配地址:主机号 01、10,共 2 个。
- 题目给定的 IP 分组目的地址恰为该地址块的广播地址。
- 答案:选项 C。
2018 年题(路由聚合)
- 已知:4 个待聚合网络地址,仅第三字节不同 → 转 8 bit 二进制。
- 找出 19 bit 共同前缀 → 聚合后
xxx.xxx.xxx.0/19。 - 答案:选项 C。
2021 年题(地址块关系判断)
- 判断给定地址块与各选项地址块的相邻/包含关系,聚合后是否引入其他地址块。
- 选项 B 的地址块与题干地址块不相邻,聚合会引入其他地址块。
- 答案:选项 B。
💡 核心总结
- CIDR 消除 A/B/C 类与子网概念,采用不定长网络前缀 + 主机号两级结构。
- 斜线记法
/n:n 为网络前缀比特数;地址掩码:n 个 1 + (32-n) 个 0。 - 地址块:前缀相同的连续地址集合,主机号全 0 = 最小地址(网络地址),全 1 = 最大地址(广播地址),地址数 = $2^{32-n}$。
- 路由聚合(超网):找共同前缀,减少路由条目。
- 最长前缀匹配:多条匹配时选前缀最长(最具体)的路由。
- CIDR 灵活分配、节省地址、支持路由聚合,是现代 Internet 的基础。
❓ 课后思考 / 经典考题
- 2011 408 真题:CIDR 地址块
/30中最多有几个可分配地址?目的地址为广播地址时如何判断?(答案:2 个,选项 C) - 2018 408 真题:将 4 个网络地址聚合成一个 CIDR 地址块,求目的网络地址。(答案:
/19,选项 C) - 2021 408 真题:判断哪个地址块不能与给定地址块聚合而不引入其他地址块。(答案:选项 B)
- 已知
128.14.35.7/20,求其地址块的最小地址、最大地址、地址数量、地址掩码。 - 什么是最长前缀匹配原则?为什么前缀越长路由越具体?
- CIDR 相比分类编址有哪些优势?举例说明如何节省地址。