从报文中我们可以看出 , RIP-1不能运行于包含有子网的自治系统中 , 因为它没有包含运行所必须的子网信息-子网掩码 。RIP-2有子网掩码 , 因而它可以运行于包含有子网的自治系统中 , 这也是RIP-2对RIP-1有意义的改进 。
4.RIP协议的运行 网关刚启动时 , 运行V-D算法 , 对V-D路由表进行初始化 , 为每一个和它直接相连的实体建一个表目 , 并设置目的IP地址 , 距离为1(这里RIP和V-D略有不同) , 下一站的IP为0 , 还要为这个表目设置两个定时器(超时计时器和垃圾收集计时器) 。每隔30秒就向它相邻的实体广播路由表的内容 。相邻的实体收到广播时 , 在对广播的内容进行细节上的处理之前 , 对广播的数据报进行检查 。因为广播的内容可能引起路由表的更新 , 所以这种检查是细致的 。首先检查报文是否来自端口520的UDP数据报 , 假如不是 , 则丢弃 。否则看RIP报文的版本号:假如为0 , 这个报文就被忽略;假如为1 , 检查必须为0的字段 , 假如不为0 , 忽略该报文;假如大于1 , RIP-1对必须为0的字段就不检查 。然后对源IP地址进行检查 , 看它是否来自直接相连的邻居 , 假如不是来自直接邻居 , 则报文被忽略 。假如上面的检查都是有效的 , 则对广播的内容进行逐项的处理 。看它的度量值是否大于15 , 假如是则忽略该报文(实际上 , 假如来自相邻网关的广播 , 这是不可能的) 。然后检查地址族的内容 , 假如不为2 , 则忽略该报文 。然后更新自己的路由表 , 并为每个表目设置两个计时器 , 初始化其为0 。就这样所有的网关都每隔30秒向外广播自己的路由表 , 相邻的网关和主机收到广播后来更新自己的路由表 。直到每个实体的路由表都包含到所有实体的寻径信息 。假如某条路由忽然断了 , 或者是其度量大于15 , 与其直接相邻的网关采用分割范围或触发更新的方法向外广播该信息 , 其他的实体在两个计时器溢出的情况下将该路由从路由表中删除 。假如某个网关发现了一条更好的路径,它也向外广播,与该路由相关的每个实体都要更新自己的路由表的内容 。
为了更好地理解RIP协议的运行 , 下面以图2所示的简单的互连网为例来讨论图中各个路由器中的路由表是怎样建立起来的 。
在一开始 , 所有路由器中的路由表只有路由器所接入的网络(共有两个网络)的情况 。现在的路由表增加了一列 , 这就是从该路由表到目的网络上的路由器的“距离” 。在图中“下一站路由器”项目中有符号“-” , 表示直接交付 。这是因为路由器和同一网络上的主机可直接通信而不需要再经过别的路由器进行转发 。同理 , 到目的网络的距离也都是零 , 因为需要经过的路由器数为零 。图中粗的空心箭头表示路由表的更新 , 细的箭头表示更新路由表要用到相邻路由表传送过来的信息 。
接着 , 各路由器都向其相邻路由器广播RIP报文 , 这实际上就是广播路由表中的信息 。
假定路由器R2先收到了路由器R1和R3的路由信息 , 然后就更新自己的路由表 。更新后的路由表再发送给路由器R1和R3 。路由器R1和R3分别再进行更新 。
RIP协议存在的一个问题是:当网络出现故障时 , 要经过比较长的时间才能将此信息传送到所有的路由器 。以图2为例 , 设三个路由器都已经建立了各自的路由表 , 现在路由器R1和网1的连接线路与染短开 。路由器R1发现后 , 将到网1的距离改为16 , 并将此信息发给路由器R2 。由于路由器R3发给R2的信息是:“到网1经过R2距离为2” , 于是R2将此项目更新为“到网1经过R3距离为3” , 发给R3 。R3再发给R2信息:“到网1经过肉距离为4” 。这样一直到距离增大到16时 , R2和R3才知道网1是不可达的 。RIP协议的这一特点叫做:好消息传播得快 , 而坏消息传播得慢 。像这种网络出故障的传播时间往往需要较长的时间 , 这是RIP的一个主要缺点 。
推荐阅读
- 面向字符的同步控制协议
- NetBios协议详解及网上邻居工作原理
- LTO(线性磁带开放协议)
- BGP协议同步规则目的需求
- ADSL使用中常见协议
- PPTP 点对点隧道协议常见问题解答
- Internet协议
- POP3协议命令原始码及工作原理
- 下一代网络协议解析
- TCP 传输控制协议