实验一:距离矢量路由算法
1实验目的
通过编程模拟距离矢量路由算法,了解距离矢量路由算法是如何工作的。
2实验内容
编程实现距离矢量路由算法的路由表交换过程,并显示出每轮交换过后路由表的各路由变化情况,得到各最佳路线。
3实验原理
网络层的主要功能是将分组从远端机器经选定的路由送到目的端机器。路由选择算法和它们使用的数据结构是网络层设计的一个主要区域。负责确定所收到分组应传送的外出路线。
距离矢量路由算法的工作原理:每个路由器维护一张表(即一个矢量),表中列出了当前已知的到每个目标的最佳距离,以及所使用的线路。通过在邻居之间相互交换信息,路由器不断地更新它们内部的表。
在距离矢量路由算法中,每个路由器维护了一张路由表,它以子网中的每个路由器为索引,并且每个路由器对应一个表项。
该表项包含两部分:为了到达该目标路由器而首先使用的输出线路,以及到达该目标路由器的时间估计值或距离估计值。
距离矢量路由算法在理论中可以工作,但在实践中有一个严重的缺陷:虽然它总是能够达到正确的答案,但是它收敛到正确答案的速度非常慢,尤其是,它对于好消息的反应非常快,但是对于坏消息的反应非常迟缓。
4实验步骤
4.1编写程序
程序的C语言源代码:
4.2设计思路
程序先定义了一个路由表——RoutNode data[ROUTNUM][ROUTNUM],路由表的初始信息存储在文件中,程序运行是先调用函数InitData(FILE* pfile)从文件中读取路由表的初始信息,然后输出初始路由表的信息,Communication(int recv, int send)函数主要是向邻近节点发送自己的路由表信息,Exchange()函数则根据新路由表信息更新自己的路由表。当所有的路由表节点都更新一遍后,整个路由表更新完毕。
5实验结果分析
5.1运行部分结果如下图所示:
A到D的路径
C到G的路径
5.2结果分析
路由表初始信息从txt文件读取,完成路由表初始化,然后根据距离向量路由算法完成路由表的更新操作,得到各路由情况,最后任意输入两个路由表接点,则可得出两接点之间的最短路径。
6实验心得体会
距离矢量路由算法作为常见的动态算法,通过该实验加深了对网络层距离矢量路由算法的理解,明白了路由表之间如何交换,同时也提高了动手操作能力。
1实验目的
模拟实现数据链路层后退n帧协议(协议五)。
2实验内容
要求理解链路层后退n帧协议原理,编程动态实现数据链路层后退n帧协议。
3实验原理
数据链路层除了下次该交给网络层的下一帧外,拒绝接收其它任何帧。
后退N协议一方面因连续发送数据帧而提高了效率,但另一方面,在重传时又必须把原来已正确传送过的数据帧进行重传(仅因这些数据帧之前有一个数据帧出了错),这种做法又使传送效率降低。由此可见,若传输信道的传输质量很差,因而误码率较大时,连续传送协议不一定优于停止-等待协议。此协议中的发送窗口的大小大于1,接收窗口大小为1。
4实验步骤
4.1编写程序
程序C语言源代码如下(Turbo c下实现):
4.2设计思路
本程序首先用Creat()函数创建了若干的数据帧,创建完毕后调用send(Fra *p)函数依次发送创建好的若干个数据帧,同时每发送一个帧就检查前面发送的帧是否有超时未被确认的,此功能由函数back_send(Fra **v)来完成。若发现有超时未发则返回超时帧的序列号seq,同时根据seq调用超时帧查找函数*search(Fra **v, int num)找到该帧位置,从该位置起全部从发后面的帧,即后退N帧协议。
5实验结果分析
5.1运行结果如下图所示
5.2结果分析
根据后退N帧协议,当第5号帧发生错误时,第5、6、7帧全部重传(时间间隔为2个周期)。
6实验心得体会
通过该实验对协议五如何运行有了了解,即数据链路层除了下次该交给网络层的下一帧外,拒绝接收其它任何帧。同时也对其他滑动窗口协议有了更深的掌握,实验达到预期目的。
文章评论