Skip to content

2016年 408 计算机网络 第 37 题

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

题目

下图所示网络中,假设 R1、R2、R3 采用 RIP 协议交换路由信息,且均已收敛。若 R3 检测到网络 201.1.2.0/25 不可达,并向 R2 通告一次新的距离向量,则 R2 更新后,其到达该网络的距离是( )。

InternetR1R2R3201.1.2.0/25

图中说明:R3 直连 Net2;收敛后 R3 距离 0、R2 距离 1(经 R3)、R1 距离 2(经 R2)。RIP 距离指"到达该网络要再经过多少跳路由器"。

错因

A

可能算成"R2 经 R1 距离 = R1 距离 + 0 = 2"——漏算了 R2 → R1 这一跳。R2 经过 R1 到达 Net2 需要先跳到 R1(+1),再走 R1 自己到 Net2 的路径(已知距离 2),共 1+2 = 3。错的根源:忘记 R2 自己经 R1 时要 +1 跳。

C

只看 R3 通告的不可达消息(距离 16),就判定 R2 也不可达——没考虑 R2 还有 R1 这条备选邻居。R1 此时还持有旧的可达信息("我到 Net2 距离 2"),会通告给 R2,R2 据此算出"经 R1 = 3"是可达路径。错的根源:忽略了 RIP 多邻居路径选择的机制。

D

按 "R2 经 R3 = R3 通告 16 + 1 = 17" 算,没做截断也没考虑备路。实际 R2 经 R3 算出 17 后,由于 RIP 上限规则会取 16 作为不可达;但即便截断成 16,R2 仍会比较所有邻居路径,选最小的——经 R1 距离 3 比 16 更小,R2 应该选经 R1 而不是不可达。错的根源:把"经 R3"误当成 R2 的唯一选择,没看 R2 还能选其他邻居。

总解析

第一步:明确收敛初始状态

题面说"R1、R2、R3 已收敛"——按 RIP 距离的命题方约定(直连网络距离 = 0、每经一跳路由器 +1):

路由器到 Net2 的距离选定下一跳
R30直连
R21经 R3
R12经 R2

第二步:R3 检测到 Net2 不可达

R3 把自己路由表中"到 Net2"那一项的距离更新为 16(不可达),并向邻居 R2 通告这次更新(触发更新 triggered update)。

第三步:R2 处理 R3 的通告

R2 收到"R3 到 Net2 = 16"——按"距离 = 邻居距离 + 1"算:

但 R2 不止 R3 一个邻居——它还能经 R1 到 Net2。

第四步:关键观察 —— "坏消息传得慢"

RIP 的著名缺陷:路由器只在自己的周期性更新(默认 30 秒一次)才向邻居通告——R3 的"不可达"消息此时只通知了 R2,没通知 R1

R1 此刻仍持有旧的可达信息:"R1 到 Net2 距离 = 2,下一跳 R2"。R1 会按周期向 R2 通告它的距离向量,包括"我到 Net2 距离 2"。

R2 收到 R1 的通告,算:"经 R1 到 Net2 距离" = R1 通告距离 + 1 = 2 + 1 = 3

第五步:R2 选择新的最佳路径

R2 比较两条候选路径:

经由距离
经 R316(不可达)
经 R13(可达)

RIP 选择距离最小的可达路径,所以 R2 更新后到 Net2 距离 = 3,下一跳改为 R1。

最终答案是 B(3)

编者注(生僻术语):"计数到无穷"(count-to-infinity)问题——本题展示的就是这个经典 RIP 缺陷的开端:

  1. R3 直连不可达,正确距离应是 16
  2. 但 R1 持有过期信息(距离 2),通过 R2 让 R2 误判"经 R1 距离 3"
  3. R2 把这个错误信息再通告 R1("R2 距离 3"),R1 更新自己 = 4
  4. R1 再通告 R2 → R2 = 5;R2 通告 R1 → R1 = 6 …… 一直循环加 1,每个 RIP 周期增 2
  5. 直到 R1、R2 双方都到达 16(≈ 8 个 RIP 周期后),才被判定不可达

真实路由收敛会经历 N 分钟的"鬼魂路径"。"水平分割(split horizon)"和"毒性逆转(poison reverse)"是缓解该问题的两个机制——本题假设两者都未启用,所以发生计数到无穷的开局。

最后更新:

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

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