第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,可以有效的解决这些痛点,于是乎我就做 ...
随机推荐
- 02C++namespace命名空间
一.C++命名空间基本常识 所谓namespace,是指标识符的各种可见范围.C++标准程序库中的所有标识符都被定义于一个名为std的namespace中. 1.<iostream>和&l ...
- try catch 用法实例
- 在公司上wifi
公司的wifi上不了咋办?自己搞! 做法: 把自己的newifi mini带到公司, 记录公司内网ip,登入路由器设置, 1. 把ip改为内网一致, 2.关闭dhcp功能 3.设置wifi 网线连接: ...
- thinkphp5 查询的数据是对象时,获取原始数据方法
获取原始数据 如果你定义了获取器的情况下,希望获取数据表中的原始数据,可以使用: $user = User::get(1); // 通过获取器获取字段 echo $user->status; / ...
- Ansible 常用模块之ping(四)
一.ping 模块 1.用途: 测试主机之间的连通性: 2.关键字:ping 3.参数:无 4.用法: ansible all -m ping 命令简单,测试所有服务器是否与控制机网络连通:
- Hbase Shell命令详解+API操作
HBase Shell 操作 3.1 基本操作1.进入 HBase 客户端命令行,在hbase-2.1.3目录下 bin/hbase shell 2.查看帮助命令 hbase(main):001:0& ...
- SSH框架搭建demo
1.新建Java Web工程 2.添加Struts2.1框架支持 去除冲突包:antlr-2.7.2.jar 一般项目加上这三个包足够,后期可以视项目需求增加支持包: 2.1配置web.xml文件 增 ...
- FFMPEG-Java 入门
注意:FFMPEG-Java 和 Jffmpeg 不是一回事.FFMPEG-Java 是 Freedom for Media in Java(缩写为 FMJ)的一个子项目. 这个项目遵循 ...
- 配置 influxDB 鉴权及 HTTP API 写数据的方法
本文简要描述如何为 InfluxDB 开启鉴权和配置用户管理权限(安装后默认不需要登录),以及开启鉴权后如何使用 HTTP API 写数据. 创建 InfluxDB 管理员账号创建 admin 帐号密 ...
- Azure ARM (22) 使用Azure PowerShell创建Azure RM VM
<Windows Azure Platform 系列文章目录> 在Azure China获得VM Image,可以执行下面的脚本. Get-AzureRmVMImagePublisher ...