RIP协议详解

news2025/1/19 14:16:45

​RIP是最早的动态路由协议,虽然已经过时并且很少使用,但是可以通过学习RIP并且和ospf等现在正在使用的路由协议对比,了解其工作原理和过时原因,具有很强的学习性。

一、RIP协议简介

RIP(Routing Information Protocol,路由信息协议)是最早的动态路由协议,其原理简单,配置容易。RIP是一种基于距离矢量算法的路由信息协议,基于UDP端口520,属于应用层协议。

动态路由协议,能够自动发现路由、计算路由,主要用于局域网和小规模网际网络中的路由选择。

RIP基于距离矢量路由选择算法,也就是说它通过跳数(hop count)作为度量路由之间的距离,默认最大跳数为15跳,超过15跳的网络被认为是不可达的。

在这里插入图片描述

二、RIP工作原理

2.1 距离

RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V(Distance-Vector)" 。

RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的代价(cost)。

  • 路由器到直连网络的距离定义为1。
  • 路由器到非直连网络的距离定义为所经过的路由器数加1。
  • 允许一条路径最多只能包含15个路由器。“距离”等于16时相当于不可达。

在这里插入图片描述

2.2 路由表交换

RIP 协议规定,相邻路由器(通过同一网络连接的路由器)之间周期性交换各自的路由表。

  • 路由表交换周期是 30 秒。
  • 周期性不是严格的:发送前附加一段随机延迟(0 到 5 秒)。
  • 原因:避免大量路由器同时发送路由表而造成网络拥塞。

2.3 报文发送

  • RIP 使用 UDP 协议进行路由信息交换。
  • RIP1 和 RIP2 使用 UDP 520 端口发送或接收 RIP 报文。
    在这里插入图片描述
    2.4 路由更新
  • 接收到邻居的路由表后,路由器采用距离向量算法更新自己的路由表。
  • 在下一个发送周期,路由器将更新后的路由表再发送给自己的邻居路由器。
  • 若网络拓扑结构不变,经过有限次的路由表交换后,所有 RIP路由器都会获得到达自治系统中所有网络的最短路由。此时称路由协议收敛(convergence)

在这里插入图片描述
RIP的路由条目的更新规则:

  • 发现了新的网络,添加
  • 到达目的网络,不同下一跳,新路由优势,更新
  • 到达目的网络,不同下一跳,等价负载均衡
  • 到达目的网络,相同下一跳,最新消息,更新
  • 到达目的网络,不同下一跳,新路由劣势,不更新

2.5 故障处理
实际环境中,网络或路由器可能出现故障。

从上一次接收到邻居路由器发送的路由表起,如果经过 180 秒还没有收到新的发送,就假定:

  • 连接邻居路由器的网络发生故障,或邻居路由器发生故障。(跳数置为15)

路由器立即更新自己与故障相关的路由表项,并在随后的发送周期中将新的路由表发送给邻居路由器。

  • 经过有限次的路由表交换后,RIP 协议将达到新的收敛状态。

2.6 处理流程
在这里插入图片描述

三、RIP报文格式

3.1 RIP 协议报文
在这里插入图片描述

RIP 协议报文由固定首部和路由项列表组成。

  • 固定首部包括3个字段,占4个字节。
  • “命令”字段指明发送该报文的目的,占1个字节。 命令字段为1时是请求报文,表明请求接收方发送其全部或部分路由表;
    命令字段为2时是响应报文,表明报文携带有发送方的全部或部分路由表。响应报文可以是对请求报文的回应,也可以是发送方周期性的路由表发送。周期性发送也称为非请求响应。
  • “版本”字段指明RIP协议的版本号,占1个字节,RIP1协议设置为1,RIP2协议设置为2。
  • 第三个字段没有使用,占2个字节,必须置为0。
  • 路由项列表包括最多 25 个路由项。每个路由项描述了一条路由。

3.2 RIP2 路由项

在这里插入图片描述
路由项有固定的格式,占20个字节,分为6个字段。

  • “地址族标识符”字段指明了解释网络地址时应遵循的协议族,占2个字节。对IPv4协议,地址族标识符定义为2。
  • “路由标记”字段占2字节,是分配给该路由项的一个属性值,主要用于区分内部RIP路由和外部RIP路由。内部RIP路由是来自自治系统内部RIP协议的路由;外部RIP路由是来自其他自治系统RIP协议的路由。例如可用自治系统编号作路由标记。路由器在向邻居通告一条路由时,必须保持该路由的标记不变。
  • 字段“IP地址”和“子网掩码”共同标识了该路由项的目的地址。如果IP地址字段是全0地址(0.0.0.0),表示是默认路由。
  • “下一跳”字段指明了报文接收方路由器到达目的地址的下一跳地址。如果是全0地址(0.0.0.0),表明报文接收方路由器到达目的地址的下一跳就是报文发送方路由器,其地址就是携带RIP报文IP分组的源地址。
  • “距离”字段指明了从报文发送方路由器或下一跳字段地址到达目的地址路由的距离。

3.3 RIP 请求报文

RIP 路由器可通过向邻居发送 RIP 请求报文的方式显式地请求其全部或部分路由表。

全部路由表请求用于路由表建立:路由器启动时,可向邻居发送 RIP 请求报文,请求邻居将其整个路由表发送给自己。

  • 请求报文中只有 1 个路由项,且地址族标识符是 0、距离是无穷(16)。
  • 若路由数量超过一个 RIP 报文的携带能力,接收方可构造多个响应报文。

部分路由表请求主要用于路由监测:请求方可以是一台能够发送、接收及处理 RIP 报文的主机(不参与 RIP 路由交换)。

  • 请求报文中的路由项列表列出了所请求的路由。
  • 构造响应报文时,接收方在其路由表中逐项查找相应路由项,若存在,就在距离字段填入其距离值;否则,在距离字段填 16。

3.4 RIP 鉴别报文

RIP2 中路由器可对每个接收的报文进行鉴别(authentication)。

鉴别信息占用了第一个路由项的 20 字节:

  • 地址族标识符: 0xFFFF
  • 路由标记:命名为鉴别类型(authentication type),用于区分不同的鉴别机制。

RFC 2453 只定义了一种简单的密码鉴别:

  • 鉴别类型:2
  • 路由项中剩余的 16 字节包含了鉴别用的明文密码(若密码不足16字节,靠左对齐并补 0)。

3.5 报文发送

RIP1 中路由器用广播(broadcast)方式向邻居发送 RIP 报文。

RIP2 中路由器以组播(multicast)方式向邻居发送RIP报文。

  • 减少了对不参与 RIP 路由交换主机的影响;
  • 不需要组播管理协议(IGMP)的支持:只在相邻路由器间交换报文。

四、RIP环路问题

4.1产生环路的原因

RIP网络中某一段网络的故障,由于收敛速度过慢,部分路由器认为该网络仍然可达,导致路由不断更新导致距离计数至无穷大。
在这里插入图片描述
4.2 防环机制

  1. 最大跳数:当一个路由条目作为更新信息发送给邻居路由器时,路由条目会自加1跳,通过设定最大跳数15防止路由条目被无限转发。同时16跳可作为路由不可达标记。
  2. 触发更新:当网络出现拓扑变更后,路由器会立即产生更新通告,并广播通知所有直连邻居,不需要考虑30秒的更新计时器。为减少带宽和资源占用,触发更新消息只包含更新的路由条目。
  3. 水平分割:RIP路由器路由表中的某条条目信息由路由器的a口学习而来,则路由器a口向外发送响应消息时,不会包含该路由项的信息。
  4. 毒性反转:RIP路由器路由表中的某条不可达路由条目信息由路由器的a口学习而来,则路由器a口向外发送响应消息时,会包含该路由信息,但Metric会设置为16,不可达

注:毒性反转和水平分割都可避免路由环路的产生,但是两者原则上为互斥的,即RIP网络中RIP路 由器不会同时开启水平分割和毒性反转功能。通常,RIP网络中的路由器都会配置触发更新功能, 然后再水平分割和毒性反转功能中选择其一开启。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1455401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据仓库】主题域和数据域

数据域与主题域区别 https://www.cnblogs.com/datadance/p/16898254.html 数据域是自下而上,以业务数据视角来划分数据,一般进行完业务系统数据调研之后就可以进行数据域的划分。针对公共明细层(DWD)进行主题划分。主题域则自上而…

spark sql官网优化指南

两句话概括 缓存数据调整参数 缓存数据 把数据缓存到内存,spark sql能够只扫描需要列并且会自动压缩数据,占用最小的内存和减小GC压力。这无需多言,内存远远要快于磁盘,spark效率比hive高这个就是一个主要原因。 缓存数据代码spark.catalog.cacheTable("tableName&qu…

【ArcGIS微课1000例】0103:导出点、线、面要素的折点坐标值

点要素对应的是一个或者若干个坐标,线要素对应的是对个坐标值对应的点连起来,面要素是多个坐标值对应的点连起来构成的封闭多边形。本文讲述导出点的坐标值。 文章目录 一、点要素坐标导出1. 计算点坐标2. 导出点坐标二、线要素坐标导出1. 生成线要素折点2. 计算折点坐标3. 导…

腾讯云4核8G12M服务器支持多少人在线?

4核8G服务器支持多少人同时在线访问?阿腾云的4核8G服务器可以支持20个访客同时访问,关于4核8G服务器承载量并发数qps计算测评,云服务器上运行程序效率不同支持人数在线人数不同,公网带宽也是影响4核8G服务器并发数的一大因素&…

Github:分享一款开源的跨平台多功能远程控制和监控工具Spark

目录 1、设备列表及操作列表 2、登录机器 Shell 执行命令 3、桌面远程访问 4、远程设备的进程管理 5、远程设备文件管理 今天要给大家推荐一个开源的跨平台多功能远程控制和监控工具:Spark。 目前该项目处于不维护状态,大家可以自己根据需要进行扩…

Eclipse - Code Templates

Eclipse - Code Templates References Window -> Preferences -> C/C -> Code Style -> Code Templates 配置默认代码模板,可以点击 Export 将自己配置好的 Code Templates 导出去,以便备份和共享。 References [1] Yongqiang Cheng, https…

【软考高级信息系统项目管理师--第十一章:项目成本管理】

🚀 作者 :“码上有前” 🚀 文章简介 :软考高级–信息系统项目管理师 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 第十一章:项目成本管理 成本管理的过程规划成本管理估算成本制定预算控…

【JavaEE】_HTTP请求首行

目录 1. URL 2. 方法 2.1 GET方法 2.2 POST方法 2.3 GET与POST的区别 2.4 低频使用方法 1. URL 在mysql JDBC中已经提到过URL的相关概念: 如需查看有关JDBC更多内容,原文链接如下: 【MySQL】_JDBC编程-CSDN博客 URL用于描述某个资源…

代码检测规范和git提交规范

摘要:之前开发的项目,代码检测和提交规范都是已经配置好的,最近自己新建的项目就记录下相关配置过程。 1. ESlint配置 2013年6月创建开源项目,提供一个插件化的JavaScript代码检测工具,创建项目是生成的eslintrc.js文…

Spring Boot 笔记 023 注册页面

1.1 request.js请求工具 //定制请求的实例//导入axios npm install axios import axios from axios; //定义一个变量,记录公共的前缀 , baseURL const baseURL /api; const instance axios.create({baseURL})//添加响应拦截器 instance.interceptors.response.use(result…

Shiro-11-web 介绍

配置 将Shiro集成到任何web应用程序的最简单方法是在web.xml中配置一个Servlet ContextListener和过滤器,该Servlet了解如何读取Shiro的INI配置。 INI配置格式本身的大部分是在配置页面的INI部分中定义的,但是我们将在这里介绍一些额外的特定于web的部…

CogCopyRegionTool

关于visionpro工具操作原理文章甚少,以下是本人自己查阅visionpro官方文档完成的: “复制区域”工具允许您对单个图像或两个独立的图像执行多个复制操作: 将输入图像的一部分复制到新的输出图像。 1、 将输入图像的一部分复制到现有的目标…

2024 前端面试题(GPT回答 + 示例代码 + 解释)No.114 - No.121

本文题目来源于全网收集,答案来源于 ChatGPT 和 博主(的小部分……) 格式:题目 h3 回答 text 参考大佬博客补充 text 示例代码 code 解释 quote 补充 quote 上一篇链接:2024 前端面试题(GPT回答 示例…

pytorch中dataloader的prefetch_factor出错

今天跑huggingface的示例的时候,遇到了最让我头疼的问题,国内网上还没有对应的解释,我可能是第一人(汗)先看看报错: Traceback (most recent call last):File "F:\transformer\transformers\examples…

代码随想录算法训练营第15天—二叉树04 | ● *110.平衡二叉树 ● *257. 二叉树的所有路径 ● 404.左叶子之和

*110.平衡二叉树 题目链接/文章讲解/视频讲解:https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html 考点 后序遍历二叉树高度计算 我的思路 错误地将平衡二叉树的定义等价为判断整体二叉树的最大深度和最小深度之差是否大于1 视…

VBA技术资料MF120:打印固定标题行列

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

MySQL跨服务器关联查询

1. 首先确认服务器的Federated引擎是否开启 show engines;修改数据库的配制文件my.ini,(我的my.ini的路径为:D:\ProgramData\MySQL\MySQL Server 5.7/my.ini),将federated添加到my.ini文件中 到MySQL的my.cnf配置文件中修改 在 [mysqld] 下方加入 federated 然后重…

6.s081 学习实验记录(七)Multithreading

文章目录 一、Uthread: switching between threads简介提示实验代码实验结果 二、Using threads简介实验代码 三、Barrier简介实验代码实验结果 一、Uthread: switching between threads 简介 切换到 thread 分支 git fetchgit checkout threadmake clean 实现用户态线程的…

Python学习04 --- 函数进阶以及文件相关操作

1.函数的多返回值 1.函数可以有多个返回值,返回值之间用逗号隔开 2.多个返回值之间的类型可以不同 3.函数返回多个返回值时,我们也要用多个变量接收函数返回值,具体语法如上: 根据位置一一对应,x,y,z分别对应返回值…

【论文精读】Latent Diffusion

摘要 Diffusion models(DMs)被证明在复杂自然场景的高分辨率图像合成能力优于以往的GAN或autoregressive (AR)transformer。作为基于似然的模型,其没有GAN的模式崩溃和训练不稳定问题,通过参数共享&#xf…