前文我们了解了动态路由的基本概念,以及动态路由和静态路由的区别,优缺点,动态路由的分类,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14995317.html;今天我们主要来聊一聊动态路由协议中的RIP协议;

  什么是RIP?RIP是Routing Information Protocol 首字母缩写,翻译成中文就是路由信息协议;它是一种基于距离矢量算法的动态路由协议,使用跳数作为衡量到达目标网络的距离。其特点是配置简单,易于维护和适合应用在较小的网络环境中;它有两个版本RIPV1和RIPV2两个版本,它是应用层协议,工作在udp的520端口,主要用来发现和维护去往目标网络的最短路径(路由的学习和维护);支持水平分割、毒性逆转和触发更新等防环机制;

  RIP的工作原理

  RIP的工作原理很简单,我们在路由器上启用rip进程,宣告网络以后,路由器首先会发送路由更新请求,收到请求的路由器会发送自己的RIP路由进行响应,收到路由更新包的路由器会对应的路由信息更新到自己的路由表中;当网络稳定后,各路由器会时隔30s,周期性的发送自己的路由更新信息;

  实验:如下图拓扑环境,各路由器都运行rip,然后抓包看看具体的工作过程

  配置各路由器的接口ip以及名称

  配置R1

<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R1
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 1.1.1.1 24
Jul 13 2021 19:20:53-08:00 R1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP on the interface GigabitEthernet0/0/0 has entered the UP state.
[R1-GigabitEthernet0/0/0]q
[R1]dis ip int b
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 2
The number of interface that is DOWN in Physical is 2
The number of interface that is UP in Protocol is 2
The number of interface that is DOWN in Protocol is 2 Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 1.1.1.1/24 up up
GigabitEthernet0/0/1 unassigned down down
GigabitEthernet0/0/2 unassigned down down
NULL0 unassigned up up(s)
[R1]

  配置R2

<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R2
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 1.1.1.2 24
Jul 13 2021 19:21:35-08:00 R2 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP on the interface GigabitEthernet0/0/0 has entered the UP state. int
[R2-GigabitEthernet0/0/0]g0/0/1
[R2-GigabitEthernet0/0/1]ip add 2.2.2.2 24
Jul 13 2021 19:21:36-08:00 R2 %%01IFNET/4/LINK_STATE(l)[1]:The line protocol IP on the interface GigabitEthernet0/0/1 has entered the UP state.
[R2-GigabitEthernet0/0/1]q
[R2]dis ip int b
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 3
The number of interface that is DOWN in Physical is 1
The number of interface that is UP in Protocol is 3
The number of interface that is DOWN in Protocol is 1 Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 1.1.1.2/24 up up
GigabitEthernet0/0/1 2.2.2.2/24 up up
GigabitEthernet0/0/2 unassigned down down
NULL0 unassigned up up(s)
[R2]

  配置R3

<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R3
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ip add 2.2.2.3 24
Jul 13 2021 19:22:05-08:00 R3 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP on the interface GigabitEthernet0/0/0 has entered the UP state.
[R3-GigabitEthernet0/0/0]q
[R3]dis ip int b
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 2
The number of interface that is DOWN in Physical is 2
The number of interface that is UP in Protocol is 2
The number of interface that is DOWN in Protocol is 2 Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 2.2.2.3/24 up up
GigabitEthernet0/0/1 unassigned down down
GigabitEthernet0/0/2 unassigned down down
NULL0 unassigned up up(s)
[R3]

  提示:可以看到3台路由器各自的相关接口都正确配置了ip地址和名称;

  配置R1路由器上的RIP ,并宣告对应的网络,然后抓包看看对应能抓到什么包?

  提示:可以看到当R1运行rip,并宣告网络以后,对应就能抓到一个request包,其他的都是response包,并且在R1会每隔30秒发送一次响应包;在抓包的信息中,我们也能清楚的看到rip发送请求和响应包目标地址都是255.255.255.255,这个地址就是全网广播;默认没有配置RIP的版本时,默认运行的是RIPv1的版本;以此同时我们也能清楚的看到RIP工作在udp的520端口;

  配置R2的rip,并宣告对应接口的网络,然后抓包分析

  提示:同样的原理,在R2配置好RIP以后,对应在R1的接口上也能收到对应R2发送过来的请求包和响应包,并且也能看到R1的响应包;

  查看R1的路由表

[R1]dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 8 Routes : 8 Destination/Mask Proto Pre Cost Flags NextHop Interface 1.1.1.0/24 Direct 0 0 D 1.1.1.1 GigabitEthernet0/0/0
1.1.1.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
1.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
2.0.0.0/8 RIP 100 1 D 1.1.1.2 GigabitEthernet0/0/0
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0 [R1]dis ip rout pro rip
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : RIP
Destinations : 1 Routes : 1 RIP routing table status : <Active>
Destinations : 1 Routes : 1 Destination/Mask Proto Pre Cost Flags NextHop Interface 2.0.0.0/8 RIP 100 1 D 1.1.1.2 GigabitEthernet0/0/0 RIP routing table status : <Inactive>
Destinations : 0 Routes : 0 [R1]

  提示:可以看到现在R1的路由表中学习到R2上的2.2.2.2 的路由;

  查看R2的路由表

[R2]dis ip routing
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 10 Routes : 10 Destination/Mask Proto Pre Cost Flags NextHop Interface 1.1.1.0/24 Direct 0 0 D 1.1.1.2 GigabitEthernet0/0/0
1.1.1.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
1.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
2.2.2.0/24 Direct 0 0 D 2.2.2.2 GigabitEthernet0/0/1
2.2.2.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
2.2.2.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0 [R2]dis ip rou pro rip
[R2]

  提示:在R2上并没有发现学习通过RIP学习到R1的路由,其原因是R1上只宣告了一条和R2直连的网络,默认情况下,路由器它不会学习和当前接口是直连的路由,所以在R2上我们是看不到通过RIP学习到的1.0.0.0的路由;

  在R3上运行RIP,并添加一个lo3回环口,配置其ip地址为3.3.3.3 24,并宣告对应的网络,看看各路由器是否能够相互学习到自己非直连的路由信息呢?

[R3]int lo3
[R3-LoopBack3]ip add 3.3.3.3 32
[R3-LoopBack3]rip 1
[R3-rip-1]net 2.0.0.0
[R3-rip-1]net 3.0.0.0
[R3-rip-1]d th
[V200R003C00]
#
rip 1
network 2.0.0.0
network 3.0.0.0
#
return
[R3-rip-1]dis ip int b
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 3
The number of interface that is DOWN in Physical is 2
The number of interface that is UP in Protocol is 3
The number of interface that is DOWN in Protocol is 2 Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 2.2.2.3/24 up up
GigabitEthernet0/0/1 unassigned down down
GigabitEthernet0/0/2 unassigned down down
LoopBack3 3.3.3.3/32 up up(s)
NULL0 unassigned up up(s)
[R3-rip-1]

  提示:RIP宣告网络只需宣告其主类即可;所谓主类是根据其ip地址的分类,如A类地址是从1-126,B类是从128-191,C类是从192-223;

  查看R2 是否学习到3.3.3.3/32的路由呢?

  提示:可以看到R2的路由表中就有通过RIP学习到了3.0.0.0/8的路由;

  查看R1的路由表

  提示:可以看到在R1的路由表中也通过RIP学习到了到达3.0.0.0/8的路由;

  查看R3的路由表

  提示:R3也通过RIP学习到了1.0.0.0/8的路由;通过上述实验我们可以看到,当路由器运行了RIP进程,并宣告了对应接口上的网络以后,对应路由器首先会发送请求路由信息包,然后自己每隔30秒将自己宣告的网络对应的路由全网广播(ripv1);收到路由更新包的路由器会将其对应的路由信息更新到自己的路由表中;

  RIP度量

  RIP使用跳数作为度量值来衡量到达目标网络的距离,默认缺省情况下,直连网络的路由器跳数为0,但路由器发送到路由更新时,会把其度量值加1;

  验证:在上述实验环境中,在R2上抓包,看看3.0.0.0/8这条路由的跳数是多少?

  提示:可以看到在R2上抓包,看到3.0.0.0/8这个目标网络的跳数为1,其原因是在R3的路由表中3.0.0.0的路由其跳数为0,在R3发送该条路由信息时,会将其跳数加1,所以R2接收到3.0.0.0这条路由时,其跳数为1;

  验证:按照上述的理论,我们在R1上抓包,看看对应3.0.0.0这个目标网络的路由是不是2?

  提示:可以看到了到达3.0.0.0的网络,跳数为2;说明在R2发出路由更新包时,将其路由的跳数加1,所以到达R1时就变为2了;同时我们也看到上述的抓包信息中,并没有抓到R1发送到路由更新包,其原因是R1上值宣告了和R2直连的一条网络,对于R2来说,并没有值得学习的路由,所以R1也干脆不发了(默认情况下,如果使用RIPv2版本,配置的有认证,R1还是会发送路由更新信息);

  RIP规定超过15跳的网络为不可达网络;这句话的意思也就告诉我们了在默认情况下,到达目标网络的路由器不能超过16个;同时我们可以理解当我们要在RIP中删除一条路由信息,RIP会将对应的路由信息的跳数置为16跳;

  验证:还是上述的实验,我们在R2上抓包,然后把R3 上的3.0.0.0从R3的RIP进程删除,看看R2 收到的路由更新包对应3.0.0.0的跳数是多少?

  提示:可以看到对应在R3被取消宣告的3.0.0.0网络,在R3发送时将其跳数置为16跳,意思就是告诉R2 3.0.0.0网络不可达;此时在R2的路由表中就不会存在3.0.0.0网络的路由;

  验证:查看R2的路由表,看看对应3.0.0.0网络的路由是否还存在?

  提示:可以看到在R2的路由表中并没有发现3.0.0.0的路由;说明R2理解了R3发送到路由更新,将其3.0.0.0从路由表中删除;这也说明了跳数为16跳的路由在RIP中没有任何意义,当然也不会被其他路由器学习并存放在路由表中;

  RIPv1和RIPv2 的区别

  从上面的实验和抓包我们可以看到RIPv1默认是把路由请求和路由更新发送给目标地址为255.255.255.255(广播),并且在对应的报文中,并没有掩码,只有ip地址,其原因是RIPv1是有类路由协议,它默认会根据ip地址的分类默认添加/8或/16或/24的掩码,这也说明了RIPv1它不能运行在非默认掩码的网络环境中,即不支持vlsm(可变长子网掩码,就是子网划分,将一个子网划分为多个子网)和cidr(无类域间路由,和子网划分相反,是将多个子网聚合为一个子网);除了上述的2各特点,它还不支持认证;

  RIPv2的特点,它弥补了RIPv1版本的缺陷,首先它的报文不是全网广播,而是将路由请求和路由更新发送到224.0.0.9这个组播地址,只有运行RIPv2版本的RIP进程会从这个组播地址学习路由;其次RIPv2是无类路由协议,所谓无类动态路由协议就是指对应路由信息在报文中除了有ip地址,它还携带掩码,这也意味着RIPv2支持vlsm和cidr;除此RIPv2支持明文认证和md5密文认证,从某些角度讲要比RIPv1安全;

  验证:在R1上抓包,然后更改R2 上的RIP进程,让其运行为v2 版本,看看对应和v1版本的数据包有什么不同?

  RIPv2的数据包

  RIPv1的数据包

  提示:从上面抓包来看,V1的数据包是全网广播,并且路由信息不携带掩码;v2的数据包不是全网广播,而是发送给224.0.0.9这个组播地址,并非且对应路由信息中有携带掩码;

  在R1上查看路由表

  提示:在R1的路由表中我们可以看到有两条由RIP学习过来的路由,其中一条的掩码为8,另一条为24;为什么会有两条路由呢,其原因是v2版本学习到的是24为掩码,而v1版本学习到的是8为掩码,从路由器的路由规则来讲,24为掩码优先匹配(最长掩码匹配原则嘛),所以当路由器从RIPv2切换为v1时,原来24掩码的路由不会立马被路由器删除(老化时间到了会被删除);反之,如果路由器从RIPv1切换成RIPv2,对应/8的路由会立马被删除;

  RIPv1报文格式

  RIPv1字段解释

  RIPv2报文格式

  RIPv2报文字段解释

  RIPv2认证功能的配置

  在R2上配置简单明文认证功能

  提示:配置RIP认证,我们需要在对应的接口上配置;上述命令中simple表示简单明文认证,除此RIP还支持md5认证,后面的plain表示在配置信息中以明文的方式回显,所以上述命令表示的意思是在g0/0/0这个接口上开启rip认证,认证模式为简单明文认证,并在配置信息中以明文的方式回显;

  验证:我们在R1上抓包,看看对应R2发送到数据包有什么特点?是否能够抓到密码呢?

  提示:可以看到我们在R1上抓包,是能够看到R2发送到认证信息,并且从路由更新包中也能清楚的看到对应的密码;

  更改R2上RIP认证模式为md5认证,并在配置信息回显以明文方式显示

  再次在R1上抓包,看看是否能够抓到R2发送到认证密码呢?

  提示:再次在R1上抓包就看不到对应的密码了;接下来我们看看R1的路由表,看看是否能够学习到R2上的路由呢?

  提示:可以看到在R1上此时并无法学习到R2上的路由;原因是R1上没有配置认证;

  在R1上配置简单明文认证,并在配置信息中以密文方式回显

  提示:后面的cipher的作用就是用来配置在配置信息中以密文的方式显示;这是一种防止密码泄露的一个安全措施吧;

  此时R1和R2都配置了认证,并且密码都相同,在R1上是否能够学习到R2上的路由呢?

  提示:虽然R1上的认证和R2上的认证密码都是admin,但是他们的使用的认证模式不一样,所以还是导致R1无法学习到R2的路由;

  配置R1的认证模式为md5,并在回显时以密文方式

  提示:现在R1和R2的认证方式和认证密码都相同,唯一不同的是一个回显明文显示,一个回显密文显示,我们再来看看R1是否能够学习到R2的路由呢?

  提示:现在我们在R1上学习到R2上的路由;通过上述实验我们可以总结,在RIP中做认证,必须满足两个条件,第一认证模式必须相同,其次就是认证的密码必须相同,回显相同和不同不影响认证;这两个条件必须同时满足,认证才会通过,否则认证通不过;

HCNA Routing&Switching之动态路由协议RIP的更多相关文章

  1. HCNA Routing&Switching之动态路由协议OSPF基础(一)

    前文我们了解了基于路径矢量算法的动态路由协议RIP防环以及度量值的修改相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15012895.html:今天我 ...

  2. HCNA Routing&Switching之动态路由协议OSPF建立邻居的条件

    前文我们了解了OSPF的router id.数据包结构.类型.不同类型的数据包作用以及OSPF状态机制,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15027 ...

  3. HCNA Routing&Switching之动态路由协议OSPF基础(二)

    前文我们主要了解了OSPF的区域.区域分类.路由器类型.OSPF的核心工作流程,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/15025533.html:今天 ...

  4. HCNA Routing&Switching之动态路由协议OSPF DR和BDR

    前文我们了解了OSPF建立邻居关系的条件,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15032907.html:今天我们来聊一聊OSPF中的DR和BDR: ...

  5. HCNA Routing&Switching之动态路由基本概念

    前文我们了解了静态路由的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14965433.html:今天我们来聊一聊动态路由相关概念: 首先我们要清楚什 ...

  6. HCNP Routing&Switching之动态路由协议IS-IS基础

    前文我们了解了OSPF的特殊区域相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15236330.html:今天我们来聊一聊另一动态路由协议IS-IS相 ...

  7. 1.3-动态路由协议RIP①

    Dynamic Routing Protocol:动态路由协议 现代IP网络中,主要的动态路由协议: AD/管理距离: 1:DV/距离向量协议:RIP(120)/IGRP(100) 2:LS/链路状态 ...

  8. 动态路由协议RIP

    RIP Routing Information Protocol,属IGP协议,是距离矢量型动态路由协议(直接发送路由信息的协议为距离矢量型协议),使用UDP协议,端口号520. 贝尔曼福特算法 RI ...

  9. HCNA Routing&Switching之路由基础

    在开始聊路由之前,我们首先要明白在网络通讯里,什么是路由?什么是路由表.路由器以及网关的相关术语:路由简单讲就是指网络数据包从源头到目标的路径,主要用来为不同网络间通讯提供数据包转发依据:路由表就是多 ...

随机推荐

  1. Step By Step(Lua函数)

    Step By Step(Lua函数) 一.函数:    在Lua中函数的调用方式和C语言基本相同,如:print("Hello World")和a = add(x, y).唯一的 ...

  2. NGINX缓存使用官方指南

    我们都知道,应用程序和网站一样,其性能关乎生存.但如何使你的应用程序或者网站性能更好,并没有一个明确的答案.代码质量和架构是其中的一个原因,但是在很多例子中我们看到,你可以通过关注一些十分基础的应用内 ...

  3. Git 快速控制

    Git 快速控制 聊聊学习 Git 那些事 现在回想起来,其实接触 Git 的时候是在大一的时候表哥带入门的.当时因为需要做一个项目,所以他教如何使用 Git 将写好的代码推送到 GitHub 上,然 ...

  4. NVIDIA DRIVE AGX开发工具包

    NVIDIA DRIVE AGX开发工具包 英伟达drive AGX开发工具包提供了开发生产级自主车辆(AV)所需的硬件.软件和示例应用程序.NVIDIA DRIVE AGX系统建立在汽车产品级芯片上 ...

  5. 编译原理-确定有穷自动机(deterministic finite automata ,DFA)

    是一个五元组 M=(S,∑,f,S0,F) 其中 S:有穷状态集 ∑:输入字母表(有穷) f:状态转换函数.f(S,a)=S' 是单值部分映射,每个状态面临一个输入符号时,转入的后继状态是确定的. S ...

  6. 强化学习之CartPole

    0x00 任务   通过强化学习算法完成倒立摆任务,控制倒立摆在一定范围内摆动. 0x01 设置jupyter登录密码 jupyter notebook --generate-config jupyt ...

  7. UF_LAYOUT 布局相关

    Open C uc6460uc6462uc6463uc6464  根据视图名称旋转视图,在布局中替换视图uc6466uc6467uc6468uc6469uc6470uc6471uc6472uc6473

  8. huge page 能给MySQL 带来性能提升吗?

    最近一直在做性能压测相关的事情,有公众号的读者朋友咨询有赞的数据库服务器有没有开启huge page,我听说过huge page会对性能有所提升,本文就一探究竟.对过程没有兴趣的可以直接看结论. 二 ...

  9. Java代码优化:使用构造函数和使用一个个setter的效率差别

    在对Java代码进行优化的时候,想方设法的要提高整体的效率,使用JProfiler看代码的时间占比,然后,看看哪些部分是可以优化的,减少运行时间的.下面有这么几个方向. 1. 能使用构造函数一步到位的 ...

  10. 面试总被问到HTTP缓存机制及原理?看完你就彻底明白了

    前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能. 但是对于很多前端 ...