欢迎来到天天文库
浏览记录
ID:11704045
大小:82.22 KB
页数:45页
时间:2018-07-13
《[计算机软件及应用]计算机网络实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机网络实验报告专业班级:学生姓名:学号:指导老师:完成时间:一.实验内容1.模拟距离向量路由算法的路由表交换过程,演示每轮交换后路由表的变化。2.实现链路状态路由算法中的最短路径算法二.实验目的和要求1.实验目的计算机网络通常使用动态的路由算法,其中距离矢量路由算法和链路状态路由算法最为常见。本章实验的目的是模拟距离矢量路由算法及链路状态路由算法,使读者熟悉路由算法的基本原理。2.实验要求要求在C/C++环境下,编程模拟距离矢量路由选择算法和链路状态路由选择算法中,具体要求如下:(1)距离矢量路由选择算法根据给出或自行设计的网络拓扑结构,初始化每个路由器的初始路
2、由表,模拟并演示距离矢量路由选择算法过程中每个路由器在接收相邻节点发送的信息之后更新路由表的过程。①根据给出的网络拓扑结构初始化每个路由器的路由选择表。②每个路由器将其路由选择信息的列表发送给邻居路由器。③路由器根据接收到的信息列表,修改自己的路由选择表。④重复(b)(c)过程直到网络中所有路由器的路由选择表均不再发生改变。在模拟上述过程中,要求显示每个路由器在执行步骤(c)之后路由选择表的内容。(2)链路状态路由选择算法根据给出的网络拓扑结构和链路状态,模拟链路状态路由算法中路由器进行工作的过程。①路由器发现其邻居节点,并测量到邻居节点的距离。②根据邻居节点信息构
3、造分组。③将分组发送给邻居路由器。对接收到的分组信息,将其发送给除发送节点外的其他邻节点,并向发送节点返回确认信息;若接收到的信息序号比现有序号小,则停止发送,向发送节点返回确认信息。④当路由器获得所有节点的分组信息后,利用Dijkstra算法计算到达每个节点的最短路径。三.、实验原理编程语言:JAVA编程工具:MyEclipse实验实现方式:单机模拟实现核心方法:dijkstra算法计算最短路径分析:布置好各个模拟路由,以及路由的路程权值如何获取。接着就是核心算法的实现,如何计算任意两个路由之间的最短路径问题。用到的是dijkstra算法。Dijkstra算法按照
4、从给定起点到图中顶点的距离,顺序求出最短的路径,首先,它求出从起点到最接近起点的顶点之间的最短路径,然后求出第二近的,一次类推,推而广之,再第i次迭代开始之前,算法已经确定了i-1条连接起点和离起点最近顶点之间的最短路径。这些顶点、起点和从起点到顶点的路径上的边,构成了给定图的一颗子树Ti,因为所有边的权值都是非负数,可以从与Ti的顶点相邻的顶点中找到下一个和起点最接近的顶点。和Ti的顶点相邻的顶点的集合称为“边缘顶点”,以他们为候选对象,Dijkstra算法可以从中选出一个最接近起点的顶点。为了确定第I个最接近的顶点,对于每一个边缘顶点u,该算法求出它到最近的树中
5、顶点v的距离以及从起点到v得最短路径长度dv的和,再从中选出具有最小和的顶点。此次实验主要是运用路由算法来处理路由当中的一些问题,利用Dijkstra算法处理最短路径的问题,在实验中这点已经得到了充分地体现。下面是该算法的流程图:对所有路由器采用Dijkstra算法求出其到其他路由器的最短路径。Dijkstra最短路径算法描述如下:Dijkstra(U,E,s)//Dijkstra算法。U:点集合,E:边集合,s:原点S<-s;//初始化S集合V=G–S;While(V!=null){Foreach(vinV){minDistance[s,v]=Infinity;p
6、reVertex[v]=null;Foreach(pinS){If(shortestDistance[s,p]+E[p,v]7、核心代码1.距离矢量路由选择算法//初始化所有路由器的路由表并显示初始状态privatevoid_buttonInit_Click(objectsender,EventArgse){//对网络中的每个路由器,根据给定数据执行初始化过程foreach(objectobjin_arrRouter)((Router)obj).InitRouter(_linkData);//显示初始化结果ShowRouter();}//初始化路由表publicvoidInitRouter(Dictionaryd){foreach(Pairpind
7、核心代码1.距离矢量路由选择算法//初始化所有路由器的路由表并显示初始状态privatevoid_buttonInit_Click(objectsender,EventArgse){//对网络中的每个路由器,根据给定数据执行初始化过程foreach(objectobjin_arrRouter)((Router)obj).InitRouter(_linkData);//显示初始化结果ShowRouter();}//初始化路由表publicvoidInitRouter(Dictionaryd){foreach(Pairpind
此文档下载收益归作者所有