Appearance
题目
某路由表中有转发接口相同的 4 条路由表项,其目的网络地址分别是 35.230.32.0/21、35.230.40.0/21、35.230.48.0/21 和 35.230.56.0/21,将该 4 条路由聚合后的目的网络地址为( )。
错因
A
聚合范围对了(/19)但起点错算成 35.230.0.0——/19 子网的步长是 32(第三字节),32 对齐的子网起点应是 32 而不是 0。35.230.0.0/19 覆盖 [.0, .31] 这一段,与本题 [.32, .63] 完全错位、根本不重叠。
B
起点 35.230.0.0 错(同 A),前缀 /20 也错。/20 第三字节步长是 16,覆盖 [.0, .15],比本题 4 个 /21 加起来的实际范围还小一倍多。两处都错。
D
起点 35.230.32.0 对,但前缀长度 /20 错——/20 子网第三字节步长 16,覆盖 [.32, .47],只能覆盖前两个 /21(32.0/21 + 40.0/21),后两个 /21(48.0/21、56.0/21)落在 [.48, .63] 范围之外,会漏掉。前缀必须 /19 才能覆盖完整 [.32, .63]。
总解析
第一步:把每个 /21 子网范围在第三字节中标出
/21 网络位 = 16 + 5 = 21,主机位 11,第三字节中前 5 位是网络位(步长 = ):
| 网络 | 第三字节起点 | 第三字节范围 |
|---|---|---|
| 35.230.32.0/21 | 32 = 00100_000 | [32, 39] |
| 35.230.40.0/21 | 40 = 00101_000 | [40, 47] |
| 35.230.48.0/21 | 48 = 00110_000 | [48, 55] |
| 35.230.56.0/21 | 56 = 00111_000 | [56, 63] |
四个 /21 合起来覆盖 [32, 63],共 32 个第三字节值。
第二步:在第三字节里找最长公共前缀
把 4 个第三字节起点写成二进制对齐看:
32 = 0010_0000
40 = 0010_1000
48 = 0011_0000
56 = 0011_1000
^^^
前 3 位 001(公共)前 3 位都是 001,第 4 位起开始分歧(有 0 也有 1)。所以公共前缀长度 = 16(前两字节)+ 3(第三字节高 3 位)= 19。
第三步:聚合后网络号
公共前缀 = 35.230.001 0_0000.0 = 35.230.32.0
聚合 = 35.230.32.0/19。
第四步:验证聚合范围
/19 第三字节高 3 位 = 001,主机位(第三字节低 5 位 + 第四字节)任意 → 第三字节 = 001x_xxxx ∈ [32, 63],第四字节 [0, 255] → 总范围 [32.0, 63.255],恰好覆盖本题 4 个 /21 ✓。
第五步:核对
| 选项 | 起点 | 前缀 | 覆盖第三字节范围 | 是否对应原 4 个 /21 |
|---|---|---|---|---|
| A | 35.230.0.0 | /19 | [0, 31] | ❌ 范围错 |
| B | 35.230.0.0 | /20 | [0, 15] | ❌ 范围错 + 前缀错 |
| C | 35.230.32.0 | /19 | [32, 63] | ✅ 完美覆盖 |
| D | 35.230.32.0 | /20 | [32, 47] | ❌ 漏掉 [48, 63] |
最终答案是 C(35.230.32.0/19)。
编者注(生僻术语):"路由聚合"(route aggregation 也叫超网 supernetting)是 CIDR 的核心功能——把多个连续 / 同前缀的子网合并成单条路由表项,缩小路由表规模。聚合的硬约束:
- 多个子网的下一跳必须相同(题面"转发接口相同"已隐含)
- 多个子网在 IP 二进制上必须前缀连续可合并——不能跨越被其他子网占用的段
本题 4 个 /21 完美连续(32-39、40-47、48-55、56-63 在二进制 [001xxxxx] 完整覆盖),所以可以聚合到 /19。如果有间断(如缺 40-47 这一段),就只能聚合到部分前缀。