首页 > 代码库 > RIP协议总结
RIP协议总结
说明:本文仅供学习交流,转载请标明出处,欢迎转载!
本文是如下参考文献相关内容的总结:
[1] 《TCP/IP详解 卷1:协议》
[2] 《TCP/IP协议族》
[3] 《计算机网络 第5版》
RIP全称Routing Information Protocal(路由信息协议),它是一种基于距离向量的路由选择协议(而OSPF是基于链路状态的路由选择协议),目前被广泛应用于小型网络中。既然RIP是基于距离向量的路由选择协议,所以我们好奇的是究竟什么是距离向量算法?不过在总结距离向量算法之前,我们先介绍点预备知识。
预备知识:
1.RIP中的距离以“跳"为单位,表示经过的路由器的个数。RIP规定,一个路由器到其直接向量的网络的距离为1,距离为16表示目的不可达,16被定义为无穷大,也就是说RIP规定,一跳路径最多包含15个路由器。
2.RIP中每个路由表的表项包含三个内容:目的网络,跳数(度量单位),下一跳路由器。
3.RIP协议仅和相邻路由器按照固定的时间间隔交换路由信息。
距离向量算法:
假设路由器R0向路由器R1发送了一个RIP报文(显然R0与R1是相邻的路由器,根据预备知识1),则路由器R1收到R0发来的RIP报文后会根据自己的路由表和收到的路由信息中的每一条路由,来生成新的路由表。对于收到的路由信息中的每一条路由,都做如下处理:(R1收到R0发来的路由信息)
加入该路由项对应的信息为:(N1,K,Rx)
A.目的地址N1在R1中不存在,(N1,K+1,R0)新增加到R1的路由表中。
B.目的地址N1在R1中存在,且该表项下一跳的地址为R0,此时不管三七二十一,将(N1,K+1,R0)覆盖掉R0中的该表项。
C.目的地址N1在R1存在,但是该表项的下一跳地址不是R0,假设为(N1,M,Rt),此时比较K+1与M的大小。若K+1较小,则将(N1,K+1,R0)覆盖掉该表项,否则忽略该路由信息。
D.若在180s的时间内未收到任何某相邻路由更新信息,则将该将此相邻路由器的距离置为16,表示不可达。
RIP协议报文
通过上图我们可以从宏观上观察RIP数据报,可以得出:RIP报文被封装在UDP数据报中。下面我们从微观上来分析RIP报文。
RIP的报文格式如上图所示。下面分析各个字段的含义:
命令:8位,1表示请求,2表示应答,3和4舍弃不用,5和6表示非正式的轮询命令;
版本:8位,包括RIP和RIP2,1表示RIP,2表示RIP2;
地址系列:16位,对于TCP/IP这个值固定为2;
IP地址,距离:这两个前面已经提过,很熟悉了应该。
Notice:一个RIP报文中,最多可包含25个路由,这是为了保证RIP报文的总长度小于512B。可以计算下,一个RIP报文最多占用4B+25*20B=504B。所以每个RIP报文最多只能携带25个路由(路由只的是路由项,不是路由器),所以,为了发送整个路由表,通常需要发送多个RIP报文。
每过30s所有或部分路由器会将其完整路由表发送给相邻路由器 ;每当一条路由的距离发生变化时,就对它进行更新,不需要发送完整路由表,而只需要发送哪些变化的表项。
RIP协议是基于路由向量选择的非常简单的协议,从上面的RIP报文中,我们可以很明显地看出,RIP没有子网地址的概念,若某个IP地址的主机号不为0,RIP无法区分非0部分是否包含子网号,RIP2则克服了这一缺陷。
RIP2协议报文
RIP2对RIP的改进在于,充分利用了很多全0的字段。
选路域:指明了该数据报的所有者,该域是一个选路守护程序的标识符PID;
选路标记:为了支持EGP,携带着一个EGP和BGP的自治系统号;
子网掩码:使得RIP2支持无分类编制和CIDR。
下一站IP地址:表示下一跳地址。若两个自治系统共享一个网络(如主干网),则这个字段特别有用。这个报文可以定义分组发往的路由器,不管这个路由器是在同样的自治系统或在另一个自治系统。该字段为0时,表示发往目的地址的报文应该发给发送RIP报文的系统。
RIP-2支持广播和多播。
点点滴滴:
1.RIP是基于距离向量的协议。
2.RIP中仅将路由信息发送给相邻的路由器。
3.当网络出现故障时,RIP通常表现为慢收敛,即“慢消息传得快,坏消息传的慢”!“收敛”指的是在自治系统中所有结点都得到路由信息的过程,即很长时间才能稳定下来。
4.RIP2是对RIP的改进,使其支持无分类编址CIDR、广播、多播。