Skip to content

RIP 路由协议(距离向量)

考情分析

RIP 是 408 网络层的高频考点,选择题和大题都可能出。选择题常考 RIP 的特性(最大跳数、更新周期、使用 UDP 等),大题常给一个路由表更新的场景,要求按规则计算更新后的路由表。

考频:★★★★

RIP 的基本概念

RIP(Routing Information Protocol)是最简单的内部网关协议(IGP),基于距离向量算法

核心思想:每个路由器只和直接相邻的路由器交换路由信息,通过迭代最终让所有路由器都学到到达各目的网络的最短路径。

RIP 的基本规则:

  • 距离度量:跳数(Hop Count)。直连网络跳数为 0,每经过一个路由器加 1
  • 最大跳数:15。跳数 16 视为不可达
  • 更新方式:每 30 秒向所有邻居广播自己的完整路由表
  • 传输协议:UDP 端口 520

路由表结构

RIP 路由器的路由表中,每条记录包含三个字段:

目的网络距离(跳数)下一跳路由器
Net11直连
Net23R2
Net34R3

距离向量更新算法

当路由器 X 收到邻居 Y 发来的距离向量时,按以下规则逐条处理:

设 Y 发来的向量中:到目的网络 N 的距离为 d

  1. 将距离加 1:因为数据要从 X 到 Y 再到 N,多了一跳。新距离 = d+1
  2. 查看 X 自己的路由表中是否有到 N 的记录
    • 没有:添加新条目(目的=N,距离=d+1,下一跳=Y)
    • 有,且下一跳是 Y:无条件更新为新距离 d+1(不管变大还是变小,因为信息来自同一个邻居,以最新的为准)
    • 有,且下一跳不是 Y:只有当 d+1 < 原距离时才更新(新路径更短才替换)

第二条规则是最容易出错的——如果下一跳就是 Y,不管新距离变大还是变小都要更新。因为 Y 是你到目的网络的必经之路,Y 说距离变远了,你也只能接受。

路由表更新例题

题目: 路由器 R1 的当前路由表如下,收到邻居 R2 发来的距离向量后,求更新后的路由表。

R1 当前路由表:

目的网络距离下一跳
Net11直连
Net23R2
Net34R3
Net45R2

R2 发来的距离向量:

目的网络距离
Net12
Net21
Net32
Net46
Net53

逐条分析:

Net1: R2 说距离 2,加 1 得 3。R1 原来到 Net1 距离 1(直连),下一跳不是 R2,3 > 1,不更新。

Net2: R2 说距离 1,加 1 得 2。R1 原来到 Net2 距离 3,下一跳是 R2,无条件更新为 2。

Net3: R2 说距离 2,加 1 得 3。R1 原来到 Net3 距离 4,下一跳是 R3(不是 R2),3 < 4,更新为 3,下一跳改为 R2。

Net4: R2 说距离 6,加 1 得 7。R1 原来到 Net4 距离 5,下一跳是 R2,无条件更新为 7。(即使变大也要更新!)

Net5: R1 没有到 Net5 的记录,添加新条目,距离 4(3+1),下一跳 R2。

更新后的路由表:

目的网络距离下一跳变化
Net11直连不变
Net22R2距离 3→2
Net33R2距离 4→3,下一跳 R3→R2
Net47R2距离 5→7(变大了!)
Net54R2新增

好消息传得快,坏消息传得慢

RIP 有一个经典的问题:路由信息的收敛速度不对称

好消息(某个网络变得可达、距离变短)传播很快——几轮更新就能让所有路由器知道。

坏消息(某个网络不可达、链路故障)传播很慢——可能要经历"无穷计数"的过程。

无穷计数问题

假设 R1 直连 Net1,R2 通过 R1 到达 Net1(距离 2)。现在 Net1 故障了:

  1. R1 发现 Net1 不可达,将距离设为 16
  2. 但 R2 的路由表中还记着"到 Net1 距离 2"
  3. R2 在下一次更新时告诉 R1:"我到 Net1 距离 2"
  4. R1 收到后计算 2+1=3,认为可以通过 R2 到达 Net1,更新距离为 3
  5. R1 下次告诉 R2 距离 3,R2 更新为 4……
  6. 如此反复,直到距离增长到 16(不可达),两边才稳定

这个过程可能持续很多轮,期间产生路由环路。这就是为什么 RIP 设置最大跳数为 16——如果没有上限,"无穷计数"就真的无穷了。

RIP 的局限性

问题说明
最大 15 跳只适用于小型网络
无穷计数坏消息收敛慢,可能出现路由环路
以跳数为唯一度量不考虑链路带宽、延迟等因素
广播完整路由表每 30 秒广播整张表,开销大
只支持等价路由不支持按链路质量做负载均衡

交互可视化

加载可视化中...

易错点

1. 下一跳是发送者时,无条件更新

这是最容易犯的错误。"下一跳是 Y 则无条件更新"是 RIP 算法的核心规则,即使新距离比原来更大也要更新。

2. 距离要先加 1

收到邻居的距离向量后,所有距离都要 +1。因为经过邻居到目的地比邻居到目的地多了一跳。

3. 跳数 16 表示不可达

RIP 中距离 16 等价于"到不了"。如果更新后某条目距离 >= 16,就视为不可达。

4. RIP 使用 UDP,不是 TCP

RIP 报文通过 UDP 端口 520 传输。OSPF 直接封装在 IP 中,BGP 使用 TCP。三个协议的传输方式要区分清楚。

高频考点清单

  • RIP 使用跳数作为度量,最大跳数 15,16 为不可达
  • RIP 每 30 秒向邻居广播完整路由表
  • RIP 使用 UDP 端口 520
  • 距离向量更新三条规则(新条目/下一跳相同/下一跳不同)
  • "下一跳是发送者则无条件更新"是核心考点
  • 好消息传得快,坏消息传得慢(无穷计数问题)
  • RIP 只适合小型网络(最大 15 跳)

真题练习

相关真题(9题)

2026Q38选择题2分

OSPF 支持区域划分,RIP 和 BGP 不支持

2025Q47综合题9分

RIP/BGP 综合题:距离向量收敛、eBGP/iBGP 会话与 AS-PATH 选路

2021Q37选择题2分

RIP 距离向量更新:逐条比较选择更短距离

2017Q37选择题2分

RIP 用 UDP 封装,OSPF 直接用 IP 封装,BGP 用 TCP 封装

2016Q37选择题2分

RIP 毒性逆转/触发更新:不可达网络距离设为 16

2014Q47综合题9分

OSPF 综合题:链路状态数据库、Dijkstra 算法与路由表构建

2013Q47综合题9分

多自治系统路由综合题:子网划分、RIP/OSPF 路由计算

2010Q35选择题2分

RIP 中距离 16 表示不可达,用于毒性逆转

2009Q47综合题9分

子网划分与路由聚合综合题:地址规划、路由表与超网聚合