1 / 19
文档名称:

RIP路由算法实现样本.doc

格式:doc   大小:221KB   页数:19页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

RIP路由算法实现样本.doc

上传人:读书之乐 2020/10/30 文件大小:221 KB

下载得到文件列表

RIP路由算法实现样本.doc

相关文档

文档介绍

文档介绍:RIP路由算法实现【摘要】RIP协议作为一个最简单内部网关协议,已经很广泛应用在网络传输中。而且在未来IPV6也是占据很关键位置。RIP协议未来发展和改变及其和其它内部网关协议配合是很关键事。关键词RIP协议OSPF一、RIP协议介绍RIP(Routing informatiom Protocol)是应用较早、使用较普遍内部网关协议( Interior Gateway Protocol ,简称IGP),适适用于小型同类网络,是经典距离向量(distance-vector)协议。RIP协议是内部网关协议IGP中最广泛使用协议,它是一个分布式基于距离向量路由选择协议,它最大优点就是简单。在国家性网络中如目前因特网,拥有很多用于整个网络路由选择协议。作为形成网络每一个自治系统,全部有属于自己路由选择技术,不一样 AS 系统,路由选择技术也不一样。作为一个内部网关协议或 IGP(一般内部网关协议),路由选择协议应用于 AS 系统。连接 AS 系统有专门协议,其中最早这么协议是“EGP”(外部网关协议),现在仍然应用于因特网,这么协议通常被视为内部 AS 路由选择协议。RIP 关键设计来利用同类技术和大小适度网络一起工作。所以经过速度改变不大接线连接,RIP 比较适适用于简单校园网和区域网,但并不适适用于复杂网络情况。二、RIP工作步骤Rip工作步骤图以下:三、RIP距离向量算法分析矢量距离算法是路由器确定传输选路信息一个经典算法,其思绪是:路由器在其路由表中列出了全部已知路由,路由器开启时,对路由选择表进行初始化,每个和自己相连目标网络生成一个表项,并给出对应距离,距离通常见跳(Hop)数来表示。每个路由器周期性地向和其直接相连其它路由器发送自己路由选择表,如路由器A收到路由器B发来路由选择表后,A检验该路由选择表列出每个目标站点和到该目标站点距离,假如B知道去目标站点更短路由,或B列出了A不知道目标站点,或A现在到某个目标站点路由经过B,而B到该目标站点距离有所改变,A就修改自己路由选择表中对应项目。矢量距离内容用一个序偶(V,D)来表示,V为目标站点,D为到该目标站点距离。 矢量距离算法优点是易于实现,在组成路由表过程中不消耗CPU资源。但假如网络中路由改变快速时,算法就难以稳定。假如收到相邻路由器一个RIP报文: (1)先修改此RIP报文中全部项目:把“下一跳”字段中地址全部改成X,并把全部距离字段值加1。 (2)对修改后RIP报文中每一个项目反复以下步骤: 若项目中目标网络不在路由表中,则把该项目添加到路由表中。 不然     若下一条字段给出路由器地址是一样,则把收到项目替换源路由表中项目。不然 若收到项目镇南关距离小于路由表中距离,则进行更新。不然什么也不做。 (3)若3分钟还没有收到相邻路语气更新路由表,则把此相邻路由器记为不可达路由器,立即距离置位16(距离为16表示不可达)。 (4)返回。其实,这种算法关键点就是这么:设X是结点A到B最短路劲上一个结点。若将路径A到B拆成两段路径A到X和X到B,则将每一段路径A到X和X到B也全部分别是节点A到X和节点X到B最短路径。四、RIP算法处理步骤图三、测试结果和结果分析1、先构建一个简易网络,以下所表示:31–41--11–32c41–51--网3网4C21–31–51--网5D网2B网121–11--A2、在调试窗口输入以上路由信息,在输入距离大于16时候会提醒重新输入。以下所表示:3、输入完成后回车得到以下路由器路由表4、路由器更新后结果 四、程序源代码#include<>#include<>#include<>voidmain(){ structrouting { chardst[100]; inthopcount; charnext_station[3]; }; structroutinga[50]; structroutingb[50]; structroutingc[50]; inti,j,r,k,x,y; intp,q,n,s; charm[3],l[3]; charstr[50]="目标网络距离下一跳路由器"; printf("请输入路由器R1路由表:\n"); for(i=0;i<=49;i++) { printf("目标网络:"); scanf("%s",&a[i].dst); printf("距离:"); scanf("%d",&a[i].hopcount); printf("下一跳:"); scanf("%s",&a[i].next_station); if(a[i].hopcount>=17) { printf("路由不可抵达请重新输入距离:\n"); printf("请输入路由器R1路由表:\n");