计算机网络实验报告
实验内容: 实验时间:指导老师:王伟平老师姓 名:代班 级:信安学 号:
1、网络路由层协议模拟实验
2、Socket通信实验
2014年5月9日
巍 1201班 0909121615
实验一、距离向量路由算法的实现 一、实验内容
网络路由算法是路由器工作的核心,针对因特网常用的距离向量路由算法和链路状态路由算法进行模拟实现,进一步掌握其工作原理及其相关性能。
二、实验目的及要求
实验目的:
1.掌握VB、VC++、VS或JAVA等集成开发环境编写路由仿真程序的方法;
2.理解并掌握距离向量路由协议和链路状态路由协议的工作原理。
基本要求:
动态生成网络拓扑图,节点间的距离随机生成。每个节点生成自己的链路状态分组,依据收到的链路状态表得到整体网络结构,在得到的整体网络结构上用最短路径算法,生成每个节点的路由表。
编程语言和环境:
编程语言C/C++/C#/Java等均可;
编程环境Windows(MS Visual系列,VC/VB/VS.Net;)和Linux(编辑器vi+编译器GCC)均可;
三、实验原理
1.距离路由矢量算法工作原理:每个路由器维护一张路由表(即一个矢量),它以网络中的每个路由器为索引,表中列出了当前已知的路
由器到每个目标路由器的最佳距离,以及所使用的线路。通过在邻居之间相互交换信息,路由器不断地更新他们的内部路由表。 2.实验内容分析:实验中将两路由器间的延迟的代价用边的权值进行存储,将路由器用结点表示,则结点间每次和所有邻居交换信息,更新每个结点到其他结点的最短路径,并记录到达其他结点所经历的邻居结点作为出路。
四、实验结果
五、源代码
#include
#define N 5 //5个路由器 #define MAX_size 20
#define MAX 1000
int map[N][N]; int dist[N][N]; int path[N];
void init() //以邻接矩阵的形式存储 ,随机产生各路由表的拓扑结构 { int i, j;
srand((unsigned)time(NULL)); //随机生成的函数 for (i = 0; i < N; i++) for (j = i+1; j < N; j++) {
map[i][j] = rand() % MAX_size; map[j][i] = map[i][j]; }
printf(\随机拓扑结构为:\\n\
for (i = 0; i < N; i++)
{