毕业设计-静态路由配置的模拟实现与设计—论文[管理资料]
- 格式:docx
- 大小:81.45 KB
- 文档页数:50
静态路由配置的模拟实现
摘要:本文介绍了路由配置软件的设计全过程,文章从系统的整体需求和结构设计入手详细论述了该软件系统各个功能的具体实现方法,并结合自己的实践心得叙述了整个软件系统的开发过程。
文章还详细阐述了包括需求分析、软件整体结构的设计、各功能模块的设计、以及实现过程中的技术难点等部分,并在文章的最后提出后续开发和改进的方法。
本软件充分结合了C++语言和路由器配置原理等知识,运用VC++、InstallShield Professional软件,完成了系统的设计。
该设计已应用于实际之中,良好地实现了用户的需求,并发挥着重要作用,具有较高的实际应用价值和理论意义。
关键词:静态路由;配置;路由器;vc++;
The design and realization of static routing configuration
Abstract:The thesis introduces the whole design process of Router Configuration
with the system’s requirement and structure’s design,this paper discusses therealization methods of the software’s each with my experience,the wholeprocess of the software’s development is recounted in the paper still elaboratesmany parts detailedly,including requirement analysis,design and analysis of softwareholistic structure,design of each module,and some technique difficulties in the the end of the thesis,some methods,about the software's continualdevelopment and prospective improvement,have been put forward.
This software combines C++ language with theory of router configuration adequately. Furthermore, to complete the design of software system, many tools have been used, suchas VC++ s
This software combines C++ language with theory of router configuration ,to
complete the design of software system,many tools have been used,suchas VC++ development software, InstallShield Professional design has been applied to the caters for theusers’requirement well and plays a vital role in the has a high practicalapplication value and an academic significance.
Key word:static routing; configuration; router; vc++;
第1章引言
课题背景
互联网内容的增长给人们提供了更多可选择的信息资源,但在信息资源不断膨胀的同时,物理层面上的网络资源也面临着这种由需求增长产生的刺激。
在这种刺激下,组成网络的各种硬件设备也随之不断发展,特别是作为互联网核心设备的路由器。
路由器是一种在网络层提供连接服务的网络设备,它连通不同的网络,并选择信息传送的线路。
大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益。
其主要任务是接收来自一个网络接口的数据包,根据其中所含的目的地址,决定转发到哪一个目的地(可能是路由器也可能就是最终目的点),并决定从哪个网络接口转发出去。
为了实现这样的功能,上个世纪60年代,人们曾经使用普通电脑充当路由器的角色。
互联网和路由器本身经历了半个世纪的发展,今天的路由器与以往相比已经是天壤之别了。
路由器本身的发展实际上从一个侧面反映了互联网的发展,正是网络的发展对路由器提出不断升高的要求,为路由器的发展提供了空间和方向。
而路由器的发展也使得网络能够如愿以偿地实现更多功能,最终为人们服务。
因此在互联网普及的现在,路由器的应用已经越来越与人们息息相关,它对于人们来说也越来
越重要了。
了解一些路由器知识的人都知道,配置路由器是需要很多知识的,包括网络的,协议的,路由器本身的等等。
人们学习配置往往是通过记忆那些枯燥乏味的路由器命令开始的,这给学习路由器的配置以及它的配置过程带来很大的不便。
此外,配置路由器除了需要经验和准确的记忆,还需要输入大量的指令以使路由器完成配置,这使得快速准确的配置路由器显得很困难,对于那些非专业的人士更是难上加难;而在某些特殊情况或某些特殊环境下,很可能需要准确快速地做出路由配置。
为了让初学者快速学习路由器的静态路由配置,理解网络拓扑图的生成,能对各主机IP地址配置,对路由器的静态路由的设置,理解数据包的传输。
为了便于或简化他们的操作,以使他们能快速形象的理解静态路由器的配置,我们需要一个模拟软件来代替手工输入路由配置命令,来实现路由器的互连,本软件正是在此基础上应运而生的。
目前军队有关作战指挥通信和网络的相关软件有不少,但是大多数面向的对象比较单一,而且由于许多涉及到保密的资料,因此无法查阅和参考相关的文献和论文。
目前该课题在民用上适用的完全相同的模型有不少,比如各个路由器厂商开发的各自的配置软件或者配置工具,但作为特定环境连接特殊路由器完成方便组网的过程,还没有相关的设计。
在设计的过程中对网络知识有了全面的了解,对路由器特别是CISCO26系列的路由器做了充分的研究,其中包括对其各个接口的了解,以及与以太网、调制解调器、帧中继网络等设备的互连时配置命令的了解。
当然还包括TCP/IP的相关知识,诸如子网划分,OSPF协议等。
程序方面该软件用到多种流行软件知识。
开发时,利用面向对象开发工具VC++,为了检验传送生成的文件到路由器的可靠性和正确性,利用了InstallShield Professional软件把所有的文件打包成一个完整的软件。
该课题的目的是完成一个具有图形化界面软件的编写,它可以简化设备配置和管理,对路由器之间完成IP规划,静态路由的配置,直观的拓扑图,模拟数据包的传输路径,从而完成路由器之间以及路由器和其他设备之间的互连。
软件对路由器的IP地址进行规划,静态路由的配置,直观的拓扑图,模拟数据包的传输路径,方便快捷的实现了路由器配置过程,给特殊情况特殊条件下配置路由器提供可能,为初学者对静态路由的配置的学习提供了帮助。
第2章工具介绍
本软件充分结合了C++语言和路由器配置原理等知识,运用VC++、TFTP文件服务器软件、InstallShield Professional等多种工具软件,完成了系统的设计。
该设计已应用于实际之中,良好地实现了用户的需求,并发挥着重要作用,具有较高的实际应用价值和理论意义。
VC++是微软Visual Studio系列中的一个主要的开发产品,它以面向对象编程为基础,使用C++语言,是集编辑、编译、运行、调试为一体的功能强大的集成编程环境。
Visual C++不但功能强大,提供了一系列的帮助编程人员调试的方便而强大工具,而且它的可视化编程环境,也十分有利于提高编程人员的工作效率。
Visual C++提供的MFC类库,也很大的方便了用户,特别是使编程人员能够很方便的编辑友好美观的应用程序界面。
软件安装制作工具是利用Installshield,它是专业的打包工具。
它是多平台安装程序制作软件,可以制作任何平台任何系统下的安装程序,如windows、Linux或是各种类型的UNIX系统。
Installshield是软件安装制作工具的业界老大,微软的相当大的一部分程序安装包都是通过Installshield制作的;在国内,现在只要是一些稍有名气的大软件公司,如金山、东软、用友、金蝶等等,它们的软件安装包也几乎是清一色的Installshield。
第3章需求分析和总体设计
本软件针对的是一些对路由器配置命令不熟悉但有一定基础的操作人员,对于他们来说一个具有图形化界面的软件是方便操作的关键,因此可以参考大多数流行软件的界面形式来编制本软件。
本软件在特定环境下为特定用户服务,模拟硬件的配置方式,所以需要详细了解路由器的功能和各个端口的配置。
系统管理员根据网络拓扑结构事先设置好的路由表称为静态 (Static)路由表 ,除非管理员干预 ,否则静态路由不会发生变化. 由于静态路由不能对网络的改变作出反映 ,因此 ,一般用于网络规模不大、网络结构比较简单环境中 ,静态路由的优点是简单、高效、可靠. 在所有的路由中 ,静态路由优先级最高 ,当静态路由与动态路由发生冲突时以静态路由为准。
下图显示了2个路由器:路由器 A和路由器 B , 它还显示了3个网络:192. 168.
10. 0 ,192. 168. 30. 0和 1个公共网络 192. 168. 20. 0. 通过下图,我们可以确定路由器 A将 192. 168. 10. 0与 192. 168. 20. 0直接相连 ,路由器 B 将 192. 168. 20. 0与 192. 168. 30. 0直接相连.
通过这些信息 ,我们能够判断出主机 192. . 1可以通过路由器 A与主机192. 168. 20. 1通信 ,主机 192. 168. 30. 1 可以通过路由器 B 与主机 . 20. 1通信. 但是 ,主机 192. 168. 10. 1想要与主机 192. 168. 30. 1通信发生什么情况呢 ?
事实上 ,这条路由不会出现 ,通信将失败. 这是因为路由器 A没有网络192. 168. 30. 0的信息 ;反之亦然 ,路由器 B没有网络 192. 168. 10. 0的信息. 为了完成这个通信 ,需要使路由器 A意识到网络 . 30. 0的存在并且路由器B意识到 192. 168. 10. 0的存在. 不要认为只需路由器 A 能看到网络 .
30. 0就行 ,还需要一条路由返回到源地址以便应答和回答都能被收到. 这可以通过两方式完成:手工输入路由信息到每个路由器中 ,这称为静态路由(static
routing) ;在两个路由器上都配置一个动态路由协议来汇聚路由信息 ,这称为动态路由(dynamic routing) . 因此 ,为了完成路由器中 A与 192. . 1之间的通信 ,需要让路由器 A在它的内部路由表存储一条路由指向网络 192. 168. 30.
0. 路由表中一条路由的基本信息包括目的网络以及至下一跳地址或接口和管辖距离. 这会告诉路由器如何对它没有直接相连的远方目的网络的报文进行路由.
1)将路由器、以太网、电脑等设备图形化,以便连接时可以形象显示出各个设备的拓扑连接图。
2)对主机A和B的IP、掩码;路由器A和B的IP、掩码;路由器静态路由配置界面化显示。
3)主机A模拟发出数据到主机B窗口图形化。
4)能够具有检查配置正确性的功能。
检查主机A到B、B到A是否在同一网段,路由器A、B是否在同一网段。
当用户输入地址或者相关数据错误时,应该提示出错信息。
软件的界面设计采用标准绘图软件的模式,为了便于观看和选择,本系统仅仅设计了本课题需要模拟的功能界面,以便用户直接点选。
效果如下:
系统模块分析
整个系统分为五个部分。
1)ip地址设置,负责主机地址,路由器端口的设置。
2)静态路由的设置,实现一个局域网到另一个局域网的路由。
3)测试模块,测试ip地址设置,静态路由设置是否合理。
4)模拟数据传输模块。
系统结构图
成员变量
BYTE nField0,nField1,nField2,nField3;//ip地址圆点分割的数字组成BYTE nField10,nField11,nField12,nField13;//掩码圆点分割的数字组成int m_nIPA[3][4];//主机A ip地址, 主机A 地址掩码
int m_nIPAID[4];//主机A 地址网路号
int m_nIPB[3][4];//主机B ip地址, 主机B 地址掩码int m_nIPBID[4];//主机B 地址网路号
int m_nIPRA[4][4];//路由器A. 广域网ip地址, 掩码int m_nIPRAID[4];//路由器A广域网ip地址网路号
int m_nIPRB[4][4];//路由器B. 广域网ip地址, 掩码int m_nIPRBID[4];//路由器B广域网ip地址网路号
int m_nIPRGA[4][4];//路由器A源地址掩码目的地址m_nIPRGAID[4];//路由器A源地址网路号
int m_nIPRGB[4][4];//路由器B源地址掩码目的地址int m_nIPRGBID[4];//路由器B源地址网路号
第4章详细设计
详细功能描述
处理过程描述(必须要有流程图)
算法以及核心代码
1)初始设置
switch(m_nSelect)
{
case 1:
("");
("");
break;
case 2:
("");
("");
break;
case 3:
("");
("");
break;
case 4:
("");
("");
break;
}
2) Ip地址设置
if(()) //判断是否为空
{
MessageBox("IP地址为空!");
return ;
}
if((nField0,nField1,nField2,nField3) !=4) {
MessageBox("你输入的IP地址不完整!");
(0);
return;
}
if(()) //判断是否为空
{
MessageBox("IP地址为空!");
return ;
}
if((nField10,nField11,nField12,nField13) !=4) {
MessageBox("你输入的IP地址不完整!");
(0);
return;
}
1)初始设置
switch(m_nSelect)
{
case 1:
("");
("");
("");
break;
case 2:
("");
("");
("");
break;
}
2)Ip静态路由设置
if(()) //判断是否为空
{
MessageBox("源IP地址为空!");
return ;
}
if((nField0,nField1,nField2,nField3) !=4) {
MessageBox("你输入的源IP地址不完整!");
(0);
return;
}
if(()) //判断是否为空
{
MessageBox("掩码为空!");
return ;
}
if((nField10,nField11,nField12,nField13) !=4) {
MessageBox("你输入的掩码不完整!");
(0);
return;
}
if(()) //判断是否为空
{
MessageBox("目的IP地址为空!");
return ;
}
if((nField20,nField21,nField22,nField23) !=4)
{
MessageBox("你输入的目的IP地址不完整!");
(0);
return;
}
ip设置
CString strBuf;
int i=(int) ;
m_nIPA[0][0]=(int) ;
m_nIPA[0][1]=(int) ;
m_nIPA[0][2]=(int) ;
m_nIPA[0][3]=(int) ;
("%d.%d.%d.%d",m_nIPA[0][0],m_nIPA[0][1],m_nIPA[0][2],m_nIPA[0][3 ]);
(strBuf);
m_nIPA[1][0]=(int) ;
m_nIPA[1][1]=(int) ;
m_nIPA[1][2]=(int) ;
m_nIPA[1][3]=(int) ;
("%d.%d.%d.%d",m_nIPA[1][0],m_nIPA[1][1],m_nIPA[1][2],m_nIPA[1][3 ]);
(strBuf);
主机B ip设置
CString strBuf;
int i=(int) ;
m_nIPB[0][0]=(int) ;
m_nIPB[0][1]=(int) ;
m_nIPB[0][2]=(int) ;
m_nIPB[0][3]=(int) ;
("%d.%d.%d.%d",m_nIPB[0][0],m_nIPB[0][1],m_nIPB[0][2],m_nIPB[0][3 ]);
(strBuf);
//AfxMessageBox(strBuf);
m_nIPB[1][0]=(int) ;
m_nIPB[1][1]=(int) ;
m_nIPB[1][2]=(int) ;
m_nIPB[1][3]=(int) ;
("%d.%d.%d.%d",m_nIPB[1][0],m_nIPB[1][1],m_nIPB[1][2],m_nIPB[1][3 ]);
(strBuf);
路由器A广域网端口ip地址设置
CString strBuf;
int i=(int) ;
m_nIPRA[0][0]=(int) ;
m_nIPRA[0][1]=(int) ;
m_nIPRA[0][2]=(int) ;
m_nIPRA[0][3]=(int) ;
("%d.%d.%d.%d",m_nIPRA[0][0],m_nIPRA[0][1],m_nIPRA[0][2],m_nIPRA[ 0][3]);
(strBuf);
m_nIPRA[1][0]=(int) ;
m_nIPRA[1][1]=(int) ;
m_nIPRA[1][2]=(int) ;
m_nIPRA[1][3]=(int) ;
("%d.%d.%d.%d",m_nIPRA[1][0],m_nIPRA[1][1],m_nIPRA[1][2],m_nIPRA[ 1][3]);
(strBuf);
路由器B广域网端口ip地址设置
CString strBuf;
int i=(int) ;
m_nIPRB[0][0]=(int) ;
m_nIPRB[0][1]=(int) ;
m_nIPRB[0][2]=(int) ;
m_nIPRB[0][3]=(int) ;
("%d.%d.%d.%d",m_nIPRB[0][0],m_nIPRB[0][1],m_nIPRB[0][2],m_nIPRB[ 0][3]);
(strBuf);
m_nIPRB[1][0]=(int) ;
m_nIPRB[1][1]=(int) ;
m_nIPRB[1][2]=(int) ;
m_nIPRB[1][3]=(int) ;
("%d.%d.%d.%d",m_nIPRB[1][0],m_nIPRB[1][1],m_nIPRB[1][2],m_nIPRB[ 1][3]);
(strBuf);
路由器A静态路由设置
CString strBuf,strRoute;
strRoute="Add Route ";
m_nIPRGA[0][0]=(int) ;
m_nIPRGA[0][1]=(int) ;
m_nIPRGA[0][2]=(int) ;
m_nIPRGA[0][3]=(int) ;
("%d.%d.%d.%d",m_nIPRGA[0][0],m_nIPRGA[0][1],m_nIPRGA[0][2],m_nIP RGA[0][3]);
//AfxMessageBox(strBuf);
strRoute=strRoute+strBuf;
//m_edit1=strRoute;
//(strBuf);
m_nIPRGA[1][0]=(int) ;
m_nIPRGA[1][1]=(int) ;
m_nIPRGA[1][2]=(int) ;
m_nIPRGA[1][3]=(int) ;
("%d.%d.%d.%d",m_nIPRGA[1][0],m_nIPRGA[1][1],m_nIPRGA[1][2],m_nIP RGA[1][3]);
strRoute+=" " +strBuf;
m_nIPRGA[2][0]=(int) ;
m_nIPRGA[2][1]=(int) ;
m_nIPRGA[2][2]=(int) ;
m_nIPRGA[2][3]=(int) ;
("%d.%d.%d.%d",m_nIPRGA[2][0],m_nIPRGA[2][1],m_nIPRGA[2][2],m_nIP
RGA[2][3]);
strRoute+=" " +strBuf;
m_edit1=strRoute;
路由器B静态路由设置
CString strBuf,strRoute;
strRoute="Add Route ";
m_nIPRGB[0][0]=(int) ;
m_nIPRGB[0][1]=(int) ;
m_nIPRGB[0][2]=(int) ;
m_nIPRGB[0][3]=(int) ;
("%d.%d.%d.%d",m_nIPRGB[0][0],m_nIPRGB[0][1],m_nIPRGB[0][2],m_nIP RGB[0][3]);
//AfxMessageBox(strBuf);
strRoute=strRoute+strBuf;
//m_edit1=strRoute;
//(strBuf);
m_nIPRGB[1][0]=(int) ;
m_nIPRGB[1][1]=(int) ;
m_nIPRGB[1][2]=(int) ;
m_nIPRGB[1][3]=(int) ;
("%d.%d.%d.%d",m_nIPRGB[1][0],m_nIPRGB[1][1],m_nIPRGB[1][2],m_nIP RGB[1][3]);
strRoute+=" " +strBuf;
m_nIPRGB[2][0]=(int) ;
m_nIPRGB[2][1]=(int) ;
m_nIPRGB[2][2]=(int) ;
m_nIPRGB[2][3]=(int) ;
("%d.%d.%d.%d",m_nIPRGB[2][0],m_nIPRGB[2][1],m_nIPRGB[2][2],m_nIP RGB[2][3]);
strRoute+=" " +strBuf;
m_edit2=strRoute;
UpdateData(false);
计算各节点的网络号
m_nIPAID[0]=m_nIPA[0][0] & m_nIPA[1][0];
m_nIPAID[1]=m_nIPA[0][1] & m_nIPA[1][1];
m_nIPAID[2]=m_nIPA[0][2] & m_nIPA[1][2];
m_nIPAID[3]=m_nIPA[0][3] & m_nIPA[1][3];
//HostB
m_nIPBID[0]=m_nIPB[0][0] & m_nIPB[1][0];
m_nIPBID[1]=m_nIPB[0][1] & m_nIPB[1][1];
m_nIPBID[2]=m_nIPB[0][2] & m_nIPB[1][2];
m_nIPBID[3]=m_nIPB[0][3] & m_nIPB[1][3];
//RouteA
m_nIPRAID[0]=m_nIPRA[0][0] & m_nIPRA[1][0];
m_nIPRAID[1]=m_nIPRA[0][1] & m_nIPRA[1][1];
m_nIPRAID[2]=m_nIPRA[0][2] & m_nIPRA[1][2];
m_nIPRAID[3]=m_nIPRA[0][3] & m_nIPRA[1][3];
//RouteB
m_nIPRBID[0]=m_nIPRB[0][0] & m_nIPRB[1][0];
m_nIPRBID[1]=m_nIPRB[0][1] & m_nIPRB[1][1];
m_nIPRBID[2]=m_nIPRB[0][2] & m_nIPRB[1][2];
m_nIPRBID[3]=m_nIPRB[0][3] & m_nIPRB[1][3];
//Static RouterA
m_nIPRGAID[0]=m_nIPRGA[0][0] & m_nIPRGA[1][0];
m_nIPRGAID[1]=m_nIPRGA[0][1] & m_nIPRGA[1][1];
m_nIPRGAID[2]=m_nIPRGA[0][2] & m_nIPRGA[1][2];
m_nIPRGAID[3]=m_nIPRGA[0][3] & m_nIPRGA[1][3];
("%d.%d.%d.%d",m_nIPRGAID[0],m_nIPRGAID[1],m_nIPRGAID[2],m_nIPRGA ID[3]);
//Static RouterB
m_nIPRGBID[0]=m_nIPRGB[0][0] & m_nIPRGB[1][0];
m_nIPRGBID[1]=m_nIPRGB[0][1] & m_nIPRGB[1][1];
m_nIPRGBID[2]=m_nIPRGB[0][2] & m_nIPRGB[1][2];
m_nIPRGBID[3]=m_nIPRGB[0][3] & m_nIPRGB[1][3];
if((m_nIPRAID[0]==m_nIPRBID[0]) && (m_nIPRAID[1]==m_nIPRBID[1]) && (m_nIPRAID[2]==m_nIPRBID[2]) && (m_nIPRAID[3]==m_nIPRBID[3])) {
return true;
}
else
{
AfxMessageBox("路由器A和路由器B不在同一网段内!!");
return false;
}
检查主机A与路由器A广域网端口地址设置
if((m_nIPAID[0]==m_nIPRAID[0]) && (m_nIPAID[1]==m_nIPRAID[1]) && (m_nIPAID[2]==m_nIPRAID[2]) && (m_nIPAID[3]==m_nIPRAID[3])) {
AfxMessageBox("HostA局域网地址和路由器A广域网地址不能在同一网段内!!");
return false;
}
else
{
return true;
}
检查主机B与路由器A广域网端口地址设置
if((m_nIPBID[0]==m_nIPRBID[0]) && (m_nIPBID[1]==m_nIPRBID[1]) && (m_nIPBID[2]==m_nIPRBID[2]) && (m_nIPBID[3]==m_nIPRBID[3])) {
AfxMessageBox("HostB局域网地址和路由器B广域网地址不能在同一网段内!!");
return false;
}
else
{
return true;
}
检查主机A到主机B路由
CString str;
if((m_nIPAID[0]==m_nIPRGAID[0]) && (m_nIPAID[1]==m_nIPRGAID[1]) && (m_nIPAID[2]==m_nIPRGAID[2]) && (m_nIPAID[3]==m_nIPRGAID[3])) {
return true;
}
else
{
AfxMessageBox("路由器A源地址和掩码设置不正确,HostA不能到达路由器B!!");
return false;
}
检查主机A到主机B路由
CString str;
if((m_nIPBID[0]==m_nIPRGBID[0]) && (m_nIPBID[1]==m_nIPRGBID[1]) && (m_nIPBID[2]==m_nIPRGBID[2]) && (m_nIPBID[3]==m_nIPRGBID[3])) {
return true;
}
else
{
AfxMessageBox("路由器B源地址和掩码设置不正确,HostB不能到达路由器A!!");
return false;
}
第5章测试
第6章结束语
本软件利用面向对象程序设计技术实现并简化了路由器的配置过程,方便了用户。
在实现的过程中尽管克服了很多难点,但是还存在很多的不足,虽然尽量做到了代码的简化,不过还是有重复出现的代码段,在代码优化的过程中应该把重复出现的代码用函数代替,从而通过调用函数实现功能。
经过对软件的测试发现,本软件还存在一个小小的不足,在对上一次的测试
数据不能在下一次数据测试时自动更新。
对于下一次的测试时,我们必须对所有的设置重新设置一遍来更新上次的数据。
所以在后续开发中我们会对更新功能进行再设计。
该软件结合实际工程,利用多种实用软件,基于面向对象技术实现了路由器配置的自动生成,完成了路由器配置的过程。
本文从系统的整体需求和结构设计入手详细论述了该软件系统各个功能的具体实现方法,并结合自己的实践心得叙述了整个软件系统的开发过程。
软件选用Windows 2000为平台,利用可视化编程、串口编程等编程方法使软件具有友好、灵活的人机接口,易于操作和维护以及扩充和升级。
在实际的应用中,该软件的功能将会不断的改进,并在此过程中进一步完善和优化。
参考文献:
[1] 中国互联网络信息中心. [OL],2007.
[2] 龙马工作室,ASP+SQL Server组建动态网站实例精讲,人民邮电出版社,2004
[3] 王国荣,——从基本语法学起,华中科技大学出版社,2002
[4] 萨师煊,.(第三版).北京:高等教育出版社,2000
[5] :人民邮电出版社,2001
[6] :高等教育出版社,2003
[7] 陈春玲,陈丹伟,:西安电子科技大学出版,2002
[8] . Database Administration: The Complete Guide to Practices and ,任建利,:电子工业出版社,2003
[9] Martin Fowler. Refactoring: Improving the Design of Existing Code. 侯捷,:中国电力出版社,2003
[10]Richard Whitehead. Leading a Software Development Team:A Developer's Guide to Successfully LeadingPeople and Projects. :电子工业出版社,2002
[11] 吴晓波,伍华,[J].科学管理研究,2002
[12] (美)斯奈德,(美)(第2版)[M].北京:机械工业出版社,2002
[13] (美)[M].南京:江苏人民出版社,2000
[14] 皮中原,杨大兵,凌强,(LIMS)简介[C].北京:北京科技出版社,~49.
[15] [C].北京:国家地质实验测试中心,~9.
[16] (LIMS)的进展和发展趋势[J].,30(4):36~37.
[17] 培育中国LIMS市场[C].北京:人民邮电出版社,.
[18] Basic [M].北京:人民邮电出版社,~218.
[19] Basic 程序设计教程(第二版)[M].北京:清华大学出版社,~435.
[20] 鲁荣江, Basic 项目案例导航[M].北京:科学出版社,~108.
[21] 京辉热点工作室. Visual Basic 中文版编程指南[M].北京:人民邮电出版社,~85.
[22] 郭百巍,陈大融,[A].计算机工程与应用[C].北京:中国图书出版社,~195.
[23] 张咏钋,(实验室信息管理系统)的设计与实现[C].北京:中科院科学仪器研制中心,~62.
[24] 章军. LIMS的技术平台与设计思想[J].江南大学学报(自然科学版),2003,2(2):38~41。
[25] 尚凡一. 实验室信息管理系统的开发及应用[J]. ,12(4):4~5.
[26] 陈德胜,赵丰年. 实验室管理信息系统的开发和应用[J]. ,19(8):37~39.
[27] 英国实验室系统公司,(LIMS)的进展和发展趋势[J].,30(4):36~37.
[28] Guide for Laboratory Information Management System[J], ANNUAL BOOKOF ASTANDARS 1994,14(01):530~554
[29] 郭强,杜燕臻. 略谈实验室信息管理系统的设计(LIMS)及在企业的实现[R]..
[30] 刘争鸣. 微机实验室管理信息系统的设计与实现[R]. 贵阳. .
致谢:
通过这次毕业设计,我学会了综合的运用大学四年学的东西,学会了用严谨的软件工程学来做设计,为我走向社会打下了一个不错的基础,从一开始的比较迷茫,到最后能成功完成了这次设计,这里面有老师同学的帮助,也有自己努力。
在这里我要感谢所有帮助我的老师和同学,他们在这次毕业设计中给了我很大的帮助。
静态路由配置的模拟实现
摘要:本文介绍了路由配置软件的设计全过程,文章从系统的整体需求和结构设计入手详细论述了该软件系统各个功能的具体实现方法,并结合自己的实践心得叙述了整个软件系统的开发过程。
文章还详细阐述了包括需求分析、软件整体结构的设计、各功能模块的设计、以及实现过程中的技术难点等部分,并在文章的最后提出后续开发和改进的方法。
本软件充分结合了C++语言和路由器配置原理等知识,运用VC++、InstallShield Professional软件,完成了系统的设计。
该设计已应用于实际之中,良好地实现了用户的需求,并发挥着重要作用,具有较高的实际应用价值和理论意义。
关键词:静态路由;配置;路由器;vc++;
The design and realization of static routing configuration
Abstract:The thesis introduces the whole design process of Router Configuration
with the system’s requirement and structure’s design,this paper discusses therealization methods of the software’s each with my experience,the wholeprocess of the software’s development is recounted in the paper still elaboratesmany parts detailedly,including requirement analysis,design and analysis of softwareholistic structure,design of each module,and some technique difficulties in the the end of the thesis,some methods,about the software's continualdevelopment and prospective improvement,have been put forward.
This software combines C++ language with theory of router configuration adequately. Furthermore, to complete the design of software system, many tools have been used, suchas VC++ s
This software combines C++ language with theory of router configuration ,to complete the design of software system,many tools have been used,suchas VC++ development software, InstallShield Professional design has been applied to the caters for theusers’requirement well and plays a vital role in the has a high practicalapplication value and an academic significance.
Key word:static routing; configuration; router; vc++;
第1章引言
课题背景
互联网内容的增长给人们提供了更多可选择的信息资源,但在信息资源不断膨胀的同时,物理层面上的网络资源也面临着这种由需求增长产生的刺激。
在这种刺激下,组成网络的各种硬件设备也随之不断发展,特别是作为互联网核心设备的路由器。
路由器是一种在网络层提供连接服务的网络设备,它连通不同的网络,并选择信息传送的线路。
大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益。
其主要任务是
接收来自一个网络接口的数据包,根据其中所含的目的地址,决定转发到哪一个目的地(可能是路由器也可能就是最终目的点),并决定从哪个网络接口转发出去。
为了实现这样的功能,上个世纪60年代,人们曾经使用普通电脑充当路由器的角色。
互联网和路由器本身经历了半个世纪的发展,今天的路由器与以往相比已经是天壤之别了。
路由器本身的发展实际上从一个侧面反映了互联网的发展,正是网络的发展对路由器提出不断升高的要求,为路由器的发展提供了空间和方向。
而路由器的发展也使得网络能够如愿以偿地实现更多功能,最终为人们服务。
因此在互联网普及的现在,路由器的应用已经越来越与人们息息相关,它对于人们来说也越来越重要了。
了解一些路由器知识的人都知道,配置路由器是需要很多知识的,包括网络的,协议的,路由器本身的等等。
人们学习配置往往是通过记忆那些枯燥乏味的路由器命令开始的,这给学习路由器的配置以及它的配置过程带来很大的不便。
此外,配置路由器除了需要经验和准确的记忆,还需要输入大量的指令以使路由器完成配置,这使得快速准确的配置路由器显得很困难,对于那些非专业的人士更是难上加难;而在某些特殊情况或某些特殊环境下,很可能需要准确快速地做出路由配置。
为了让初学者快速学习路由器的静态路由配置,理解网络拓扑图的生成,能对各主机IP地址配置,对路由器的静态路由的设置,理解数据包的传输。
为了便于或简化他们的操作,以使他们能快速形象的理解静态路由器的配置,我们需要一个模拟软件来代替手工输入路由配置命令,来实现路由器的互连,本软件正是在此基础上应运而生的。
目前军队有关作战指挥通信和网络的相关软件有不少,但是大多数面向的对象比较单一,而且由于许多涉及到保密的资料,因此无法查阅和参考相关的文献和论文。
目前该课题在民用上适用的完全相同的模型有不少,比如各个路由器厂商开发的各自的配置软件或者配置工具,但作为特定环境连接特殊路由器完成方便组
网的过程,还没有相关的设计。
在设计的过程中对网络知识有了全面的了解,对路由器特别是CISCO26系列的路由器做了充分的研究,其中包括对其各个接口的了解,以及与以太网、调制解调器、帧中继网络等设备的互连时配置命令的了解。
当然还包括TCP/IP的相关知识,诸如子网划分,OSPF协议等。
程序方面该软件用到多种流行软件知识。
开发时,利用面向对象开发工具VC++,为了检验传送生成的文件到路由器的可靠性和正确性,利用了InstallShield Professional软件把所有的文件打包成一个完整的软件。
该课题的目的是完成一个具有图形化界面软件的编写,它可以简化设备配置和管理,对路由器之间完成IP规划,静态路由的配置,直观的拓扑图,模拟数据包的传输路径,从而完成路由器之间以及路由器和其他设备之间的互连。
软件对路由器的IP地址进行规划,静态路由的配置,直观的拓扑图,模拟数据包的传输路径,方便快捷的实现了路由器配置过程,给特殊情况特殊条件下配置路由器提供可能,为初学者对静态路由的配置的学习提供了帮助。
第2章工具介绍
本软件充分结合了C++语言和路由器配置原理等知识,运用VC++、TFTP文件服务器软件、InstallShield Professional等多种工具软件,完成了系统的设计。
该设计已应用于实际之中,良好地实现了用户的需求,并发挥着重要作用,具有较高的实际应用价值和理论意义。
VC++是微软Visual Studio系列中的一个主要的开发产品,它以面向对象编程为基础,使用C++语言,是集编辑、编译、运行、调试为一体的功能强大的集成编程环境。
Visual C++不但功能强大,提供了一系列的帮助编程人员调试的方便而强大工具,而且它的可视化编程环境,也十分有利于提高编程人员的工作效率。
Visual C++提供的MFC类库,也很大的方便了用户,特别是使编程人员能够很方便的编辑友好美观的应用程序界面。