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协议

  1. R1#config t
  2. R1(config)#router rip
  3. R1(config-router)#network 192.168.0.0 //采用默认子网掩码
  4. R1(config-router)#network 192.168.1.0
  5. R1(config-router)#network 192.168.4.0
  6. R1(config-router)#version
  7. 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. 02C++namespace命名空间

    一.C++命名空间基本常识 所谓namespace,是指标识符的各种可见范围.C++标准程序库中的所有标识符都被定义于一个名为std的namespace中. 1.<iostream>和&l ...

  2. try catch 用法实例

  3. 在公司上wifi

    公司的wifi上不了咋办?自己搞! 做法: 把自己的newifi mini带到公司, 记录公司内网ip,登入路由器设置, 1. 把ip改为内网一致, 2.关闭dhcp功能 3.设置wifi 网线连接: ...

  4. thinkphp5 查询的数据是对象时,获取原始数据方法

    获取原始数据 如果你定义了获取器的情况下,希望获取数据表中的原始数据,可以使用: $user = User::get(1); // 通过获取器获取字段 echo $user->status; / ...

  5. Ansible 常用模块之ping(四)

    一.ping 模块 1.用途: 测试主机之间的连通性: 2.关键字:ping 3.参数:无 4.用法: ansible all -m ping 命令简单,测试所有服务器是否与控制机网络连通:

  6. Hbase Shell命令详解+API操作

    HBase Shell 操作 3.1 基本操作1.进入 HBase 客户端命令行,在hbase-2.1.3目录下 bin/hbase shell 2.查看帮助命令 hbase(main):001:0& ...

  7. SSH框架搭建demo

    1.新建Java Web工程 2.添加Struts2.1框架支持 去除冲突包:antlr-2.7.2.jar 一般项目加上这三个包足够,后期可以视项目需求增加支持包: 2.1配置web.xml文件 增 ...

  8. FFMPEG-Java 入门

    注意:FFMPEG-Java 和 Jffmpeg 不是一回事.FFMPEG-Java 是 Freedom for Media in Java(缩写为 FMJ)的一个子项目.        这个项目遵循 ...

  9. 配置 influxDB 鉴权及 HTTP API 写数据的方法

    本文简要描述如何为 InfluxDB 开启鉴权和配置用户管理权限(安装后默认不需要登录),以及开启鉴权后如何使用 HTTP API 写数据. 创建 InfluxDB 管理员账号创建 admin 帐号密 ...

  10. Azure ARM (22) 使用Azure PowerShell创建Azure RM VM

    <Windows Azure Platform 系列文章目录> 在Azure China获得VM Image,可以执行下面的脚本. Get-AzureRmVMImagePublisher ...