计算机网络课程设计Word格式文档下载.docx
- 文档编号:20334146
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:10
- 大小:104.65KB
计算机网络课程设计Word格式文档下载.docx
《计算机网络课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
参考文献11
1课题描述
1.1课题背景
随着网络技术的迅速发展,各种行业纷纷应用网络技术操作和管理。
网络在人们生活中起到越来越重要的作用,网络技术的发展也会极大的推动人类社会的发展,网络已展的今天,路由于我们的生活、生产息息相关。
在因特网快速发展的背景下,网络上的信息也越来越庞杂,网络本身也越来越庞大,所以各种网络协议也应该设计的合理高效。
在计算机网络迅速发器的应用将越来越多,为了能够对内部网关协议(RIP)有更深入的了解,我设计并编写模拟了路由器更新路由表功能的计算机程序。
本程序实现了模拟路由器更新路由表的全过程。
1.2目的
本课题运用C语言进行开发,C语言能够简单的进行编译一些程序,来实现对一些问题的解决。
它虽然比较简单的处理一些问题,但却有更高的效率。
它能够被大多数用户所接受,因为它能够呈现出清晰的界面,是人们能够很好的理解。
能在一些方面给人们更好的服务,成为人们的好帮手。
经过这一个学期对《计算机网络》的学习,我们都学到了不少东西,可能有些学的还不够理想,但无论如何这些知识都为我们的下一步学习打下了坚实的基础。
做这么一个课程设计,一方面是为了检查我们一个学期以来的学习成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。
2设计原理
2.1RIP原理
RIP(RoutingInformationProtocol)路由信息协议,是内部网关协议中应用最广泛的一种协议,它是一种分布式的,基于距离向量的路由选择协议,其特点是协议简单。
适用于相对较小的自治系统,它们的直径“跳数”一般小于15。
RIP协议特点是:
(1)仅和相邻路由交换信息
(2)路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
也就是说,交换的信息是:
“我到本自治系统中所有网络的(最短)距离,以及到那个网络应经过的下一跳路由器。
(3)按固定时间间隔交换路由信息,例如,每隔30秒。
然后路由器根据收到的路由信息更新路由表。
2.2距离向量算法原理
(1)对地址为X的相邻路由器发来的RIP报文,先修改报文中的所有项目:
把“下一跳”字段中的地址都改为X,并把所有的距离都加1。
(2)对于修改后的RIP报文,进行以下修改:
若原来的路由表没有修改后的路由表中的网络N则把N添加到路由表中;
若下一条路由器地址是X,则把收到的项目替换原来路由表中的项目;
若收到的项目中的距离d小于路由表中的距离,则进行更新。
(3)若3分钟还没有收到相邻的路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离置为16。
3设计过程
3.1查阅相关资料
查阅计算机网络(第5版),C程序设计。
3.2程序整体设计
根据程序的设计要求,程序整体设计如下;
(1)路由表信息的结构体定义structrouting_information实现路由表信息的存储。
结构体内包含目的网络,下一跳,距离的信息。
(2)save()子函数实现数据信息存储为本机文件。
(3)load()子函数实现从文件中读取路由表信息。
(4)charEquals()子函数实现判断字符串死否相等。
(5)update()子函数实现距离向量算法更新路由信息。
(6)main()函数实现界面的显示与数据的输入输出。
3.3整体程序如下
#include<
stdio.h>
string.h>
#defineSIZE20
//定义路由表信息的结构体
structrouting_information
{
charrouting_name[5];
charnet_name[10];
intdistance;
charnext_routing[10];
intlength;
}stud[SIZE],newStud[SIZE];
//将路由表信息存储为文件的函数
voidsave()
FILE*fp;
inti;
if((fp=fopen("
e:
\\routing"
"
wb"
))==NULL)
{
printf("
cannotopenfile\n"
);
return;
}
for(i=0;
i<
3;
i++)
if(fwrite(&
stud[i],sizeof(structrouting_information),1,fp)!
=1)
printf("
filewriteerror\n"
fclose(fp);
}
//从文件中读出路由表信息的函数
voidload()
rb"
cannotopenthefile"
fread(&
stud[0],sizeof(structrouting_information),1,fp);
printf("
%s%d%s\n"
stud[0].net_name,stud[0].distance,stud[0].next_routing);
for(i=1;
stud[0].length;
fread(&
stud[i],sizeof(structrouting_information),1,fp);
if(i==0)
printf("
路由器%s的路由表信息如下:
\n"
stud[0].routing_name);
stud[i].net_name,stud[i].distance,stud[i].next_routin;
}
fclose(fp);
//判断字符串是否相同的子函数
intcharEquals(chara[],charb[])
intm=0;
while(a[m]!
='
\0'
)
if(a[m]==b[m])
m++;
}
elsebreak;
}
if((m==strlen(a))&
&
(m==strlen(b)))
return
(1);
else
return(0);
voidupdate(chars[])
{inti,j,c=3;
intflag[SIZE];
newStud[0].length;
strcpy(newStud[i].next_routing,s);
flag[i]=0;
for(j=0;
j<
j++)
{
if(charEquals(stud[i].net_name,newStud[j].net_name)==1)
{
flag[j]=1;
if(charEquals(stud[i].next_routing,newStud[j].next_routing)==1)
stud[i].distance=newStud[j].distance;
else
if(stud[i].distance>
newStud[j].distance)
{
strcpy(stud[i].next_routing,newStud[j].next_routing);
stud[i].distance=newStud[j].distance;
}
}
if(flag[i]==0)
strcpy(stud[stud[0].length].routing_name,newStud[i].routing_name);
strcpy(stud[stud[0].length].net_name,newStud[i].net_name);
stud[stud[0].length].distance=newStud[i].distance;
strcpy(stud[stud[0].length].next_routing,newStud[i].next_routing);
stud[0].length++;
voidmain()
charroutingName[5];
//用于存储路由器名字
load();
请输入发来rip报文的路由器名字和共有几条记录\n"
scanf("
%s%d"
&
routingName,&
newStud[0].length);
请按照“目的网络距离下一跳路由器”的格式输入%s路由器发来的更新信息\n"
routingName);
strcpy(newStud[i].routing_name,routingName);
scanf("
%s%d%s"
newStud[i].net_name,&
newStud[i].distance,&
newStud[i].next_routing);
update(routingName);
if(stud[i].distance<
15)
stud[i].net_name,stud[i].distance,stud[i].next_routing);
else
save();
4程序运行结果
4.1程序运行界面
图4.1程序主界面
4.2输入收到路由表的信息
图4.2程序运行结果
4.3运行结果分析
原来的路由表信息为
目的网络
距离
下一条
net1
2
r2
net2
3
r4
net3
4
r5
表4.1
r4发来的路由更新信息为
net4
r3
r6
r7
表4.2
修改后的表4.2
表4.3
第一行在表4.1中没有直接添加在4.1中。
第二行的net2在表4.1中也有且下一条也是r4,因此要更新。
第三行的net3在表4.1中也有,但下一跳不同,于是比较距离。
新的信息距离较短,所以更新。
这样就生成了如下表的新路由表:
表4.4
综上所述,程序运行结果正确。
总结
通过本课程设计,我掌握了内部网关协议(RIP)原理以及步骤,还有路由表更新的距离向量算法,这不仅仅是理论知识上的完善,而且实践能力和动手能力有了质的飞跃!
设计中,我自感知识的缺陷,不断的上网查阅资料,翻阅各类相关书籍,自己动手,自己设计,让我的思维逻辑更加清晰。
在完成过程中,靠这次设计我熟练掌握了计算机编程,将理论变为实际开了一个好头。
在我设计好之后,老师对我进行指导,使得我的课程设计进一步完善,更加完美。
本程序从最后的测试结果来看,基本上实现了路由器内部网关协议(RIP)的距离向量算法实现了路表更新功能。
并达到操作过程中的直观、方便、实用、安全等要求。
本系统经过测试,证明其运行是稳定、可靠的。
但在程序设计中也也遇到很多的问题,并且本程序的功能还需要不断的完善和改进,在以后空闲时间里逐一进行完善,使程序功能更加完善。
参考文献
[1]谭浩强.C程序设计.北京:
清华大学出版社.2005.
[2]严蔚敏.数据结构(C语言版).北京:
清华大学出版社.2008.
[3]谢希仁.计算机网络(第5版).北京:
电子工业出版社,2008.
[4]张磊.C程序设计教程.北京:
中国铁道出版社.2007.
[5]郑阿奇.VC++教程.北京:
机械工业出版社,2008.8.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计