《计算机网络》课程实验

《计算机网络》课程实验

ID:18928273

大小:530.58 KB

页数:18页

时间:2018-09-22

《计算机网络》课程实验_第1页
《计算机网络》课程实验_第2页
《计算机网络》课程实验_第3页
《计算机网络》课程实验_第4页
《计算机网络》课程实验_第5页
资源描述:

《《计算机网络》课程实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、中南大学《计算机网络》课程实验实验报告实验一:路由算法1.实验目的计算机网络通常使用动态的路由算法,其中距离矢量路由算法和链路状态路由算法最为常见。本章实验的目的是模拟距离矢量路由算法及链路状态路由算法,使读者熟悉路由算法的基本原理。2.实验要求要求在C/C++环境下,编程模拟距离矢量路由选择算法和链路状态路由选择算法中,具体要求如下:(1)距离矢量路由选择算法根据给出或自行设计的网络拓扑结构,初始化每个路由器的初始路由表,模拟并演示距离矢量路由选择算法过程中每个路由器在接收相邻节点发送的信息之后更新路由表的过程。①根据给出的网络拓扑结构初始化每个路由器的

2、路由选择表。②每个路由器将其路由选择信息的列表发送给邻居路由器。③路由器根据接收到的信息列表,修改自己的路由选择表。④重复(b)(c)过程直到网络中所有路由器的路由选择表均不再发生改变。在模拟上述过程中,要求显示每个路由器在执行步骤(c)之后路由选择表的内容。(2)链路状态路由选择算法根据给出的网络拓扑结构和链路状态,模拟链路状态路由算法中路由器进行工作的过程。①路由器发现其邻居节点,并测量到邻居节点的距离。②根据邻居节点信息构造分组。③将分组发送给邻居路由器。对接收到的分组信息,将其发送给除发送节点外的其他邻节点,并向发送节点返回确认信息;若接收到的信息

3、序号比现有序号小,则停止发送,向发送节点返回确认信息。(直接从缓冲区获得转发数据)④当路由器获得所有节点的分组信息后,利用Dijkstra算法计算到达每个节点的最短路径。3实验分析1.距离矢量路由选择算法(无距离更新,代表到达稳定阶段,运行结束)当路由器a接收到邻居路由器b的路由选择信息表后,对信息表中的信息进行比较,若发现有新的路径比当前路由表中的路径长度小,或者发现当前路由表中的路径长度发生了变化,则将路由表中的信息进行更新。(丢弃以前的信息,只要考虑最新的距离)每一个路由表发生更新的路由器将新的路由选择信息发送给其邻节点,开始下一轮的更新过程,直到所

4、有路由器的路由表均不发生更新操作,运行结束。2.链路状态路由选择算法以网络中的一个路由器为例,其在链路状态路由选择算法的过程中的状态如下:发现其邻居节点(hello),并测量到邻居节点的距离(echo);测量信息构造分组;将分组发送给邻居路由器;不断对接收缓冲区进行检测:对接收到的分组信息,若接收到的分组信息序号比存储在路由器中的序号大,则更新路由器中的信息,并将其序号加1后发送给除发送节点外的其他邻节点,并向发送节点返回确认信息;若接收到的分组信息序号比现有序号小,则停止发送,向发送节点返回确认信息;若接收到的分组信息年龄变为0,则停止发送,丢弃该分组。

5、当路由器获得所有节点的分组信息后,便可以利用Dijkstra算法计算到达每个节点的最短路径。4核心代码1.距离矢量路由选择算法voidCLUYoDlg::OnOutPutPath(){CClientDCdc(this);CRectRectR;stacks;charch[1];inti=0;intsum=0;GetDlgItem(IDC_ROUTPATH)->GetWindowRect(&RectR);//获取控件相对于屏幕的位置ScreenToClient(RectR);//Invalidate(true);if(routeS!=routeD){

6、s.push(routeD);while(1){if(Location[routeS][routeD]==routeS){break;}elseif(Location[routeS][routeD]!=routeS){s.push(Location[routeS][routeD]);charchch[5];itoa(Location[routeS][routeD],chch,10);CStringcstr=chch;cstr+="压栈";MessageBox(cstr);//cout<

7、ocation[routeS][routeD];}}s.push(routeS);if(2==s.size()){inttop=s.top();s.pop();if(0==rout[top][s.top()]){dc.TextOut(RectR.left+i*20,RectR.top+20,"无连接");s.pop();}else{s.push(top);}}inttop;while(s.size()>1){itoa(s.top(),ch,10);top=s.top();s.pop();sum+=rout[top][s.top()];dc.TextOut(

8、RectR.left+i*20,RectR.top+20,ch);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。