Skip to content

2018年 408 计算机网络 第 38 题

计算机网络2018年选择题2分

题目

某路由表中有转发接口相同的 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/2132 = 00100_000[32, 39]
35.230.40.0/2140 = 00101_000[40, 47]
35.230.48.0/2148 = 00110_000[48, 55]
35.230.56.0/2156 = 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
A35.230.0.0/19[0, 31]❌ 范围错
B35.230.0.0/20[0, 15]❌ 范围错 + 前缀错
C35.230.32.0/19[32, 63]✅ 完美覆盖
D35.230.32.0/20[32, 47]❌ 漏掉 [48, 63]

最终答案是 C(35.230.32.0/19)

编者注(生僻术语):"路由聚合"(route aggregation 也叫超网 supernetting)是 CIDR 的核心功能——把多个连续 / 同前缀的子网合并成单条路由表项,缩小路由表规模。聚合的硬约束:

  1. 多个子网的下一跳必须相同(题面"转发接口相同"已隐含)
  2. 多个子网在 IP 二进制上必须前缀连续可合并——不能跨越被其他子网占用的段

本题 4 个 /21 完美连续(32-39、40-47、48-55、56-63 在二进制 [001xxxxx] 完整覆盖),所以可以聚合到 /19。如果有间断(如缺 40-47 这一段),就只能聚合到部分前缀。

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数