HCIA项目实践--RIP相关原理知识面试问题总结回答
9.4 RIP
9.4.1 补充概念

什么是邻居?
邻居指的是在网络拓扑结构中与某一节点(如路由器)直接相连的其他节点。它们之间可以直接进行通信和数据交互,能互相交换路由信息等,以实现网络中的数据转发和路径选择等功能。(上图R1和R2是邻居关系。)
什么是开销值?
开销值(Cost Value)是衡量数据传输路径代价的一个量化指标。它通常与链路带宽、延迟、可靠性等因素相关,用于评估数据包通过某条链路或路径的代价。开销值越低,路径越优,网络设备会依据开销值来选择最优的数据传输路径,以实现高效的数据传输。
上图中R2想要把信息发给R1时,只需要两个参数
目标网段和开销值(cost)
Cost (开销值 ) 当到达同一个目标网段存在多条路径时,需要比较开销值,优先选择开销值小的路径。
注意:同一种协议获取到的路由,比较开销值;不同协议获取到的路由,比较优先级。
这里开销值的算法:
COST = 本地路由表中的开销值 + 1
不同动态路由协议的开销值的评判标准是不一样的。
RIP开销值的评判标准 (跳数)
以跳数作为选路依据,存在不合理性(如果加上传输速率就难说了)。每经过一个路由器跳数加 1,跳数越少开销值越低,通常规定 15 跳为最大有效跳数,16 跳则表示目标网络不可达。
RIP的优先级和工作半径
RIP(路由信息协议)的默认的优先级设置为 100 ,这意味着在与其他路由协议竞争路由选择时,依据该优先级参与决策。同时,RIP 存在一个工作半径限制,即 15 跳。每经过一个路由器被视作一跳,跳数的增加意味着路径越长,当达到 15 跳时,便认为目标网络已达 “最远可达” 状态,若超过 15 跳,比如达到 16 跳,就会判定目标网络不可达。
Bellman-Ford算法(贝尔曼福特算法)
1,R2发送2.0网段的路由信息给R1,R1本地的路由表中没有该网段的路由信息,R1将2.0网段的路由信息刷新到本地的路由表中。2,R2发送2.0网段的路由信息给R1,R1本地的路由表中存在2.0网段的路由信息,并且,下一跳就是R2,R1将R2发来的路由信息刷新到本地的路由表中;(也就是将新的路由信息刷新到路由表中)。3,R2发送2.0网段的路由信息给R1,R1本地的路由表中存在2.0网段的路由信息,并且,下一跳不是R2,如果发来的路由信息的开销值小于本地路由条目的开销值,则将R2发来的路由信息刷新到本地的路由表中;4,R2发送2.0网段的路由信息给R1,R1本地的路由表中存在2.0网段的路由信息,并且,下一跳不是R2,如果发来的路由信息的开销值大于本地路由条目的开销值,则不刷新。
9.4.2 RIP的三个版本
RIPV1,RIPV2 --- IPV4
RIPNG --- IPV6
RIPV1和RIPV2的区别
1,RIPV1是有类别的路由协议,RIPV2是无类别的路由协议;
RIPV1在传递路由信息中目标网段时,不携带子网掩码;RIPV2携带子网掩码,路由宣告更灵活。
2,RIPV1不支持手工认证,RIPV2支持手工认证;
RIPV1 无手工认证机制,数据易被篡改;RIPV2 支持手工认证,像对暗号,保障路由信息安全。 手工认证(类似于有人敲门,去开门时对的暗号)。
3,RIPV1使用广播发送信息,RIPV2使用组播发送信息。
RIPV1 广播信息给所有设备,浪费资源;RIPV2 组播信息到指定组,节省带宽。
#以上图为例,分析数据包#广播过程应用层:RIPV1传输层:UDP SP:520,DP:520 (4层)网络层:SIP:12.0.0.2 DIP:255.255.255.255 (3层)数据链路层:SMAC:自己 DMAC:全F (2层)#组播过程应用层:RIPV2传输层:UDP SP520,DP:520网络层:SIP:12.0.0.2 DIP:224.0.0.9(组播地址,专门为RIPV2准备的地址)数据链路层:SMAC:自己 DMAC:01-00-5e-00-00-09(所有组播地址都是以01-00-5e为开头的)。
为什么RIP 协议传输层用 UDP 而非 TCP
一是 UDP 开销小,无连接、无拥塞控制与重传机制,能快速传输路由信息,适合 RIP 周期性更新需求。
二是 RIP 信息简单,少量数据传输,UDP 足以保证,无需 TCP 复杂机制。
三是可降低网络负载,提升效率,使网络响应更及时。
9.4.3 RIP的数据包
请求数据包RIP-Request:路由器用它来主动获取其他路由器的路由信息。比如新接入网络的路由器,会发送请求包询问周边路由情况。
响应数据包RIP-Response :(真正携带路由信息的数据包),包含路由表项,有目的网络地址、子网掩码、跳数等信息。路由器收到请求包后回应该包,也会定期广播或组播它来更新邻居的路由表。
#注意RIP在收敛完成后,依然每隔30s会发送一个response报文 (类似于一个负责任的老师,为确保学生听懂,一直讲,直到或期待学生下一次能听懂。)这个行为叫周期更新,为了弥补没有确认机制;弥补没有保活机制。RIP的周期更新一定异步周期更新(类似高峰期需要错峰一样)
周期更新定义
在计算机网络中,周期更新是指网络设备按照预先设定的固定时间间隔,对特定数据或信息进行刷新操作。例如路由器会周期性地向其他设备通告自己的路由表,以维护网络中路由信息的时效性。
周期更新作用
周期更新可确保网络设备掌握的信息始终是最新的,有助于及时适应网络拓扑的变化。它能让路由选择更精准,减少数据传输延迟,增强网络的稳定性和可靠性,保障通信的顺畅进行。
9.4.4 RIP的计时器
RIP(路由信息协议)计时器是用于控制RIP运行节奏的机制。主要有更新计时器(定期广播路由信息)、失效计时器(判定路由是否失效)、抑制计时器(防止路由环路)和刷新计时器(决定何时从路由表清除无效路由),确保路由信息准确及时。
更新计时器(Update Timer)
定义:该计时器用于设定路由器向相邻路由器广播路由信息的时间间隔,RIP 协议默认更新周期为 30 秒。即每 30 秒,运行 RIP 的路由器就会向相邻路由器发送完整的路由表。
作用:定期更新可让各路由器的路由表紧跟网络拓扑变化,保持信息同步,保证数据包能沿最优路径转发。
影响:更新周期设置很关键。过短会使网络通信流量大增,加重路由器处理负担;过长则在网络拓扑改变时,路由器难以及时获取新信息,导致数据包转发延迟甚至出错。
失效计时器(Expiration Timer)
定义:失效计时器为每个路由条目单独计时,默认时长 180 秒。若在这段时间内,路由器未收到某路由条目的更新信息,该条目的失效计时器就会超时,路由器会将其度量值设为 16 跳(即无穷大),表示该路由不可达。
时间是180S,当一条路由条目刷新之后开始计时,当180S时间到达后,该路由信息未刷新,则将判定该路由条目失效。首先,会将该路由信息从全局路由表中删除掉,但是,依然保存在缓存中,只是,将它的开销值改为16。在之后的周期更新中,依然会携带该路由信息。(带毒传输)也就是只能告诉我有什么,但是不能告诉我没有什么。
作用:它能有效检测网络中路由的有效性。当链路故障或路由器失效时,相关路由条目无法及时更新,失效计时器超时可让路由器迅速标记这些不可用路由。
影响:其时长需根据网络稳定性合理调整。设置过短,网络短暂拥塞或延迟时易误判路由失效;设置过长,路由真正失效时路由器反应迟缓,影响网络正常运行。
抑制计时器(Hold - down Timer)
定义:当路由器收到某路由条目不可达的消息后,会启动抑制计时器,默认 180 秒。计时期间,即便收到更优的该路由条目信息,路由器也不会立即更新路由表。
作用:主要功能是防止路由环路。网络拓扑变化时,路由信息可能不一致、产生振荡,抑制计时器能让网络有时间稳定,避免路由器在不稳定时频繁更新路由表,减少环路发生。
影响:设置不当会影响网络收敛速度。过长会使网络拓扑稳定后,路由器仍抑制更新,导致收敛缓慢;过短则难以有效防止路由环路。
刷新计时器(Flush Timer)
定义:刷新计时器用于控制从路由表彻底删除失效路由条目的时间。某路由条目失效计时器超时后,刷新计时器开始计时,默认 240 秒,超时后该条目将被删除。
作用:定期清理路由表中的无效条目,释放路由器内存资源,提高路由表查询效率。
影响:时长设置要恰当。过短可能在网络短暂故障时过早删除可能恢复的条目;过长则会使无效信息长时间占据内存。
9.4.5 RIP的破环机制
(1)15跳的工作半径
为路由范围划定了明确界限,有效避免了数据包在环路中无休止地循环转发,防止网络资源的浪费和拥塞,保证了路由的基本合理性和有效性。(2)触发更新 --- 在拓扑结构发生变化时立即更新
传统路由信息按固定间隔交换,网络拓扑突变,如链路断开、新节点加入时,固定更新难以及时反映,易导致环路。触发更新让路由器检测到变化后,立刻向相邻路由器发送新信息。网络中路由器能迅速获取并调整路由表,避免信息延迟导致的环路,使网络快速适应变化。(3)水平分割 --- 从哪个接口接受到的信息将不再从这个接口发出
因为信息从原接口发回,易在相邻路由器间循环形成环路。水平分割避免了不必要的信息往返,减少环路可能,提升信息传递效率。(4)毒性逆转 --- 从哪个接口接受到的信息,依然可以从这个接口发出,但是要带毒
是对水平分割的补充。通常水平分割禁止从接收接口再发信息,但特定场景会影响网络收敛。毒性逆转允许从原接口发信息,不过将路由跳数设为 16(即 “带毒”,表示不可达)。当网络变化使路由不可用时,能快速扩散不可达信息,让相邻路由器更新路由表,避免用无效路由,打破潜在环路,加速收敛。
注意:因为水平分割和毒性逆转的做法矛盾,所以,只能开启一个。华为设备默认开启水平分割。
相关文章:
HCIA项目实践--RIP相关原理知识面试问题总结回答
9.4 RIP 9.4.1 补充概念 什么是邻居? 邻居指的是在网络拓扑结构中与某一节点(如路由器)直接相连的其他节点。它们之间可以直接进行通信和数据交互,能互相交换路由信息等,以实现网络中的数据转发和路径选择等功能。&am…...
使用Python进行云计算:AWS、Azure、和Google Cloud的比较
👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Python进行云计算:AWS、Azure、和Google Cloud的比较 随着云计算的普及&am…...
c++ 实现矩阵乘法
矩阵乘法的基本实现方法是三层循环,但不同的循环顺序会影响性能,比如i-j-k和i-k-j的顺序。然后,参考内容里提到了一些优化方法,比如调整循环顺序来提高缓存命中率,使用一维数组存储矩阵,或者利用SIMD指令如…...
无线4G多联机分户计费集中控制系统
拓森无线4G多联机集中控制系统应用于宝龙广场多联机计费集中控制节能改造项目,包括多联机集中控制,分户计费,空调监控管理、告警管理、节能管控、统计报表、能效分析、空调远程开关机等功能。项目的成功实施,不仅提升了维护管理效…...
文字转语音(一)各种实现说明
记录下文字转语音的各种方式及优缺点 目前只了解了调用 Windows PowerShell(System.Speech.Synthesis)、FreeTTS、JACOB(Java COM Bridge)库实现文字转语音。 其他的方式就是顺带记录了解下 Windows PowerShell(System…...
大语言模型多代理协作(MACNET)
大语言模型多代理协作(MACNET) Scaling Large-Language-Model-based Multi-Agent Collaboration 提出多智能体协作网络(MACNET),以探究多智能体协作中增加智能体数量是否存在类似神经缩放定律的规律。研究发现了小世界协作现象和协作缩放定律,为LLM系统资源预测和优化…...
【笛卡尔树】
笛卡尔树 笛卡尔树定义构建性质 习题P6453 [COCI 2008/2009 #4] PERIODNICF1913D Array CollapseP4755 Beautiful Pair[ARC186B] Typical Permutation Descriptor 笛卡尔树 定义 笛卡尔树是一种二叉树,每一个节点由一个键值二元组 ( k , w ) (k,w) (k,w) 构成。要…...
Java堆外内存的高效利用与性能优化
在Java开发中,堆外内存(Direct Memory)是除Java堆以外的内存区域。它允许Java程序直接分配和管理非堆内存,这为高性能的数据处理提供了可能。 1、 什么是堆外内存? 堆外内存,也称为直接内存(D…...
【Unity3D优化】使用ASTC压缩格式优化内存
在Unity3D手游开发中,合理选择纹理压缩格式对于优化内存占用、提高渲染效率至关重要。本文将记录近期在项目内进行的图片压缩格式优化过程,重点介绍从ETC2到ASTC 5x5的优化方案及其带来的收益。 1. 现状分析:从ETC2到ASTC 6x6 block 在项目…...
iptables网络安全服务详细使用
iptables防火墙概念说明 开源的基于数据包过滤的网络安全策略控制工具。 centos6.9 --- 默认防火墙工具软件iptables centos7 --- 默认防火墙工具软件firewalld(zone) iptables主要工作在OSI七层的二、三、四层,如果重新编译内核&…...
MiC建筑引领未来:中建海龙的探索与实践
随着全球城市化进程的加速推进,建筑行业正面临着前所未有的挑战与机遇。如何高效、环保地建造高质量的建筑,成为了行业内外普遍关注的焦点。在此背景下,MiC(Modular Integrated Construction,模块化集成建筑࿰…...
清华精品资料:DeepSeek从入门到精通、DeepSeek赋能职场
今天电脑天空给大家推荐2份清华大学专家编写的DeepSeek的使用手册,分别是《DeepSeek从入门到精通》和《DeepSeek赋能职场》。 《DeepSeek从入门到精通》是一本系统化的技术指南,旨在帮助用户从零基础到精通掌握通用人工智能模型DeepSeek的核心功能与应用…...
Nginx进阶篇 - nginx多进程架构详解
文章目录 1. nginx的应用特点2. nginx多进程架构2.1 nginx多进程模型2.2 master进程的作用2.3 进程控制2.4 worker进程的作用2.5 worker进程处理请求的过程2.6 nginx处理网络事件 1. nginx的应用特点 Nginx是互联网企业使用最为广泛的轻量级高性能Web服务器,其特点是…...
SpringBoot初始化8个常用方法
在 Spring Boot 中,初始化方法通常是在应用程序启动时被调用的,可以用来执行应用启动时的一些准备工作。以下是几种常见的初始化方法: 一、顺序 1. 图解 ┌─────────────────────────────┐│ Spring Boot…...
boolen盲注和时间盲注
获取当前数据库名 import requestsdef inject_database(url):namemax_length20low{a: 97, z: 122, A: 65, Z: 90, 0: 48, 9: 57, _: 95}high{97: a, 122: z, 65: A, 90: Z, 48: 0, 57: 9, 95: _}for i in range(1, max_length 1):low_val32high_val122while low_val < hi…...
CTF-web:java-h2 堆叠注入rec -- N1ctf Junior EasyDB
代码存在sql注入 // 处理登录表单的POST请求PostMapping({"/login"})public String handleLogin(RequestParam String username, RequestParam String password, HttpSession session, Model model) throws SQLException {// 验证用户凭据if (this.userService.valid…...
TUSB422 MCU 软件用户指南
文章目录 TUSB422 MCU 软件用户指南 目录表格图表1. 介绍2. 配置2.1 通用配置2.2 USB-PD 3.0 支持2.3 VDM 支持 3. 代码 ROM/RAM 大小优化4. 通过 UART 调试4. 移植到其他微控制器 TUSB422 MCU 软件用户指南 摘要 本文档是 TUSB422 微控制器基于 Type-C 端口控制(…...
BUU37 [DASCTF X GFCTF 2024|四月开启第一局]web1234100
Hint1:本题的 flag 不在环境变量中 Hint2:session_start(),注意链子挖掘 题目: 扫描出来www.zip class.php <?phpclass Admin{public $Config;public function __construct($Config){//安全获取基…...
常见的排序算法:插入排序、选择排序、冒泡排序、快速排序
1、插入排序 步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找到已排序元素中小于等于tem的元素…...
vue学习9
1.文章分类页面-element-plus表格 基本架子-PageContainer封装 按需引入的彩蛋,components里面的内容都会自动注册 用el-card组件,里面使用插槽或具名插槽 文章分类渲染 & loading处理 序号: <el-table-column type"index"…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
