精简版 · 小杯2026-08 冻结,已停止更新(发布前修订了 4 处已知错误)。后续勘误与新增内容只在正式版。看正式版(中杯)→
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 跳)

真题练习 ​