最新毕业设计网络虚拟实验平台的构建与测试终稿.docx
- 文档编号:27590662
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:23
- 大小:56.23KB
最新毕业设计网络虚拟实验平台的构建与测试终稿.docx
《最新毕业设计网络虚拟实验平台的构建与测试终稿.docx》由会员分享,可在线阅读,更多相关《最新毕业设计网络虚拟实验平台的构建与测试终稿.docx(23页珍藏版)》请在冰豆网上搜索。
最新毕业设计网络虚拟实验平台的构建与测试终稿
settalkoff
【答案】DELETE;PACK
A.CB.DC.TD.出错
A、D类B、C类C、B类D、A类
【答案】GO8
A.AT('人民','中华人民共和国')B.CTOD('01/01/96')
*方法2
14、计算机网络拓扑是通过网中结点与通信线路之间的几何关系表示网络中各实体间的__B_______。
1.存储在计算机内、有结构的相关数据的集合称为______。
13.关于INSERT-SQL语句描述正确的是________。
网络虚拟实验平台的构建与测试
摘要
基于网络的虚拟实验平台是在能够进行网络通信的基础之上将计算机上虚拟的各种仪器、器件,按实验要求组装成一个完整的实验环境,实现搭接实验电路,演示实验过程等功能。
远程指导模块是其中的一个功能模块。
它分成指导端和被指导端两部分,指导端通过HOOK技术,采集本地机鼠标和键盘信息;然后将这些信息打包,通过P2P网络通信机制将信息包传给被指导端;在被指导端将信息包信息解出,通过mouse_event、keybd_event等函数去控制被指导端的鼠标、键盘动作,实现相关的一些远程指导动作。
本模块在VC环境下开发,用到了WindowsSocket编程技术,P2P编程思想,HOOK技术,多线程技术等多方面的技术。
由于整个系统模块很多,本设计中编写了独立的测试程序,经过测试基本达到预期的设计目标。
关键词:
远程指导;P2P;WindowsSocket编程;HOOK;多线程
DesignandImplementationofRemoteGuidanceModuleBasedonNetworkVirtualExperimentPlatform
Abstract
Underthefoundationofnetworkcommunications,thenetwork-basedVirtualExperimentalPlatformcouldintegratevariouscomputervirtualdevicesintoacompleteexperimentalenvironmentaccordingtotheexperimentrequirements,andconnecttheexperimentcircuitanddemonstratetheprocessofexperiment.Theremoteguidingmodulewasoneoffunctionmodules,whichwasdividedintoguidingendandtheguidedend.WithHOOK,theguidingendcapturedtheinformationoflocalmouseandkeyboard,andpackedtheinformationtosendtotheguidedpartthroughpeer-to-peernetworkcommunicationmechanism.Theguidedendwillunpacktheinformation,andcontrolthemouseandkeyboardoftheguidedendbymouse_event,keybd_eventfunctionstoimplementsomeremotecontrolactions.DevelopedunderVCenvironment,theremoteguidancemoduleusedWindowsSocketprogrammingtechnology,P2Pprogrammingideas,HOOKtechnology,multithreadingtechnology,andetc.Becausetherearemanymodulesforthewholesystem,anindependenttestingprocedurewasprogrammedtotestthemodules,whichhadbeenproventoachievethedesiredobjectives
Keywords:
Remoteguidance;Peer-to-Peer;WindowsSocketprogramming;HOOK;Multithreading
论文总页数:
23页
1引言
近年来,随着信息技术的发展,计算机的普及,网络为我们带了更多的便利。
网络技术的发展,引发了控制领域的深刻技术变革,控制系统结构沿着网络化方向与控制系统体系沿着开放性方向发展将是控制系统技术创新的大潮流。
计算机局域网络、企业网络、现代信号处理等等使自动化系统与工业控制系统从体系结构、控制方法、产品系列、人机协作方法等都发生了重大的变化。
进入21世纪的控制系统以网络为主要特征:
一方面是在自动化与工业控制中需要更深层次地渗透通信与网络技术,另一方面是在通信网络的管理与控制中也要求更多的采用控制理论与策略并且由于系统中需要大量的数据交换,服务器的负担很重,所以我们就研究出了基于网络的虚拟实验平台。
作为基于网络的虚拟实验平台的远程指导模块,本文通过WindowsSocket编程,以HOOK技术,多线程技术作为基础,再利用其他的API函数来实现被指导端对指导端发送请求信息,将信息打包以后通过网络传输到服务器端,指导端收到信息以后,将信息解包,根据信息提示来对被指导端进行相关指导:
获取客户的相关信息、锁定鼠标和键盘,对鼠标进行动态的控制和指导键盘的信息输入。
1.1项目背景
全球信息化的发展,计算机网络给我们提供了优越的通信平台,优秀的软件系统必须要具有网络功能。
虚拟实验平台正是应这个大需求而诞生。
并且随着信息技术的发展,网络无疑为我们带了更多的便利,同时一个优秀的系统必须要具有网络功能,要完成这些功能,那就要把各种网络通过某种方式连接起来,在网络实现过程中存在穿透NAT的问题,此问题存在较长时间,后来因为网络地址不够而产生了P2P技术,伴随着P2P技术的出现,利用UDP实现P2P网络穿越NAT的即时通讯技术,而问题即被解决。
1.2项目介绍
1.2.1基于网络的虚拟实验平台
计算机技术、大规模集成电路技术和通讯技术的飞速发展,为虚拟实验的发展奠定了坚实的基础。
虚拟实验就是在通用计算机上加载相应的软件或硬件,使得使用者在操作这台计算机时,就像是在操作一台专用的传统试验设备一样。
在虚拟实验系统中,软件是整个系统的关键,任何使用者都可以通过软件的相关设置来达到要实现实验的效果。
虚拟实验就是利用外部输入(如鼠标的点击、拖动和键盘的敲击等),将计算机上虚拟的各种仪器,按实验要求、过程,组装成一个完整的实验环境,同时在这个环境中完成实验操作,包括实验器材的添加、实验条件的改变、数据采集以及实验结果的模拟、分析。
它包含了虚拟仿真技术、计算机技术、实验技术、网络技术与专业等多方面理论知识。
1.2.2远程指导模块
远程指导模块是基于网络的虚拟实验平台的一个通信模块,是基于WindowsSocket编程,使用Client/Server(客户端/服务器)结构来实现模块的功能,以VC为开发环境,同时以HOOK技术和多线程技术作为基础,再利用API相关函数来实现指导端和被指导端的互动。
1.3项目要求
1.3.1功能要求
完成远程指导的基本功能,指导端和被指导端能够进行P2P网络通信,指导端能够控制被指导端的鼠标和键盘,并且能够存储相关信息,还能够对鼠标进行动态控制和指导键盘的输入。
1.3.2Client/Server(客户端/服务器)结构工作过程
Client/Server(客户端/服务器)结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势,在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户机/服务器模式(client/server),即客户向服务器提出请求,服务器接收到请求后,提供相应的服务。
客户机/服务器模式的建立基于以下两点:
首先,建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。
其次,网络之间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就是基于客户机/服务器模式的TCP/IP:
客户机/服务器模式在操作过程中采取的是主动请求的方式。
首先服务器方要先启动,并根据请求提供相应的服务:
打开一个通信通道并告知本地主机,它愿意在某一地址和端口上接收客户请求。
等待客户请求到达该端口。
接收到重复服务请求,处理该请求并发送应答信号。
接收到并发服务请求,要激活一个新的进程(或线程)来处理这个客户请求。
新进程(或线程)处理此客户请求,并不需要对其它请求做出应答。
服务完成后,关闭此新进程与客户的通信链路,并终止。
返回第二步,等待另一客户请求,关闭服务器。
客户方:
打开一个通信通道,并连接到服务器所在主机的特定端口。
向服务器发送服务请求报文,等待并接收应答;继续提出请求。
请求结束后关闭通信通道并终止。
2网络基础知识简介
2.1OSI与TCP/IP参考模型的对应关系
2.1.1OSI参考模型
国际标准化组织(ISO)开发了开放式系统互联(OSI)参考模型,以促进计算机系统的开放互联。
开放式互联就是可在多个厂家的环境中支持互联。
该模型为计算机间开放式通信所需要定义的功能层次建立了全球标准。
OSI模型将通信会话需要的各种进程划分成7个相对独立的功能层次,这些层次的组织是以在一个通信会话中事件发生的自然顺序为基础的。
表1描述了OSI,1-3层提供了网络访问,4-7层用于支持端端通信。
1、物理层是OSI模型的最低层,它建立在物理通信介质的基础上,规定了机械的、电气的功能;该层负责建立、保持和拆除物理链路;规定如何在此链路上传送原始比特流;比特如何编码,使用的电平,极性,连接插头插座的插脚如何分配等。
所以在物理层数据的传送单位是比特(bit)。
2、数据链路层它把相邻两个节点间不可靠的物理链路变成可靠的无差错的逻辑链路,包括把原始比特流分帧(frame)、顺序、排序、设置检错、确认、重发、流控等功能;数据链路层传动信息的单位是frame,每帧(frame)包括一定数量的数据和一些必要的控制信息,在每帧(frame)的控制信息中,包括同步信息、地址信息、流量信息等;同物理层相似,数据链路层负责建立、维护和释放数据链路。
3、网络层,它连接网络中任何两个计算机点,从一个节点上接收数据,正确的传送到另一个节点;在网络层,传送的信息单位是分组或包(packet)。
网络层的主要任务是要选择合适的路由和交换节点,透明地向目的站交付发送站所发的分组或包,这里的透明表示收发两端好像是直接连通的,另外网络层还要解决网络互连、拥挤控制等问题。
上述三层组成了所谓的通信子网,用户计算机连接到此子网上。
通信子网负责把一个地方的数据可靠地传送到另一个地方,但并未实现两个地方主机上进行进程之间的通信,通信子网的主要功能是面向通信的。
4、传输层上真正地实现了端对端通信,把数据可靠地从一方的用户进程或程序送到另一方的用户进程或程序。
这一层的控制通常由通信两端的计算机完成。
中间节点一般不提供这一层的服务,这一层的通信与通信子网无关。
从这一层开始的以上各层全部是针对通信的最终的源端目的端计算机的进程之间的。
传输层传送的信息单位是报文(message)。
传输层向上一层提供一个可靠的端一端服务,使上一层看不见下面几层的通信细节。
正因为如此,传输层成为网络体系结构中关键的一层,对于传输层的功能,主要在主机内实现。
而对于物理层、数据链路层以及网络层的功能均能在报文接口机中实现。
对于传输层之上的各个层次的功能通常在主机中实现。
5、会话层又称对话层会话层允许两个计算机上的用户进程建立对话连接,双方相互确认身份,协商对话连接的细节;它可管理对话是双向同时进行的,还是任何时刻只能一个方向进行。
在后一种情况下,对话层控制哪一方有权发送数据;对话层还提供同步机制,在数据流中插入同步点机制,在每次网络出现故障后可以仅重传最近一个同步点以后的数据,而不必从头开始。
以上两层为两个计算机上的用户进程或程序之间提供了正确传送数据的手段。
6、表示层主要解决用户信息的语法表示问题。
表示层将数据从适合于某一系统的语法转变为适合于OSI系统内部使用的语法。
具体地讲,表示层对传送的用户数据进行翻译、编码和变换,使得不同类型的机器对数据信息的不同表示方法可以相互理解。
7、应用层主要处理资源可用性和安全问题,它包含了大量人们普遍需要的协议,如FTP、TELNET、HTTP、SMTP等。
最近几年,应用层协议发展很快,出现了很多新的应用,如ICQ、Multimediastream等。
2.1.2TCP/IP参考模型
与OSI参考模型不同,TCP/IP模(表2)更侧重于互联设备间的数据传送,而不是严格的功能层次划分。
它通过解释功能层次分布的重要性来做到这点,但仍为设计者具体实现协议留下很大的余地。
因此,OSI参考模型在解释互联网络通信机制比较适合,但TCP/IP成为了互联网络协议的市场标准。
TCP/IP老-模型是在它所解释的协议出现很久以后才发展起来的,更重要的是,在于它更强调功能分布而不是严格的功能层次的划分,因此它比OSI模型更灵活。
1应用层
应用层包括SMTP,FTP,HTTP,NFS,NIS,LPD,TelnetfIIRemoteLogin应用层包括一些服务,这些服务在OSI中由独立的三层实现。
这些服务是和用户相关的认证、数据处理以及压缩。
包括电子邮件、浏览器、Telnet以及其他的Internet应用。
2传输层
传输层包括TCP(TransportControlProtocol,传输控制协议)和UDP(UserDatagramProtocol,用户数据报协议)。
UDP几乎不进行检查,而TCP提供传输保证。
与OSI中传输层不一样,TCP不保证报文的准确传输。
TCP为两台主机提供高可靠性的数据通信。
而另一方面,UDP则为应用层提供一种非常简单的服务,它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。
任何必需的可靠性必须由应用层来提供。
3网络层
TCP/IP协议族中,网络层由以下协议组成:
ICMP(Internt联网托制报文协议)、IP(网际协议)、IGMP(Internet组管理协议)、RIP,OSPF和路由的EGP网络层处理报文的路由管理。
4链路层
链路层包括ARP和RARP,负责报文传输。
链路层管理网络的连接并提供网络上的报文输入/输出。
表1OSI模型
0SI参考模型
层次描述
OSI层次号
应用层
7
表示层
6
会话层
5
传输层
4
网络层
3
数据链路层
2
物理层
1
表2TCP/IP模型
TCP/IP参考模型层
次描述
TCP/IP层次号
应用层
4
传输层
3
网络层
2
数据链路层
1
2.2WindowsSocket编程原理及操作步骤
WindowsSockets是MicrosoftWindows的网络程序设计接口,它是从BerkeleySockets扩展而来的,以动态链接库的形式提供给我们使用。
WindowsSockets在继承了BerkeleySockets主要特征的基础上,又对它进行了重要扩充。
这些扩充主要是提供了一些异步函数,并增加了符合Windows消息驱动特性的网络事件异步选择机制。
WindowsSockets1.1和BerkeleySockets都是基于TCP/IP协议的;WindowsSockets2从WindowsSockets1.1发展而来,与协议无关并向下兼容,可以使用任何底层传输协议提供的通信能力,来为上层应用程序完成网络数据通讯,而不关心底层网络链路的通讯情况,真正实现了底层网络通讯对应用程序的透明。
流式套接字(SOCK_STREAM)
提供面向连接、可靠的数据传输服务,数据无差错、无重复的发送,且按发送顺序接收。
数据报式套接字(SOCK_DGRAM)
提供无连接服务。
数据包以“独立包”形式发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。
原始套接字(SOCK_RAW)。
基于TCP(面向连接)的socket编程:
服务器端程序:
1、创建套接字(socket)。
2、将套接字绑定到一个本地地址和端口上(bind)。
3、将套接字设为监听模式,准备接收客户请求(listen)。
4、等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)。
5、用返回的套接字和客户端进行通信(send/recv)。
6、返回,等待另一客户请求。
7、关闭套接字。
客户端程序:
1、创建套接字(socket)。
2、向服务器发出连接请求(connect)。
3、和服务器端进行通信(send/recv)。
4、关闭套接字。
基于UDP(面向无连接)的socket编程:
服务器端(接收端)程序:
1、创建套接字(socket)。
2、将套接字绑定到一个本地地址和端口上(bind)。
3、等待接收数据(recvfrom)。
4、关闭套接字。
客户端(发送端)程序:
1、创建套接字(socket)。
2、向服务器发送数据(sendto)。
3、关闭套接字。
相关函数说明;
intbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);这个函数接收三个参数。
第一个参数s指定要绑定的套接字,第二个参数指定了该套接字的本地地址信息,是指向sockaddr结构的指针变量,由于该地址结构是为所有的地址家族准备的,这个结构可能(通常会)随所使用的网络协议不同而不同,所以,要用第三个参数指定该地址结构的长度。
sockaddr结构定义如下:
structsockaddr{
u_shortsa_family;
charsa_data[14];
};
sockaddr的第一个字段sa_family指定该地址家族,在这里必须设为AF_INET。
sa_data仅仅是表示要求一块内存分配区,起到占位的作用,该区域中指定与协议相关的具体地址信息。
由于实际要求的只是内存区,所以对于不同的协议家族,用不同的结构来替换sockaddr。
除了sa_family外,sockaddr是按网络字节顺序表示的。
在TCP/IP中,我们可以用sockaddr_in结构替换sockaddr,以方便我们填写地址信息。
sockaddr_in的定义如下:
structsockaddr_in{
shortsin_family;
unsignedshortsin_port;
struct in_addrsin_addr;
charsin_zero[8];
};
其中,sin_family表示地址族,对于IP地址,sin_family成员将一直是AF_INET。
成员sin_port指定的是将要分配给套接字的端口。
成员sin_addr给出的是套接字的主机IP地址。
而成员sin_zero只是一个填充数,以使sockaddr_in结构和sockaddr结构的长度一样。
如果这个函数调用成功,它将返回0。
如果调用失败,这个函数就会返回一个SOCKET_ERROR,错误信息可以通过WSAGetLastError函数返回。
将IP地址指定为INADDR_ANY,允许套接字向任何分配给本地机器的IP地址发送或接收数据。
多数情况下,每个机器只有一个IP地址,但有的机器可能会有多个网卡,每个网卡都可以有自己的IP地址,用INADDR_ANY可以简化应用程序的编写。
将地址指定为INADDR_ANY,允许一个独立应用接受发自多个接口的回应。
如果我们只想让套接字使用多个IP中的一个地址,就必须指定实际地址,要做到这一点,可以用inet_addr()函数,这个函数需要一个字符串作为其参数,该字符串指定了以点分十进制格式表示的IP地址(如192.168.0.16)。
而且inet_addr()函数会返回一个适合分配给S_addr的u_long类型的数值。
inet_ntoa()函数会完成相反的转换,它接受一个in_addr结构体类型的参数并返回一个以点分十进制格式表示的IP地址字符串。
2.3P2P网络介绍
P2P技术源于局域网共享,其目标是改变人们通过服务器中转交换文件的传统方式,达到自由交换资源的目的。
IBM为P2P下了如下定义:
系统由若干互联协作的计算机构成,且至少具有如下特征之一:
系统依存于边缘化(非中央式服务器)设备的主动协作,每个成员直接从其他成员而不是从服务器的参与中受益;系统中成员同时扮演服务器与客户端的角色;系统应用的用户能够意识到彼此的存在,构成一个虚拟或实际的群体。
P2P网络是互联网整体架构的基础,互联网中最基本的TCP/IP协议并没有客户端和服务器的概念,在通讯过程中,所有的设备都是平等的一端。
P2P技术改变了“内容”所在的位置,使其正在从“中心”走向“边缘”,也就是说不再如C\S模式将内容存于主要的服务器上,而是存在所有用户的PC机上。
广义的P2P网络将P2P网络划分为纯分散式P2P网络(如gnutella模型)、超级结点式网络和混合式P2P网络等大类。
3相关函数分析与代码实现
3.1多线程
3.1.1进程介绍
进程:
通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动。
进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源
进程由两个部分组成:
1、操作系统用来管理进程的内核对象。
内核对象也是系统用来存放关于进程的统计信息的地方。
2、地址空间。
它包含所有可执行模块或DLL模块的代码和数据。
它还包含动态内存分配的空间。
如线程堆栈和堆分配空间。
3.1.2线程介绍
线程由两个部分组成:
1、线程的内核对象,操作系统用它来对线程实施管理。
内核对象也是系统用来存放线程统计信息的地方。
2、线程堆栈,它用于维护线程在执行代码时需要的所有参数和局部变量。
当创建线程时,系统创建一个线程内核对象。
该线程内核对象不是线程本身,而是操作系统用来管理线程的较小的数据结构。
可以将线程内核对象视为由关于线程的统计信息组成的一个小型数据结构。
线程总是在某个进程环境中创建。
系统从进程的地址空间中分配内存,供线程的堆栈使用。
新线程运行的进程环境与创建线程的环境相同。
因此,新线程可以访问进程的内核对象的所有句柄、进程中的所有内存和在这个相同的进程中的所有其他线程的堆栈。
这使得单个进程中的多个线程确实能够非常容易地互相通信。
3.1.3进程与线程的关系
进程是不活泼的。
进程从来不执行任何东西,它只
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 毕业设计 网络 虚拟 实验 平台 构建 测试