RIPng报文的格式、路由表条目结构以及报文处理流程

下面解析RIPng报文的格式、路由表条目结构以及报文处理流程。


一、RIPng报文结构概览

RIPng报文分为报文头路由表项两部分:

1. 报文头(固定8字节)

复制代码
0                   1                   2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+
|   command     |    version    |   必须为零    |
|     (1)       |     (1)       |     (2)      |
+---------------+---------------+---------------+
|             路由表项1 (RTE) (20字节)           |
|               ...                            |
|             路由表项N (RTE) (20字节)           |
+-----------------------------------------------+
  • Command(报文类型,1字节)

    • 0x01:Request报文 → 请求路由信息

    • 0x02:Response报文 → 通告/回应路由信息

  • Version(版本号,1字节):对于RIPng,固定为1

  • 必须为零(2字节):保留字段,填充0

2. 路由表项(RTE,20字节)

这是RIPng的核心改进点,引入了两种类型的RTE

RTE类型 结构 作用
下一跳RTE 前16字节为下一跳的IPv6地址 后4字节的特殊值 紧随其后的一组前缀RTE指定下一跳地址
前缀RTE 前16字节为目的IPv6前缀 后4字节为路由标签+前缀长度+度量值 携带具体的路由信息

关键关系 (第3张图展示):一个"下一跳RTE"后面可以跟随多个"前缀RTE",这些前缀共享这个下一跳地址,直到出现下一个"下一跳RTE"为止。这能有效减少报文长度


二、路由表项RTE详解

RIPv2的RTE结构(20字节)

复制代码
Address Family Identifier (2) | Route Tag (2)
------------------------------|---------------
IP Address (4)                | Subnet Mask (4)
------------------------------|---------------
Next Hop (4)                  | Metric (4)
  • 地址族标识符:标识地址类型(如IPv4)

  • 路由标签:标记路由来源

  • IP地址:目标网络地址(IPv4)

  • 子网掩码:明确网络位长度

  • 下一跳:到达目标的下一跳IPv4地址

  • 度量值:到达目标的距离(跳数,1-15)

RIPng的RTE结构(20字节)

复制代码
IPv6 prefix (16)
-------------------------------------
route tag (2) | prefix len (1) | metric (1)
  • IPv6前缀(16字节):目标网络的IPv6前缀

  • 路由标签(2字节):同RIPv2

  • 前缀长度(1字节):0-128,替代了IPv4的"子网掩码"

  • 度量值(1字节):跳数,有效范围1-15,16表示不可达

核心差异总结

对比项 RIPv2 RIPng
目标地址 4字节 IPv4地址 16字节 IPv6前缀
网络位标识 4字节 子网掩码 1字节 前缀长度
下一跳 每个RTE都包含(4字节) 独立为"下一跳RTE",可被多个前缀共享
度量值 4字节 1字节

RIPng的设计更加紧凑,专门为IPv6的大地址空间优化,用"前缀长度"替代"掩码"更灵活,用"下一跳RTE"共享机制减少冗余。


三、RIPng报文处理流程

1. Request报文(请求报文)

触发时机

  • 路由器启动时

  • 收到特定指令手动更新时

报文类型

复制代码
| command=0x01 | version=1 | 必须为零=0 |

细分两种

  • 通用Request报文

    • 通常包含一项特殊的前缀RTE:IPv6前缀和前缀长度都为0,度量值=16

    • 含义:"请把你的整个路由表都发给我"

    • 目的:路由器启动时快速学习全网路由

  • 指定Request报文

    • 包含具体的前缀RTE,指定了要查询的IPv6网络

    • 含义:"请告诉我到达这个特定网络的路由信息"

    • 目的:用于网络故障诊断或按需查询

发送方式 :都以组播 形式发送到FF02::9(所有RIPng路由器)

2. Response报文(响应报文)

触发时机

  • 收到Request报文后

  • 路由信息发生变化时(触发更新)

  • 周期性(默认30秒)发送

报文内容

复制代码
| command=0x02 | version=1 | 必须为零=0 |
| 下一跳RTE1 (可选) | 前缀RTE1 | 前缀RTE2 | ... |

包含实际的、完整的路由信息。

发送方式

  • 响应Request时:可单播回复请求者,或组播

  • 触发/周期更新时:组播到FF02::9


四、完整处理流程示例

场景:一台RIPng路由器R1刚启动。

  1. 启动后立即

    • R1构建一个通用Request报文(一个RTE,前缀全0,度量16)

    • 组播(FF02::9)发送出去:"大家好,我是新来的,把你们知道的路由都告诉我"

  2. 邻居路由器R2收到

    • 识别为Request报文(command=0x01)

    • 检查RTE:发现是"通用请求"(前缀全0)

    • 准备一个Response报文,包含自己的全部路由表

    • 组播或单播回复给R1

  3. R1收到Response

    • 识别为Response报文(command=0x02)

    • 解析报文中的RTE序列

    • 遇到"下一跳RTE",记录其IPv6地址

    • 后续的"前缀RTE"都使用这个下一跳,直到遇到新的"下一跳RTE"

    • 将解析出的路由(目标网络+下一跳+度量)加入路由表

  4. 后续维护

    • 每30秒,R1也会组播自己的Response报文

    • 如果R1的路由发生变化,立即发送触发更新的Response

    • 如果收到对特定网络的Request,发送对应的指定Response


五、核心要点总结

  1. 报文结构:RIPng报文 = 8字节头部 + N×20字节RTE

  2. RTE创新 :引入"下一跳RTE"和"前缀RTE"两种类型,下一跳可被多个前缀共享,节省带宽

  3. IPv6适配:用"前缀长度"替代"子网掩码",用16字节字段存IPv6地址

  4. 处理机制:Request/Response模式,支持"通用请求"(要全部)和"指定请求"(要特定)

  5. 效率优化:组播发送,减少网络负担;触发更新,加快收敛

RIPng在继承了RIP简单易用优点的同时,通过重新设计RTE结构,完美适配了IPv6的地址特点和现代网络对效率的需求。

相关推荐
孙严Pay2 小时前
代付业务解析
笔记·科技·计算机网络·其他·微信
chian-ocean3 小时前
【408计算机网络】第一章—— 计算机网络体系结构(上)
计算机网络
孙严Pay12 小时前
分享三种不同的支付体验,各自有着不同的特点与适用场景。
笔记·科技·计算机网络·其他·微信
better_liang13 小时前
每日Java面试场景题知识点之-TCP/IP协议栈与Socket编程
java·tcp/ip·计算机网络·网络编程·socket·面试题
航Hang*1 天前
第三章:网络系统建设与运维(中级)——交换技术
运维·笔记·计算机网络·华为·ensp·交换机
析木不会编程1 天前
四大差错校验方法全解析
计算机网络
@LiX1 天前
Chapter1 初识计算机网络
计算机网络
小李独爱秋1 天前
计算机网络经典问题透视:拒绝服务(DoS)与分布式拒绝服务(DDoS)攻击全景解析
运维·服务器·分布式·计算机网络·ddos
磊 子2 天前
第四章:网络层
运维·服务器·网络·计算机网络·运输层