1、 网络程序设计网络程序设计 课程设计报告课程设计报告 题 目 RIP 协议设计 专业及班级 网络工程 1101 班 学 号 姓 名 日 期 2012 年 7 月 3 日 一、一、 课程设计目的课程设计目的 了解 RIP 协议的原理和应用等相关知识,通过距离矢量算法来实现最短传输 路径的路由选择。通过本次课程设计,可以对 RIP 协议的工作原理和实现机制, 路由表的建立和路由信息的更新等有更直观和清晰的认识。 程序运行后能与路由器的 RIP 协议程序正确通信。 查阅相关 RFC。 提供配置命令,程序运行后能动态设置协议参数。 收到的数据先放入循环队列,再从队列中取出依次处理。 使用定时器处理超时
2、事件。 二、二、 设计与实现设计与实现 2.1 RIP2.1 RIP 协议的报文格式分析协议的报文格式分析 对于 RIP 报文有两种版本的格式,Version 1 和 Version 2。两种报文稍有 不同,如所示分别为 RIPv1 和 RIPV2: 命令 版本 全零 地址族 全零 IP 地址 全零 全零 度量值 前 20 个字节的重复 命令 版本 路由选择 地址族 路径标签 IP 地址 子网掩码 下一个站点的 IP 地址 度量值 前 20 个字节的重复 RIP 报文中至多可以出现 25 个 AFI、互联网络地址和度量域。这样允许使用 一个 RIP 报文来更新一个路由器中的多个路由表项。包含多
3、个路由表项的 RIP 报 文只是简单地重复从 AFI 到度量域的结构,其中包括所有的零域。 图表 2 显示了路由信息域中只带一个目的地的 RIP 报文。 1 字节 命令 1 字节 版本 2 字节 0 域 2 字节 AFI 2 字节 0 域 4 字节 网络地 址 4 字节 0 域 4 字节 0 域 4 字节 度量 图表 1 图表 3 具有两个表项的 RIP 报文 1 字节 命令 1 字节 版本 2 字节 0 域 两字节 AFI 2 字节 0 域 4 字节 网络地 址 4 字节 0 域 4 字节 0 域 4 字节 度量 4 字节 网络 地址 4 字节 0 域 4 字节 0 域 4 字节 度量 图表
4、 2 地址域可以既包括发送者的地址也包括发送者路由表中的一系列 IP 地址。请 求报文含有一个表项并包括请求者的地址。应答报文可以包括至多 2 5 个 RIP 路 由表项。 2.2 RIP2.2 RIP 的工作原理的工作原理 RIP 协议是矢量距离算法在局域网上的直接实现,RIP 将协议的参加者分为主 动机和被动机两种。主动机主动地向外广播路径刷新报文,被动机被动地接受路 径刷新报文。一般情况下,网关作主动机,主机作被动机。 RIP 规定,网关每 30 秒向外广播一个报文,报文信息来自本地路由表。RIP 的度量是基于跳数(hops count)的,每经过一台路由器,路径的跳数加一。如 此一来,
5、跳数越多,路径就越长,RIP 算法会优先选择跳数少的路径。RIP 支持的 最大跳数是 15,跳数为 16 的网络被认为不可达。 对于相同开销路径的处理是采用先入为主的原则。在具体的应用中,可能会 出现这种情况,去往相同网络有若干条相同距离的路径。在这种情况下,无论哪 个网关的路径广播报文先到,就采用谁的路径。直到该路径失败或被新的更短的 路径来代替。 RIP 中路由的更新是通过定时广播实现的。缺省情况下,路由器每隔 30 秒向 与它相连的网络广播自己的路由表,接到广播的路由器将收到的信息添加至自身 的路由表中。每个路由器都如此广播,最终网络上所有的路由器都会得知全部的 路由信息。正常情况下,每
6、 30 秒路由器就可以收到一次路由信息确认,如果经过 180 秒, 即 6 个更新周期, 一个路由项都没有得到确认, 路由器就认为它已失效了。 如果经过 240 秒,即 8 个更新周期,路由项仍没有得到确认,它就被从路由表中 删除。上面的 30 秒,180 秒和 240 秒的延时都是由计时器控制的,它们分别是更 新计时器 (Update Timer) 、 无效计时器 (Invalid Timer) 和刷新计时器 (Flush Timer)。 距离向量类的算法容易产生路由循环,RIP 是距离向量算法的一种,所以它也 不例外。如果网络上有路由循环,信息就会循环传递,永远不能到达目的地。如 果出现环路,直到路径长度达到 16,也就是说要经过 210 秒(30X7 秒)来回,路 径回路才能被解除,这就是所谓的慢收敛问题。是 RIP 的一个很大的缺陷,为了 避免这个问题,RIP 等距离矢量算法实现了