RIP协议详解

​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.mzph.cn/news/687680.shtml

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

相关文章

(OpenCV)图片拼接

前言 图片拼接在许多领域都有广泛的应用,包括但不限于以下几个方面: 全景摄影:在摄影中,通过将多张照片拼接在一起可以实现全景照片的效果。这在旅游景点、房地产展示等领域有着广泛的应用,能够提供更加生动、真实的视…

Bpmn-js 属性控制

我们可以通过bpmn-js来访问对应的BPMN图例的属性信息。对应的流程图中的每个图例元素(如开始、结束、中间/边界事件等都通过businessObject属性存储对基础BPMN元素的引用。业务对象是从BPMN 2.0 XML导入并在导出过程中序列化的实际元素。使用业务对象来读取和写入BP…

如何减少HTTP请求次数

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 如何减少HTTP请求次数? 减少 HTTP 请求次数自然也就提升了 HTTP 性能,可以从这 3 个方面入手: 减少重定向请求次数合并请求延迟发送请求 减少重定向请求次数 我们先来看看什么是重定向请…

美相关 APT 组织分析报告

获取方式: 链接:https://pan.baidu.com/s/1AsysdggUIbvB3PZ41MaJaQ?pwd8euh 提取码:8euh

Debug Monitor中断详细解析

文章目录 0 基本术语1 相关寄存器和指令1.1 Debug Halting Control and Status Register (DHCSR), 0xE000EDF01.2 Debug Exception and Monitor Control Register (DEMCR), 0xE000EDFC1.3 Debug Fault Status Register, DFSR, 0xE000ED301.4 BKPT指令 2 Debug Monitor中断示例2…

DNS域名解析过程、工具、文件配置

目录 DNS介绍 DNS域名层次结构 DNS域名解析过程 递归查询和迭代查询 DNS 查询的命令行工具:host、dig、nslookup host 语法 参数和选项 示例用法 dig 语法 参数和选项 示例用法 nslookup 语法 参数和选项 交互式命令 示例用法 配置 DNS 客户端 DNS介…

解读OpenAI视频生成模型Sora背后的原理:Diffusion Transformer

Diffusion Models视频生成-博客汇总 前言:OpenAI最近推出的视频生成模型Sora在效果上实现了真正的遥遥领先,很多博主都介绍过Sora,但是深入解读背后原理的博客却非常少。Sora的原理最主要的是核心模型主干《Scalable Diffusion Models with T…

Code Composer Studio (CCS) - Breakpoint (断点)

Code Composer Studio [CCS] - Breakpoint [断点] 1. BreakpointReferences 1. Breakpoint 选中断点右键 -> Breakpoint Properties… Skip Count:跳过断点总数,在断点执行之前设置总数 Current Count:当前跳过断电累计值 References […

xtu oj 1215 A+B V

题目描述 小明很喜欢做ab,他但经常忘记进位,所以他算881290,而不是100。 现在你给了小明一些ab的算式,请问他算出来会是什么? 输入 第一行是一个整数K,表示样例的个数。 每个样例占一行,为两个整数a,b&a…

CCF编程能力等级认证GESP—C++7级—20231209

CCF编程能力等级认证GESP—C7级—20231209 单选题(每题 2 分,共 30 分)判断题(每题 2 分,共 20 分)编程题 (每题 25 分,共 50 分)商品交易纸牌游戏 答案及解析单选题判断题编程题1编程题2 单选题…

深度探索Python集合:从基本操作到高级用法

在Python编程中,集合(Set)作为一种高效且功能强大的内置数据结构,常用于处理不包含重复元素的无序数据集合。本文将详述Python集合的基本操作、进阶技巧以及在实际场景中的应用。 一、集合基础 Python集合初始化可通过大括号 {} 或者 set() 函数实现&a…

Vue实现多个input输入,光标自动聚焦到下一个input

遇到一个需求&#xff0c;需要实现和移动端短信输入一样&#xff0c;输入内容后&#xff0c;光标会进入下一个输入框 需要用到2个事件 keydown事件发生在键盘的键被按下的时候 keyup 事件在按键被释放的时候触发 <template><div class"box"><el-fo…

(ruoyi-vue3.8.6版本基础上)升级Spring Boot 3.x时遇到的问题与解决办法

升级Spring Boot 3.x时遇到的问题与解决办法 在升级Spring Boot应用到3.x版本的过程中,可能会遇到一系列的依赖、配置及JDK版本相关问题。本文将列出几个常见问题及其对应的解决方案。 问题一:javax.xml.bind.JAXBException异常 问题描述 在更新Spring Boot依赖后,如果缺…

OpenAI重磅发布Sora——首个视频生成模型:利用文本-视频人工智能将想象变为现实

想象一下&#xff0c;现在你有一段文本话描述的故事&#xff0c;通过输入这段文本&#xff0c;就可以立刻展开一个生动详细的视频。这就是 OpenAI 神奇的 Sora&#xff0c;一个革命性的文本到视频的 AI 模型。Sora于2024年2月推出&#xff0c;凭借其仅凭文字提示就能生成现实和…

CSS 不同颜色的小圆角方块组成的旋转加载动画

<template><!-- 创建一个装载自定义旋转加载动画的容器 --><view class="spinner"><!-- 定义外部包裹容器,用于实现整体旋转动画 --><view class="outer"><!-- 定义四个内部小方块以形成十字形结构 --><view clas…

攻防演练后的一点随记

攻防演练 攻防演练算是告一段落了&#xff0c;各位红队和蓝队的兄弟们都辛苦了&#xff0c;写一点随记&#xff0c;供大家参考。 记得第一次参加攻防演练是在2018年&#xff0c;当时被派到北京&#xff0c;在某个政企单位做攻防演练支撑工作&#xff0c;然后2020年又被紧急派到…

SSE 协议详细教程

Server-Sent Events&#xff08;SSE&#xff09;是一种服务器到客户端的单向通信协议&#xff0c;它基于HTTP协议&#xff0c;允许服务器向客户端推送数据。SSE常用于实现实时更新的功能&#xff0c;例如在新闻网站或股票市场中显示最新消息。本文将详细介绍SSE协议的原理、实现…

Vue首屏优化,12个提速建议

文章目录 代码拆分和懒加载&#xff1a;代码拆分懒加载 图片优化&#xff1a;组件懒渲染&#xff1a;数据预获取和缓存&#xff1a;服务器端渲染&#xff08;SSR&#xff09;&#xff1a;代码压缩和合并&#xff1a;使用 CDN 加速&#xff1a;监控和性能分析&#xff1a;代码优…

AIGC实战——能量模型(Energy-Based Model)

AIGC实战——能量模型 0. 前言1. 能量模型1.1 模型原理1.2 MNIST 数据集1.3 能量函数 2. 使用 Langevin 动力学进行采样2.1 随机梯度 Langevin 动力学2.2 实现 Langevin 采样函数 3. 利用对比散度训练小结系列链接 0. 前言 能量模型 (Energy-based Model, EBM) 是一类常见的生…

c++开发基础之保障多线程编程中的原子操作InterlockedIncrement和InterlockedDecrement用法详解

一、介绍 在多线程编程中&#xff0c;确保对共享变量进行原子操作是至关重要的。当多个线程同时访问和修改同一共享资源时&#xff0c;如果没有合适的同步机制&#xff0c;可能会导致数据竞争、内存一致性问题&#xff0c;甚至造成程序崩溃。为了解决这个问题&#xff0c;C提供…