RIP路由协议原型系统的实现(谢刚).doc_第1页
RIP路由协议原型系统的实现(谢刚).doc_第2页
RIP路由协议原型系统的实现(谢刚).doc_第3页
RIP路由协议原型系统的实现(谢刚).doc_第4页
RIP路由协议原型系统的实现(谢刚).doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课课程程设设计计报报告告 课程名称 课程名称 计算机网络 设计题目设计题目 RIP路由协议原型系统的实现 系系 别 别 计算机与信息工程学院 专专 业 业 物联网专业 组组 别 别 第五组 起止日期起止日期 2014 年 6 月 8 日 2014 年 6 月 14 日 指导教师指导教师 刘进军 计算机科学与技术系二计算机科学与技术系二 一四年制一四年制 滁州学院本科课程设计 2 20 课程设计任务书课程设计任务书 组长谢刚学号2012211588班级2012 级物联网 系别计算机与信息工程学院专业物联网专业 组员谢刚 指导教师老师 刘进军 课程设计目的 1 进一步理解动态内部网关协议 RIP 的工作原理 2 学会将所学知识联合运用 如本次 RIP 协议原型系统的设计即 是将网络与数据结构 图 及 C 编程语言相结合 3 提高团队合作能力 发挥每一名组员的长处 4 体会做一个项目的流程 包括前期的资料收集 系统要求分析 系统实现的语言选择及实现方法的讨论等 课程设计所需环境 1 Windows 操作系统平台 2 VC 6 0 编译环境 3 Cisco Packet Tracer 仿真软件 课程设计任务要求 1 实现一个 RIP 路由协议的原型系统 2 广播发布本地节点的路由信息 3 其它节点接收信息并选择最优路径 4 支持最大不超过 15 跳的特性 5 动态支持网络拓扑结构的变化 如增加路由节点 课程设计工作进度计划 序号起止日期工 作 内 容分工情况 12014 年 6 月 8 日 2014 年 6 月 9 日 展开思路讨论工作并搜集相 关资料 参考相关资料独立完成 22014 年 6 月 9 日 2014 年 6 月 10 日 分析课程设计要求 确定目 标 参考相关资料独立完成 32014 年 6 月 10 日 2014 年 6 月 11 日 设计软件功能模块参考相关资料独立完成 42014 年 6 月 11 日 2014 年 6 月 12 日 编写代码 实现功能模块参考相关资料独立完成 52014 年 6 月 12 日 2014 年 6 月 13 日 系统整合以及测试参考相关资料独立完成 62014 年 6 月 13 日 2014 年 6 月 14 日 完成课程设计文档参考相关资料独立完成 教研室审核意见 教研室主任签字 年 月 日 滁州学院本科课程设计 3 20 目目 录录 1 引言引言 4 2 系统开发分析系统开发分析 4 2 1 系统需求分析系统需求分析 4 2 2 系统设计原理系统设计原理 4 3 系统功能描述与软件模块划分系统功能描述与软件模块划分 5 4 系统设计详细系统设计详细 5 4 14 1 程序流程图程序流程图 6 6 4 2 程序源代码程序源代码 7 5 设计过程关键问题及其解决方法设计过程关键问题及其解决方法 10 5 1 如何实现广播本地路由及更新动态更新路由表如何实现广播本地路由及更新动态更新路由表 10 5 2 如何在网络拓扑结构改变后实现动态更新维护路由表如何在网络拓扑结构改变后实现动态更新维护路由表 11 6 程序设计结果界面演示程序设计结果界面演示 11 6 1 设计结果演示设计结果演示 11 7 课程设计总结与体会课程设计总结与体会 15 7 1 总结总结 15 7 2 体会体会 17 致谢致谢 17 参考文献参考文献 18 滁州学院本科课程设计 4 20 1 引言引言 RIP Routing information Protocol 路由信息协议 是应用较早 使用较普遍的内部网 关协议 Interior Gateway Protocol IGP 适用于小型同类网络的一个自治系统 AS 内 的路由信息的传递 RIP 协议是基于距离矢量算法 DistanceVectorAlgorithms 的 在默 认情况下 RIP 使用一种非常简单的度量制度 距离就是通往目的站点所需经过的链路数 取值为 1 15 数值 16 表示无穷大 它使用 跳数 即 metric 来衡量到达目标地址的路由 距离 这种协议的路由器只关心自己周围的世界 只与自己相邻的路由器交换信息 范围 限制在 15 跳 15 度 之内 再远 它就不关心了 RIP 进程使用 UDP 的 520 端口来发送和 接收 RIP 分组 RIP 分组每隔 30s 以广播的形式发送一次 为了防止出现 广播风暴 其 后续的的分组将做随机延时后发送 在 RIP 中 如果一个路由在 180s 内未被刷 则相应的 距离就被设定成无穷大 并从路由表中删除该表项 RIP 应用于 OSI 网络七层模型的网络 层 RIP 是一个用于路由器和主机间交换路由信息的距离向量协议 目前最新的版本为 v4 也就是 RIPv4 2 系统开发分析系统开发分析 2 1 系统需求分析 1 实现一个 RIP 路由协议的原型系统 2 广播发布本地节点的路由信息 3 其它节点接收信息并选择最优路径 4 支持最大不超过 15 跳的特性 5 动态支持网络拓扑结构的变化 如增加路由节点 2 2 系统设计原理 RIP 协议是动态路由协议 其运行至路由器中 而路由器是运行路由协议软件的专用 硬件 它的主要功能可以分成两部分 路由选择和分组转发 其中路由选择是基础 一个 路由器对到来的每一个分组先选择合适的路由 然后才能依据此路由进行正确的转发 本 滁州学院本科课程设计 5 20 次课程设计就是设计有着广泛的使用范围的动态路由协议 RIP 协议体统原型 它是距离向 量协议中的一种 属于内部网关协议 运行协议的相邻路由器通过彼此之间交换路由信息 RIP 的距离向量 从而知道网络的连接情况 实现各个网络之间的连通 这也是距离向量 名称的由来 Distance Vector 运行协议的每个路由器都要维护一张自己的路由 RIP 表 该路由表是相应于与它直接相联和通过路由器相连的网络连接情况而动态变化的 因此协 议属于动态路由协 RIP 议 路由器根据路由表对发给它的包进行转发 从而实现 IP 路由 功能 3 系统功能描述与系统模块划分 系统功能描述与系统模块划分 本设计实现的 RIP 路由协议的原型系统功能主要包括 一 初始化每个路由器的路由 表信息 即在使用者输入网络拓扑结构中的路由节点数及链路数后 系统首先会自动生成 每个节点到其相邻路由节点的路由信息 具体包括 目的地址 跳数 下一跳 初始设置 相邻节点的跳数为 1 二 当路由器的初始路由表建立后 接下来就开始进行邻接节点的 路由信息广播 即路由节点将自身的路由表信息广播至其相邻的节点 具体的广播信息是 将每一条路由的目的地址不变 跳数加一 吓一跳修改为自身路由器接口的名称进行传送 收到广播信息的路由表对收到的每一条路由信息进行判断 分两大情况 若原来的路由表 中没有目的网络 N 则将该项添加到路由表中 否则 即在该路由表中有到目的网络 N 的 信息 则观察下一条 此时分两种小情况 1 若吓一跳与原路由表项相同 则无条件进行 更新 2 若吓一跳与原路由表项不相同 则若收到的路由信息中距离 d 小于路由表中的距 离 则进行更新 还有对于接受的路由信息跳数 16 的信息 则将跳数置为 16 表明不 可达 三 动态改变网络拓扑结构 即当因为实际需要 需增设路由节点时 系统会根据 增设的路由节点数 名称 链路数 首先进行新增设节点的路由表信息初始化 而后将该 节点的路由信息想邻接节点进行广播 随后整个网络节点向邻接节点进行路由信息广播 这样经过几轮广播后 每一个节点都接收到了新增路由节点的最小路径信息 从而实现了 路由表的动态维护与创建 4 系统设计详细系统设计详细 4 1 程序流程图 滁州学院本科课程设计 6 20 滁州学院本科课程设计 7 20 开始 输入要建立网络的拓扑结构 所需路由节点数及链路数 各路由节点向邻 接节点广播路由 信息 各节点接收信 息便进行路由 表的更新 建立各节点的初始路由表 广播信息内容 目的地址 不变 跳数 加 1 吓一跳 修改为 广播该路由信息 的路由节点名称 若原来的路由表中无到此网络的信息 则添 加 否则 1 若吓一跳与原路由表项相同 则无条件进行更新 2 若吓一跳与原路由 表项不相同 则判断距离 d 若小于路由表中 的距离 则更新 还有对于接受的路由信 息跳数 16 的信息 则将跳数置为 16 节点路由信息更新 完毕 询问是否还 需添加新的路由节 点 否 结束 是 初始化新增路 由节点路由表 滁州学院本科课程设计 8 20 4 2 程序源码 因为系统的设计涉及到网络拓扑图的存储 所以本设计采用数据结构中图的存储思想 来进行拓扑结构的存储 输出 下面是系统设计的主要代码 首先分别设置了 4 种类型的结构体 以来表示链路信息 路由表 路由器 网络拓扑 图 include include define MAX VERTEX NUM 15 define MAX 15 include typedef struct ArcCell 存储链路信息 int adj ArcCell Am MAX VERTEX NUM MAX VERTEX NUM typedef struct 路由表 char destination MAX int distance char nextjump MAX TNode typedef struct 路由结点 char r MAX 存储路由器名称 TNode t MAX 存储路由结点的路由表信息 VNode typedef struct VNode vex MAX Am arcs int vexnum arcnum Graph 用图来存储网络拓扑结构 另外在此设置一个全局变量 用来辨别路由表中信息的结束 TNode end 0 copy char str1 char str2 int i char temp str2 for i 0 temp 0 i str1 i str2 i temp str1 i 0 第一步 待设计好需要的结构模型后 接下来开始根据路由节点的个数及链路数进 滁州学院本科课程设计 9 20 行网络拓扑结构的构造 详细代码如下 Graph Create Graph G int i j k count char v1 20 v2 20 printf 分别输入网络拓扑结构中的路由数和链路数 中间用逗号隔开 n scanf d d printf 分别输入路由器名称及路由表 n int LocateVex Graph G char s void initRoute Graph G int i int j for i 0 i G vexnum i 构造路由结点 count 0 printf 输入第 d 个路由器名称 n i 1 scanf s G vex i r G vex i t 0 end for i 0 i G vexnum i 初始化邻接矩阵 for j 0 j G vexnum j G arcs i j adj 10000 for k 0 k G arcnum k 构造邻接矩阵 printf 输入第 d 条链路的两端路由器的名称 n k 1 scanf s s v1 v2 用 scanf 输入多个字符串 中间用空格隔开 i LocateVex j LocateVex G arcs i j adj 1 G arcs j i adj 1 初始化该链路两端路由节点的路由表 initRoute return G int compare char a char b void printG Graph G void insertNewRoute Graph G 其中的 LocateVex 函数用来确定 s 在图中的位置 具体实现如下 int LocateVex Graph G char s int i for i 0 i G vexnum i 滁州学院本科课程设计 10 20 if compare s G vex i r 1 return i return 1 第二步 构造完网路拓扑图后 接下来进行拓扑结构中路由节点的路由表信息的初 始化 void initRoute Graph G int i int j int m n for m 0 G vex i t m distance 0 m copy G vex i t m destination G vex j r G vex i t m distance 1 copy G vex i t m nextjump G vex i r G vex i t m 1 end for n 0 G vex j t n distance 0 n copy G vex j t n destination G vex i r G vex j t n distance 1 copy G vex j t n nextjump G vex j r G vex j t n 1 end 第三步 开始进行邻接节点的路由信息广播 void Exchange Graph G int i j k h count char c TNode temp for i 0 i G vexnum i for j 0 j16 temp distance 16 copy temp nextjump G vex i r count 0 for h 0 G vex j t h distance 0 h 滁州学院本科课程设计 11 20 if compare temp destination G vex j r 1 表 明该条路由信息的目的地址指向的是路由结点 j 本身 因而不需要更新及修改 count break if compare G vex j t h destination temp destination 1 count if compare G vex j t h nextjump temp nextjump 1 G vex j t h distance temp distance else if G vex j t h distance temp distance G vex j t h distance temp distance copy G vex j t h nextjump temp nextjump if count 0 copy G vex j t h destination temp destination G vex j t h distance temp distance copy G vex j t h nextjump temp nextjump G vex j t h 1 end printf 路由器 s 向路由器 s 发送消息 n G vex i r G vex j r printG G printf 若需在原有网络拓扑结构中增加新的节点 请输入 键 n getchar scanf c if c insertNewRoute G 滁州学院本科课程设计 12 20 第四步 增加路由表 实现网络拓扑结构的动态变化及路由表信息的动态更新与维 护 void insertNewRoute Graph G int i j nVexNum nArcNum k num char v1 20 v2 20 printf 分别输入新增加的路由数和链路数 中间用逗号隔开 n scanf d d printf 分别输入路由器名称及路由表 n for num 0 num nVexNum num printf 输入新增第 d 个路由器名称 n num 1 scanf s G vex num G vexnum r G vex num G vexnum t 0 end G vexnum nVexNum G arcnum nArcNum for k 0 k nArcNum k 构造邻接矩阵 printf 输入新增路由节点后第 d 条链路的两端路由器的名称 n k 1 scanf s s v1 v2 用 scanf 输入多个字符串 中间用空格隔开 i LocateVex G v1 j LocateVex G v2 G arcs i j adj 1 G arcs j i adj 1 initRoute G i j for i 0 i G vexnum i 初始化邻接矩阵 for j 0 j G vexnum j if G arcs i j adj 1 G arcs i j adj 10000 Exchange G 下面是系统设计过程中所需的辅助自定义函数 int compare char a char b int j for j 0 a j 0 j if a j b j return 0 滁州学院本科课程设计 13 20 return 1 显示网络拓扑结构 void printG Graph G int i j for i 0 i G vexnum i printf t 路 t 由 t 器 s n G vex i r printf 目的地址 t t 距离 t t 下一跳 n n for j 0 G vex i t j distance 0 j printf s t t t d t t s n n G vex i t j destination G vex i t j d istance G vex i t j nextjump printf n n 显示指定路由节点 v 的路由表 void printv VNode v int i printf t 路 t 由 t 器 s n v r printf 目的地址 t t 距离 t t 下一跳 n n for i 0 v t i distance 0 i printf s t t t d t t s n n v t i destination v t i distance v t i nex tjump printf n n 通过主函数进行函数的调用运行 void main Graph G Create printG Exchange 滁州学院本科课程设计 14 20 5 设计过程关键问题及其解决办法设计过程关键问题及其解决办法 5 15 1 如何如何实现广播本地路由及更新动态更新路由表 实现广播本地路由及更新动态更新路由表 路由器最初启动时只包含了其直连网络的路由信息 并且其直连网络的 metric 值为 1 然后它向周围的其他路由器发出完整路由表的 RIP 请求 路由器根据接收到的 RIP 应答 来更新其路由表 具体方法是添加新的路由表项 并将其 metric 值加 1 如果接收到与已 有表项的目的地址相同的路由信息 则分下面四种情况分别对待 第一种情况 已有表项 的来源端口与新表项的来源端口相同 那么无条件根据最新的路由信息更新其路由表 第 二种情况 已有表项与新表项来源于不同的端口 那么比较它们的 metric 值 将 metric 值较小的一个最为自己的路由表项 第三种情况 新旧表项的 metric 值相等 普遍的处理 方法是保留旧的表项 第四种情况 新表项在该路由表中不存在 则将跳数加一 吓一跳 改为原发送路由器后添加到表项后 5 25 2 如何在网络拓扑结构改变后实现动态更新维护路由表 如何在网络拓扑结构改变后实现动态更新维护路由表 首先要实现新添加路由表的路由信息初始化 而后再更新与之相邻的路由节点的路由 信息 接下来就进行路由信息的邻接节点广播 从而达到全网络的路由信息更新 6 程序设计结果界面演示程序设计结果界面演示 6 16 1 设计结果演示设计结果演示 程序运行过程演示以及结果如下 1 分别从键盘输入网络拓扑结构中的路由数和链路数 中间用逗号隔开 例如输入 3 2 表示共有两个路由器和一条链路 如图 1 1 所示拓扑结构 图 1 1 2 再分别输入各个路由器名称及其链路 中间用空格隔开 例如分别依次输入第一个路由器名称 v1 第二个路由器名称 v2 及两个路由器间的链路 v1 v2 程序输入数据界面与按下 ENTER 键后各路由表的初始路由信息如图 1 2 滁州学院本科课程设计 15 20 4 接下来改变原始网络拓扑结构 增加新的路由节点 如图 1 3 中拓扑结构所示 图 1 3 运行命令后输入如下 输入新增第 1 个路由器名称 v4 输入新增路由节点后第 1 条链路的两端路由器的名称 v2 v4 增加路由结点输入界面如图 1 4 所示 滁州学院本科课程设计 16 20 图 1 4 按下 ENTER 键程序进行 v4 路由器的路由表信息初始化及路由信息广播 V4 路由表初始信息动态生成如图 1 7 图 1 5 V2 向 v4 广播信息如图 1 6 所示 图 1 6 几轮广播信息结束后 各路由节点路由信息如下图 1 7 与 1 8 所示 滁州学院本科课程设计 17 20 图 1 8 图 1 9 5 若还需要在原有的网络拓扑结构中继续增加新的节点 再输入 键 按以上步骤继续操作 能实现不断增加路由结点以及链路 并将路由表的持续更新 滁州学院本科课程设计 18 20 7 课程设计总结与体会 课程设计总结与体会 7 17 1 总结总结 本次课程设计是我懂得了 RIP 适

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论