距离向量算法更新路由表.doc
文本预览下载声明
计算机网络实习报告
论 文 题 目 距离向量算法更新路由表
学生专业班级 通信07级2班
学生姓名(学号)
指 导 教 师
完 成 时 间 2010年05月22日
实 习(设计)地点 信息楼139(112)机房
2010 年 05 月 22 日
距离向量算法更新路由表
一.实验目的
1..理解、掌握和利用距离向量算法.所实现的路由器模拟Internet上的IP路由器,它能确定网络的最短路由,并在其上传输分组距离向量路由算法被距离向量协议作为一个算法,它告诉在网络中每个节点的最远和最近距离。在距离表中的这个信息是根据临近接点信息的改变而时时更新的。表中数据的量和在网络中的所有的接点是等同的。每个数据包括传送数据包到每个在网上的目的地的路径和距离/或时间在那个路径上来传输。
这个表中的列代表直接和它相连的,行代表在网络中的所有目的地。在距离向量路由算法中,相邻路由器之间周期性地相互交换各自的路由表。当网络拓扑结构发生变化时,路由器之间也将及时地相互通知有关变更信息。
它是一种动态路由选择算法。每个路由器都定期与其相邻的所有路由器交换路由表,据此更新它们自己的路由表。所有路由器,更新其路由表:路由表的建立和更新
个路由器,A,B和C。路由器A的两个网络接口E0和S0
分别连接在 10.1.0.0和10.2.0.0网段上;路由器B的两个网络接口S0和S1
分别连接在 10.2.0.0和10.3.0.0网段上;路由器C的两个网络接口S0和E0
分别连接在 10.3.0.0和10.4.0.0网段上;
如上各路由表的前两行所示,通过路由表的网络接口到与之直接相连的网
络的网络连接,其向量距离设置为0。这即是最初的路由表。
当路由器B和A以及B和C之间相互交换路由信息后,它们会更新各自的路由表。
路由器B网络端口S1收到路由器C的路由信息(10.3.0.0,S0,0)和(10.4.0.0,E0,0)后,在自己的路由表中增加一条(10.4.0.0,S1,1)路由信息。该信息表示:通过路由器B的网络接口S1可以访问到10.4.0.0网段,其向量距离为1,该向量距离是在路由器C的基础上加1获得的。
同样道理,路由器B还会产生一条(10.1.0.0,S0,1)路由,这条路由是通过网络端口S0从路由器A获得的。如此反复,直到最终收敛,形成图中所示的路由表。
概括地说,距离向量算法要求每一个路由器把它的整个路由表发送给与它直接连接的其它路由器。路由表中的每一条记录都包括目标逻辑地址、相应的网络接口和该条路由的向量距离。当一个路由器从它的相邻处收到更新信息时,它会将更新信息与本身的路由表相比较。如果该路由器比较出一条新路由或是找到一条比当前路由更好的路由时,它会对路由表进行更新:将从该路由器到邻居之间的向量距离与更新信息中的向量距离相加作为新路由的向量距离。#include stdio.h
#include stdlib.h
#define ROUTNUM 7 /*定义七个路由器*/
typedef struct /*定义结构*/
{
int dis; /*定义一个整型变量*/
int from;
}RoutNode;
RoutNode data[ROUTNUM][ROUTNUM]; /*路由表*/
void InitData(FILE* pfile); /*从数据文件读取数据,初始化路由表*/
void OutputRoutData(); /*输出所有的路由表*/
void Communication(int recv, int send); /*send点向recv点发送自己的路由表*/
void Exchange(); /*所有节点进行一次数据交换,更新路由表*/
void main() /*main函数,程序入口*/
{
int start,end;
int i;
FILE *pf
显示全部