本文主要是介绍4.9 IP协议及距离向量算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
4.9 IP协议及距离向量算法
如何让一个系统的各路由器知道目标最短路径——RIP协议
RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。
- 特点:要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)。
- 距离:通常为“跳数”,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1。(特别的,从一路由器到直接连接的网络距离为1 )
- RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达。
===> RIP协议只适用于小互联网。
RIP协议和谁交换?交换什么?多久交换一次?大致过程是?
1.仅和相邻路由器交换信息。
⒉路由器交换的信息是自己的路由表。
3.每30秒交换一次路由信息,然后路由器根据新信息更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没了(只好R.I.P了),并更新自己路由表。
4.路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”。
路由表怎么更新的?——距离向量算法
- 1.修改相邻路由器发来的RIP报文中所有表项,对地址为X的相邻路由器发来的RIP报文,修改此报文中的所有项目:把“下一跳”字段中的地址改为X,并把所有的“距离”字段+1。
- 2.对修改后的RIP报文中的每一个项目,进行以下步骤:
- (1)R1路由表中若没有Net3,则把该项目填入R1路由表
- (2)R1路由表中若有Net3,则查看下一跳路由器地址: 若下一跳是X,则用收到的项目替换源路由表中的项目; 若下一跳不是X, 原来距离比从X走的距离远则更新,否则不作处理。
- 3.若180s还没收到相邻路由器X的更新路由表,则把X记为不可达的路由器,即把距离设置为16。
- 4.返回
距离向量算法练习1
已知路由器R6的路由表,现收到相邻路由器R4发来的路由更新信息,试更新路由器R6的路由表:
- 在R4发来的路由更新信息中修改:各项距离+1,下一跳路由器全部设置为自己,也就是R4
- 对R6进行更新:原来没有Net1,这里直接从修改后的R4中抄过来,之前有Net2、Net3,也是直接抄过来。
距离向量算法练习2
考虑如图所示的子网,该子网使用了距离-向量算法,下面的向量刚刚到达路由器C:
来自B的向量为(5,0, 8,12,6,2);
来自D的向量为(16,12,6,0,9,10);
来自E的向量为(7,6,3,9,0,4);
经过测量,C到B、D和E的延迟分别为6,3和5,那么C到达所有结点的最短路径是?
—— (11,6,0,3,5,8)
解:
各个向量对应元素的意思是(A,B,C,D,E,F),路由节点X到其他节点X'所需要的延迟。
(注:这里是C经B、C经D、C经E,再到目标节点的延迟)
如图写出过后,从这些向量中的所有元素中选出各对应点里面的延迟最小值的,组成一个新向量,即(11,6,0,3,5,8)
RIP协议的报文格式
- RIP是应用层协议,使用UDP传送数据。
- 一个RIP报文最多可包括25个路由,如 超过,必须再用一 个RIP报文传送。
RIP协议特点——好消息传得快,坏消息传得慢
RIP的特点:当网络出现故障时,要经过比较长的时间 (例如数分钟) 才能将此信息传送到所有的路由器,“慢收敛”
当网络1故障时,
- R说:“我到网1的距离是16(表示无法到达),是直接交付。”
- 但R2在收到R1的更新报文之前,还发送原来的报文,因为这时R2并不知道R1出了故障。
- R1收到R2的更新报文后,误认为可经过R2到达网1,于是更新自己的路由表,说:“我到网1的距离是3,下一跳经过R2”。然后将此更新信息发送给R2。
- R2又更新自己的路由表为“1,4,R1",表明“我到网1距离是4,下一跳经过R1”。
- 如此不断更新,知道都为16,R1、R2才明白网1不可达。一个网络中那么多路由,总耗时自然更长了。
这篇关于4.9 IP协议及距离向量算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!