- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机网络
实 验 报 告
学生姓名
学 号 专业班级 计科12
指导教师
学 院 信息科学与工程学院
完成时间 2014年5月
实验一 网络路由层协议模拟实验
【实验目的和要求】
掌握VB、VC++、VS或JAVA等集成开发环境编写路由仿真程序的方法;
理解并掌握距离向量路由协议和链路状态路由协议的工作原理。
【实验内容】
模拟距离向量路由算法的路由表交换过程,演示每轮交换后路由表的变化。
基本要求(动态生成网络拓扑图,节点间的距离随机生成。从初始路由表开始,进行交换路由表,演示每轮交换后的路由表的变化。观察和讨论多少轮交换后路由表稳定)
【实验原理】
距离矢量路由算法”的基本思想如下:每个路由器维护一个距离矢量(通常是以延时是作变量的)表,然后通过相邻路由器之间的距离矢量通告进行距离矢量表的更新。每个距离矢量表项包括两部分:到达目的结点的最佳输出线路,和到达目的结点所需时间或距离,通信子网中的其它每个路由器在表中占据一个表项,并作为该表项的索引。每隔一段时间,路由器会向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表。这样以此类推,经过一段时间后便可将网络中各路由器所获得的距离矢量信息在各路由器上统一起来,这样各路由器只需要查看这个距离矢量表就可以为不同来源分组找到一条最佳的路由。
【编程语言和环境】
Windows操作系统,编程语言C++
编程环境VC
【实验具体设计实现及结果(含流程图及关键代码说明)】
采用网络拓扑结构
C
C
D
A
G
E
F
B
9
3
5
2
4
5
8
1
源代码:
#include stdio.h
#include stdlib.h
#include conio.h //atoi的头文件
#define ROUTNUM 7 //定义路由的个数为7个
typedef struct
{
int dis; //存延迟大小
int from; //存下一跳的路由
}RoutNode;
RoutNode data[ROUTNUM][ROUTNUM]; /*路由表,能存7行7列数据,数据为权值*/
void InitData(FILE* pfile); /*从数据文件读取数据,初始化路由表*/
void OutputRoutData(); /*输出所有的路由表*/
void Communication(int recv, int send);/*send点向recv点发送自己的路由表*/
void Exchange(); /*所有节点进行一次数据交换, 更新路由表*/
void main()
{
int start, end, i, j;
FILE *pfile;
pfile = fopen(1.txt, r);
if (pfile == NULL)
{
printf(文件打开错误,按任意键退出.\n);
getch();
return;
}
else
printf(\n路由表初始:\n);
InitData(pfile);
fclose(pfile);
for (i = 0; iROUTNUM; i++)
{
printf(%c||, i + 65);
for (j = 0; j ROUTNUM; j++)
if (data[i][j].dis 0)
printf(%c %d , j + 65, data[i][j].dis);
printf(\n);
} //显示各路由的路由表
for (i = 0; i ROUTNUM; i++) //循环7次(好像多余,改成一次得到同样结果)
{
Exchange();
}
printf(\n路由表交换:\n);
OutputRoutData();
printf(输入起始路由节点数字(%d-%d)[0代表A,1代表B...] : , 0, ROUTNUM - 1);
scanf(%d, start);
printf(输入终点路由节点数字(%d-%d)[0代表A,1代表B...] : , 0, ROUTNUM -
原创力文档


文档评论(0)