第6章 静态路由和动态路由(3)_RIP动态路由协议
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动态路由协议的更多相关文章
- Spring Cloud (十三) Zuul:静态路由、静态过滤器与动态路由的实现
前言 本文起笔于2018-06-26周二,接了一个这周要完成的开发任务,需要先等其他人的接口,可能更新的会慢一些,还望大家见谅.这篇博客我们主要讲Spring Cloud Zuul.项目地址:我的gi ...
- 【Cisco】实现同一个路由器一个端口用动态路由,另一个端口用静态路由
一.先构建以下网络图: 准备三台路由器,三台交换机,三台主机,连接所有设备并配置端口IP和网关,DCE端口的时钟频率都设置为64000.
- CISCO实验记录五:静态路由与RIP动态路由
一.实验要求 1.创建设备间静态路由 2.检查三层连通性 3.清空路由,使用RIP创建动态路由 4.检查路由表 二.实验操作 1.创建设备静态路由 #iip route 192.168.1.0 255 ...
- CCNA - Part12 - 路由协议 (1) - 静态路由,动态路由 RIP
路由器 在之前关于路由器的介绍中,我们知道它是网络互联的核心设备,用于连接不同的网络,在网络之间转发 IP 数据报.对于路由器来说,路由表是其内部最为重要的构成组件.当路由器需要转发数据时,就会按照路 ...
- vue-router动态路由 刷新页面 静态资源没有加载的原因
在做项目的时候,发现刷新页面的时候,静态路由没有加载,度娘了一圈,终于解决了. vue-router使用history模式+使用嵌套路由: 访问路由和嵌套路由页面,显示正常,但是刷新页面的时候,嵌套路 ...
- Reactjs之静态路由、动态路由以及Get传值以及获取
1.新增知识点 /* react路由的配置: 1.找到官方文档 https://reacttraining.com/react-router/web/example/basic 2.安装 cnpm i ...
- RIP、OSPF、BGP、动态路由选路协议、自治域AS
相关学习资料 tcp-ip详解卷1:协议.pdf http://www.rfc-editor.org/rfc/rfc1058.txt http://www.rfc-editor.org/rfc/rfc ...
- vue+iview实现动态路由和权限验证
github上关于vue动态添加路由的例子很多,本项目参考了部分项目后,在iview框架基础上完成了动态路由的动态添加和菜单刷新.为了帮助其他需要的朋友,现分享出实现逻辑,欢迎一起交流学习. Gith ...
- Cisco动态路由配置
前言: 学完静态路由配置,该学动态路由.所以 学习完后来做终结. 准备: PC:192.168.1.10 R1:fa0/0 192.168.1.1 fa0/1 1.1.12.1 R2: fa0/0 1 ...
- Miox带你走进动态路由的世界——51信用卡前端团队
写在前面: 有的时候再做大型项目的时候,确实会被复杂的路由逻辑所烦恼,会经常遇到权限问题,路由跳转回退逻辑问题.这几天在网上看到了51信用卡团队开源了一个Miox,可以有效的解决这些痛点,于是乎我就做 ...
随机推荐
- spring 自己定义标签 学习二
在上篇中写的仅仅支持写属性,不支持标签property的写法,可是假设有时候我们还想做成支持 property的使用方法,则能够在xsd中添加spring 自带的xsd引用 改动xsd文件例如以下 ...
- Understanding the managed heap
Understanding the managed heap Another common problem faced by many Unity developers is the unexpe ...
- Promise实例的catch方法
//Promise.prototype.catch方法是.then(null,rejection)的别名, //用于指定发生错误时的回调函数 //then方法指定的回调函数如果运行时抛出错误,也会被c ...
- Kubernetes 知识点
自己总结的 Kubernetes 的各模块(待补充) 各模块包含关系: namespace => node => pod => container table th:first-of ...
- php+js实现重定向跳转并post传参
页面重定向跳转并post传参 $mdata=json_encode($mdata);//如果是字符串无需使用json echo " <form style='display:none; ...
- Hadoop yarn工作流程详解
yarn是什么?1.它是一个资源调度及提供作业运行的系统环境平台 资源:cpu.mem等 作业:map task.reduce Task yarn产生背景?它是从hadoop2.x版本才引入1.had ...
- 【java】构造函数
什么时候自定义构造函数:当分析事物时,事物一存在就具备一些特征或者行为,那么就把这么内容定义在构造函数中 作用:对对象进行初始化,对象一建立,就会自动调用与之对应的构造函数 特点: 1.函数名和类名相 ...
- dom实例,模态框,全选,反选,取消
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- position 分层固定在屏幕某位置
很多网站我们看到在屏幕右下角有一个,返回顶部,始终在那儿,还有些网站顶部菜单栏永远也是固定的不动,就是通过今天学习的position来做的. 在style中加入 positon:fixed;top 0 ...
- sql 数据类型转换
1.convert(float,endtimepart)——conver(数据类型,字段名称) 2.cast(endtimepart as float)——cast(字段名称 as 数据类型)