5. RIP动态路由协议

5.1 RIP协议(Routing Information Protocol)

(1)是一个距离矢量路由选择协议。选择最佳路径的标准是跳数,如果到达目标网络经过的路由器最少,则该路径是最佳路径。其允许的最大跳数为15跳,也就是16跳的距离将被认为是不可到达的。

(2)在小型网络中RIP运转良好,但对于使用慢速的WLAN连接的大型网络或安装有大量路由器的网络来说,它的效率很低。因为即便网络没有变化,它也要每30秒发送路由表到所有激活的接口,会占用网络带宽。当某个路由器A意外down机时,需要由它的邻居路由器B将down的信息通告出去。当路由器B在180秒没有收到关于A的更新,就认为路由器A路由失效。所以这个周期性的更新是必须的。

(3)RIP有两个版本RIPv1和RIPv2,其中RIPv1使用类路由选择。其通告路由的信息中不包含子网掩码(采用各类地址默认的子网掩码,只支持等长子网),而且该协议是通过广播包通告路由信息。RIPv2是无类路由选择,可以传送子网掩码信息(支持变长子网),并且使用多播地址通告路由信息。

(4)RIP只使用跳数来决定到达某个网络的最佳路径。如果到达某个网络存在不止一条路径,并且都具有相同的跳数,则路由器会自动执行循环负载均衡。(最多对6个路径实现负载均衡)

(5)RIP协议让网络中所有路由器都和自己相邻路由器定期交换路由信息,并周期性更新路由表,使得从每一个路由器到每一个目标网络的路由都是最短的(跳数最少)。由于RIP协议是根据跳数而不是带宽来选择最短路径,因此RIP协议选择出来的路径不一定是最佳的。

5.2 RIP协议工作原理(以RIPv2版本为例)

(1)由于路由器A的E0直接连接192.168.10.0/24网段。因此在路由器A上就有一条到该网段的路由信息,距离为0,下一跳是E0接口。表示从E0接口出去,可以到达192.168.10.0/24网段。

(2)路由器A每隔30秒将自己的路由表通过多播地址通告出去,通过S0接口通告的数据包源地址是2.0.0.1,路由器B接到路由器通告会,就会把到192.168.10.0/24网段的路由添加到路由表,距离加1,下一跳路由器指向2.0.0.1。

(3)路由器B同样地将自己的路由表通过S1接口通告出去,通过S1接口通告的数据包源地址为3.0.0.1,路由器C收到通告后,会把到192.168.10.0/24网段的路由添加到路由表,距离加1变为2,下一跳路由器指向3.0.0.1。

(4)同理,到192.168.10.0/24网段的路由,还可以通过E路由器和D路由器传递到C,C路由器收到后,距离加1变为3,比通过路由器B的距离(跳数)大,因此路由器C忽略这条路由。这就是计算最短路径的距离矢量路由算法。

(5)如果路由器A和B之间连接断开了,路由器B就收不到路由器A发过来的路由信息,经过3分钟后,路由器B将到192.168.10.0/24网段的路由跳数设置为16。这意味着该网段不可到达,然后通过S1接口将这条路由信息通告给C,路由器C也将到该网段的跳数设置为16。

(6)这时路由器D向路由器C通告到192.168.10.0/24网段的路由,路由器C更新到该网段的路由下一跳指向6.0.0.1,跳数为3。接着路由器C向B通告到该网段的路由,B更新到该网段的路由,下一跳指向3.0.0.2,跳数为4.这样网络的路由器都有了到达192.168.10.0/24网段的路由。

5.3 配置和测试RIP协议

(1)在路由器上配置RIP协议

R1#config t
R1(config)#router rip
R1(config-router)#network 192.168.0.0 //采用默认子网掩码
R1(config-router)#network 192.168.1.0
R1(config-router)#network 192.168.4.0
R1(config-router)#version
R1(config-router)#no network 192.168.4.0 //取消到192.168.4.0/24网段的路由

(2)查看路由表

  ①R1#show ip route

  ②R1#show ip route rip //只显示通过RIP协议学到的路由信息

  ③R1#show ip protocols //查看RIP协议配置

(3)观察RIP协议路由更新活动

  ①R1#debug ip rip  //启用RIP协议诊断,观察路由更新

  ②R1#undebug all   //关闭诊断输出

(4)测试RIP协议的健壮性

  ①在路由器R2上,启用RIP协议诊断

  ②在路由器R3上,启用RIP协议诊断

  ③删除R1和R2链路,然后观察R2、R3到192.168.0.0/24网段的跳数(先设置为16),再重构建通过路由器D、E到该网段的路由。

5.4 RIP协议数据包报文格式

(1)Wireshark抓包:在R1→R2链路上,点击Start Capture。注意,如果接口使用的协议是PPP还是HDLC,如果没有配置使用,默认就是HDLC。

(2)RIP协议数据包

(3)RIP报文首部和路由部分

RIP报文首部和路由部分

  ①RIP首部占4个字节,其中的命令字段指出报文的意义。如1表示请求路由信息,2表示对请求路由信息的响应或未被请求而发出的路由更新报文。首部后面的“必为0”是为了4字节的对齐。

  ②RIPv2报文的路由部分由若干条路由信息组成。每条路由信息需要用20字节。地址族字段用来标志所使用的地址协议。(RIP可用于非TCP/IP协议,当使用IP地址时该字段为2)。路由标记填入自治系统号,这是考虑使RIP有可能收到本自治系统以外的路由选择信息。

  ③一个RIP报文最多可包括25条路由,因而RIP报文的最大长度是4+20×25=504字节。如果超过,必须再使用一个RIP报文来传送。

第6章 静态路由和动态路由(3)_RIP动态路由协议的更多相关文章

  1. Spring Cloud (十三) Zuul:静态路由、静态过滤器与动态路由的实现

    前言 本文起笔于2018-06-26周二,接了一个这周要完成的开发任务,需要先等其他人的接口,可能更新的会慢一些,还望大家见谅.这篇博客我们主要讲Spring Cloud Zuul.项目地址:我的gi ...

  2. 【Cisco】实现同一个路由器一个端口用动态路由,另一个端口用静态路由

    一.先构建以下网络图: 准备三台路由器,三台交换机,三台主机,连接所有设备并配置端口IP和网关,DCE端口的时钟频率都设置为64000.

  3. CISCO实验记录五:静态路由与RIP动态路由

    一.实验要求 1.创建设备间静态路由 2.检查三层连通性 3.清空路由,使用RIP创建动态路由 4.检查路由表 二.实验操作 1.创建设备静态路由 #iip route 192.168.1.0 255 ...

  4. CCNA - Part12 - 路由协议 (1) - 静态路由,动态路由 RIP

    路由器 在之前关于路由器的介绍中,我们知道它是网络互联的核心设备,用于连接不同的网络,在网络之间转发 IP 数据报.对于路由器来说,路由表是其内部最为重要的构成组件.当路由器需要转发数据时,就会按照路 ...

  5. vue-router动态路由 刷新页面 静态资源没有加载的原因

    在做项目的时候,发现刷新页面的时候,静态路由没有加载,度娘了一圈,终于解决了. vue-router使用history模式+使用嵌套路由: 访问路由和嵌套路由页面,显示正常,但是刷新页面的时候,嵌套路 ...

  6. Reactjs之静态路由、动态路由以及Get传值以及获取

    1.新增知识点 /* react路由的配置: 1.找到官方文档 https://reacttraining.com/react-router/web/example/basic 2.安装 cnpm i ...

  7. RIP、OSPF、BGP、动态路由选路协议、自治域AS

    相关学习资料 tcp-ip详解卷1:协议.pdf http://www.rfc-editor.org/rfc/rfc1058.txt http://www.rfc-editor.org/rfc/rfc ...

  8. vue+iview实现动态路由和权限验证

    github上关于vue动态添加路由的例子很多,本项目参考了部分项目后,在iview框架基础上完成了动态路由的动态添加和菜单刷新.为了帮助其他需要的朋友,现分享出实现逻辑,欢迎一起交流学习. Gith ...

  9. Cisco动态路由配置

    前言: 学完静态路由配置,该学动态路由.所以 学习完后来做终结. 准备: PC:192.168.1.10 R1:fa0/0 192.168.1.1 fa0/1 1.1.12.1 R2: fa0/0 1 ...

  10. Miox带你走进动态路由的世界——51信用卡前端团队

    写在前面: 有的时候再做大型项目的时候,确实会被复杂的路由逻辑所烦恼,会经常遇到权限问题,路由跳转回退逻辑问题.这几天在网上看到了51信用卡团队开源了一个Miox,可以有效的解决这些痛点,于是乎我就做 ...

随机推荐

  1. sqler sql 转rest api 的docker 镜像构建(续)使用源码编译

    sqler 在社区的响应还是很不错的,已经添加了好多数据库的连接,就在早上项目的包管理还没有写明确, 下午就已经有go mod 构建的支持了,同时也调整下docker 镜像的构建,直接使用git cl ...

  2. Swift 属性 函数

    如今看cocoachina上得文章越来越有质量了,果断分享一下  原文: http://www.cocoachina.com/newbie/basic/2014/0611/8773.html 函数 函 ...

  3. 对象的释放Dispose和Close对比

    C#内存释放的几个方法对比: 而Close与Dispose这两种方法的区别在于,调用完了对象的Close方法后,此对象有可能被重新进行使用:而Dispose方法来说,此对象所占有的资源需要被标记为无用 ...

  4. php 数组排序 按照某字段

    $arr=[     array(         'name'=>'小坏龙',         'age'=>28     ),     array(         'name'=&g ...

  5. VS 中的几种注释方法

    在代码的后面添加形如下面注释: //TODO: (未实现)…… //UNDONE:(没有做完)…… //HACK:(修改)…… 等到再次打开VS的时候,找到 :视图>任务列表 即可显示所有带有T ...

  6. MEMS 硅麦资料收集

    MEMS 硅麦资料收集 PCM 和 I2S 协议的 MEMS Microphone PCM 协议在蓝牙方面比较多,一般都有 PCM 的接口. MEMS Microphone 更加的省电,更方便用于语音 ...

  7. 通过plsql develop查看建表语句

    右键--查看 右下角 如下显示,找出ddl语句 可以看到索引等

  8. mysql之 sysbench0.4.12数据库性能测试

    1. 常用选项 在Shell中运行以下命令便可得到sysbench的常用选项信息: sysbench --help 上述命令的输出信息如下图所示: 1.1 使用语法 使用sysbench时,可以通过以 ...

  9. ES9新特性

    这篇文章主要介绍ES2018(ES9)的新特性, 以及使用方法 JS是一门跨平台的语言, ES6也就是ECMAScript 2015 花费了5年的时间敲定, 是一次非常大的改版, 之后每年都有一个小版 ...

  10. elasticsearch 镜像使用

    elasticsearch 镜像使用 下载镜像: docker pull elasticsearch:6.5.4 创建容器: docker run -it -p 9200:9200 -p 9300:9 ...