机房监控系统的设计与实现论文.docx
《机房监控系统的设计与实现论文.docx》由会员分享,可在线阅读,更多相关《机房监控系统的设计与实现论文.docx(37页珍藏版)》请在冰豆网上搜索。
机房监控系统的设计与实现论文
机房监控系统的设计与实现
摘要
为提高机房使用效率,净化上机环境,杜绝个别用户使用机房内电脑做违规的事情,为机房管理员提供一个好的机房监控系统是必要的。
作者在对机房微机管理过程进行了详细调查后,参考了一些网吧的微机管理系统,获得了机房监控系统的设计思路。
机房管理系统应当能使管理员极其方便的获取某台微机的屏幕视图,锁定某台电脑的键盘和鼠标输入,并能发送消息给指定的电脑用户。
本论文从理论上分析了实现机房监控系统所需要的基础技术的原理,并以VC++6.0作为开发工具,在Win32平台下实现了一个机房监控系统。
论文第二部分简述了TCP/IP协议以及Socket编程技术,第三部分讲述了系统的设计目标和通信协议,第四章则介绍了实现过程中使用的核心技术,包括屏幕截图、锁定屏幕以及服务器端和客户端的通信。
通过本文的研究,为机房监控系统的设计和实现展示了一个完整的方案,具有一定参考价值。
关键词:
机房监控系统;屏幕截图;锁定屏幕;Socket
TheDesignandImplementationoftheComputerRoomMonitorandControlSystem
Abstract
Itisnecessarytoprovideacomputerroommonitorandcontrolsystemwithgoodqualitysothattheuserswillobeytheroomrulesandtheroomcanworkeffectivelyinasteadyenvironment.AfteranalyzingtheprocessofthecomputerroommanagementandstudyingsomeCyber-Cafemanagementsystem,theconceptframeworkofthecomputerroommonitorandcontrolsystemwasgained.Atleast,themonitorsystemmustprovideabilitiestosnapthescreenofthecomputerspecifiedbythemanager,todisabledtheinputfunctionofthekeyboardandthemouseandtosendmessagestothecomputerusers.
ThisarticleenumeratedthetechnologiesneededfortheimplementationofthemonitorsystemandintroducedindetailabouttheissuethathowtobuildaWin32executablesystembyusingtheVC++6.0asthedevelopmenttools.Inthisarticle,the2ndchapterintroducedtheTCP/IPprotocolandtheSocketprogramming;the3rdchapterdescribedthedesigngoalsandthecommunicationprotocol;the4thchaptercoveredthetechnologycoresofthemonitorandcontrolsystem,whichwerescreensnapping,screenlockingandcommunicationbetweenserverandclient.Thisarticleadvancedacompletesolutionforthedesignandimplementationofthecomputerroommonitorsystemandthesolutionwillbereferenceforsimilarapplying.
Keywords:
computerroommonitorsystem;snapscreen;lockscreen;socket
论文总页数:
31页
1引言
1.1课题背景
当今时代是一个信息种类多元化,信息量巨大化,传播速度急速化的时代。
要积极面临这种现状,就要能快速的处理各种信息,从而引申出人们对信息处理工具的高度关注。
而各种电子设备,尤其是电脑等硬件设备的出现,给人们的日常生活带来极大的变化。
随着计算机网络的出现,更使得人们的信息处理方式发生了革命性的改变。
毫无疑问,计算机以及由计算机组成的计算机网络已经成为当今时代最佳的信息处理工具。
掌握这个工具对于科研和学习有着重要意义。
鉴于这种情况,现在许多学校都提供了微机室,让在校学生可以很好的学习计算机操作,并使用计算机辅助学习。
对于同学们来说,这本来是个很好的机会,但有个别同学未能珍惜这个机会,他们没有好好利用这些微机进行学习和研究,而是在机房内打游戏或者闲聊等,甚至有人利用电脑进行违反法规的活动。
这些同学不但浪费了自身的学习机会,同时也浪费了学校的宝贵资源,而且给周围的同学造成了很不好的影响。
因此,如何对机房进行有效的管理成为了一个不容忽视的问题。
对于机房管理,一方面应该设立专门的管理员,拟定详细的机房使用规则;另一方面,也应该配备强大的管理软件,辅助管理员进行管理。
因此,如何设计和实现机房监控系统成为了本次课题的研究问题。
1.2内容介绍
文章在第二章介绍了一些基本的技术原理,涉及到TCP/IP协议、Socket技术、Win32编程等概念,这些都是实现机房监控系统的基础技术。
在第三章,首先讨论了机房监控系统应该具备哪些功能,接着设计出了服务器端和客户端器的通信协议。
在第四章,首先讲述了用户界面的实现,接着着重介绍了几个核心技术的实现,包括如何对某个特定客户端进行屏幕截图,如何锁定指定客户端的屏幕以及如何在服务器端和客户端的进行通信。
2相关技术原理介绍
2.1TCP/IP协议
2.1.1TCP/IP协议简介
所谓协议是一套用技术术语描述某些事物应该如何做的规则。
如果执行不同的协议(一方知道某事的概念,但另一方却不知道),那么他们会因各自的协议无法沟通而完不成有用的工作。
在计算机网络领域中,为了完成一项任务,所涉及的两个(或多个)通信实体必须运行同样的协议。
Internet是由众多的计算机网络交错连接形成的网际网,作为Internet成员的各种网络在通讯中分别执行自己的协议。
所谓Internet协议是指在Internet的网络之间以及各成员网内部交换信息时要求遵循的协议。
在Internet中,到处运行着协议,凡是涉及两个或多个远程实体的通信活动均由协议来支配。
协议定义了两个或多个通信实体间所交换消息的格式与顺序,以及在发出和/或收到一个消息或者发生其他事件所采取的行动。
TCP/IP是Internet网络上使用的通用协议。
Internet依靠上千个网络和百万计的计算机,而TCP/IP是把它们合在一起的粘结剂。
TCP/IP的目标是提供高速网络通信链路。
TCP/IP的实际名字来源于两个最重要的协议:
TCP协议与IP协议,其中传输控制协议TCP对应于开放系统互联0SI参考模型的传输层协议;网络连接协议IP则对应于OSI参考模型的网络层协议。
所以TCP/IP分别是Internet在传输层和网络层执行的协议。
2.1.2TCP协议
TCP协议是互联网传输层协议。
TCP服务模型包括面向连接的服务和可靠的数据传输服务,调用TCP作为其传输协议的应用同时取得这两种服务。
总体来说,TCP保证递送全部数据,但对递送速率和所经历的延迟不加保证。
电子邮件、远程终端访问、Web和文件传送都使用TCP。
这些应用选择TCP的主要原因在于TCP提供可靠的数据传输服务,能够保证所有数据最终到达其目的地。
TCP的传输实体一般为软件实现:
一部分是用户进程,一部分是操作系统的部分核心(管理TCP字节流,实现与IP层的接口)。
TCP的传输服务是通过在收发双方创建套接字Socket来实现的;Socket的地址是通过IP地址与端口号来标识的。
每条TCP的传输连接用发送端套接字、接收端套接字来表示,是点到点的全双工通道(全双工——支持同时的双向传输)运行与TCP上的应用程序包括FTP、HTTP、SMTP和TELNET。
在Internet内部,从主机传送到主机的信息不是一个恒定的流,而是把数据分解成小包,即数据包。
例如你要发一分很长的电子邮件(E-mail)给一位朋友,TCP就将该信息分成很多个数据包,每一个数据包用一序号和接收地址来标记。
此外TCP还插入一些纠错信息。
接着数据包被传过网络,即把它们传送给远程的主机这就是IP的工作。
在另一端TCP接收数据并检查错误。
如果有错误发生,TCP就可以要求重发信息。
换句话说,IP的工作是把原始数据(数据包)从一端传送到另一端;TCP的工作就是管理这种流动并确保其数据是正确的。
把数据分解成数据包有很多的好处。
首先,它允许Internet让很多不同的用户在同一时间用同一通讯线路。
因为这些数据包不必一起输送,所以通讯线路可以载着所有类型的数据包按它们自己的路径从一地到另一地。
就如同一条高速公路上,各类汽车(即使它们开向不同的地方)都在公共道路上行驶。
当数据包传输时,它们沿规定的路由从主机到主机,一直到它们到达最终目的地。
这意味着Internet很具灵活性。
如果一个特定的连接中断了,控制数据流动的计算机通常可以找到另一条路由。
事实上,在单一数据传输中,多个数据包完全可能沿不同的路由传输。
当条件改变时,网络可获得当时最好的连接。
如当网络的某一部分过载,数据包可以改变路线去走那些比较空闲的线路。
用数据包传输的另一个好处是,当某处出错,只须重新传送单个数据包,而不是整个信息。
这样会大大加快Internet的传输总速度。
这种灵活性产生很高的可靠性。
Internet运行非常好,虽然所有数据包都必须通过很多计算机,但它可以用几秒钟就把一个文件从一主机传输到另一主机,尽管它们相距很远。
2.1.3IP协议
网际网络协议(IP)用于数据报交换网络互连系统种,是TCP/IP协议堆栈所采用的传输协议。
IP协议的基本数据形态是数据元(datagram),一般都成为数据报,此协议提供了从来源主机到目的主机之间数据报的传输机制。
IP数据报中携带这来源地址和目的地址,利用这些地址数据,可将数据报传输到目的主机。
IP协议具有数据报分割以及重组机制,需要的时候可以将数据报作适当的分割以及重组,以便能够在网络中传输。
IP协议是网络层协议,它是一种不可靠的,无连接导向的协议,无论是端对端或者路由器对路由器,都不提供可靠的传输,也不会提供确认信息,除了报头校验和外,IP协议本身没有数据的错误控制机制,一旦数据发生错误或者未能完整的接收,都不能重传。
甚至即使是只有一个字节发生错误或者没有收到,也必须将整个数据报都丢弃。
虽然,IP协议提供了数据报的传输机制,但是并没有提供传输的可靠性、流量控制、顺序性服务机制,它所提供的只是最佳化的传输服务。
2.1.4TCP/IP模型
习惯上,人们把Internet的通讯协议笼统地称为TCP/IP协议,也有人把Internet称为TCP/IP网或TCP/IPInternet网。
在这种意义下,Internet的TCP/IP协议可以说就是基于四种模型的协议:
即应用层、传输层、网络层和网络访问层。
其中网络访问层又分为网络接口层(链路层)和最基础的物理层。
所以也可以说Internet的网络协议是基于五层模型的协议。
根据TCP/IP协议,互联网分为4层,加上最底层的硬件层一共是5层
应用层(第五层)
传输层(第四层)
网络层(第三层)
链路层(第二层)
物理层(第一层)
图2-1TCP/IP协议分层
1)物理层:
物理层的任务是把帧中的各位从一个节点移往下一个节点。
这一层的协议也取决于链路,而进一步取决于链路真正的传输介质。
物理层提供了一个基本机制:
对二进制数据(比特)进行编码(发送到物理介质)和解码(从物理介质接收),例如10Mbit/s(bit/s指比特每秒)以太网的曼彻斯特编码、光纤分布式数据接口(FiberDistributeddataInterface,简称FDDI)的4B/5B编码;物理层也负责通知第二层(链路层)何时访问介质。
物理层以比特流的方式传送来自链路层的数据,而不理会数据的含义或格式;同样,它接收数据以后,不加分析直接传给链路层。
物理层也定义与介质的物理连接机制,但不是介质本身,按照参考模型的原理,实际的物理介质在物理层之下。
2)链路层:
链路层的任务是把完整的帧从一个网络组建移往某个紧邻的组件,负责管理数据格式。
它定义了将数据组成正确帧的规程和在网络中传输帧的规程,帧是指一串数据,它是数据在网络中传输的单位。
网络层在源端和目的端之间经由一系列分组交换机(路由器)路由分组。
为了将一个分组从一个节点(主机或分组交换机)移往其路径上的下一个节点,网络层必须依赖由链路层提供的服务。
链路层提供了对链路的管理,链路层提供的服务取决于应用在链路上的特定链路层协议。
分组从源端到目的端一般需要经过多个链路,每个分组沿其路径到达不同链路是,可能有不同的链路层协议来处理。
既是说,IP从不同的链路层协议获取的服务会不一样。
链路层负责监督相邻网络节点的信息流动,它使用检错或纠错技术来确保正确的传输:
当链路检测到错误时,它请求重发,或是根据情况纠正。
此外,链路层还要解决流量控制的问题。
3)网络层:
网络层提供越过多个网络的选路功能,为端点提供无连接的数据报访问,并定义端到端通过整个互联网网络的寻址功能。
网络层负责寻址、打包以及从一台计算机通过一个或多个路由器到最终目标的包转发机制。
网络层的核心协议有:
IP、ARP/RARP、ICMP和IGMP。
IP协议(Internetprotocol,简称IP)是TCP/IP模型的核心,它是一个路由协议,负责IP寻址、路由选择、分段及包重组。
4)传输层:
传输层给应用提供在其客户端和服务器之间传输应用层消息的服务。
即传输层负责为两个用户进程之间建立、管理和拆除可靠而又有效的端到端连接。
传输层的核心协议是传输控制协议TCP(TransmissionControlProtocol)和用户数据报协议UDP(UserDatagramProtocol)。
TCP给其应用提供面向连接的服务,该服务包括应用层消息往目的地有保证的递送以及流量控制(既发送端和接收端之间速度的匹配)。
TCP还把长数据块分割成较小的段,并提供拥塞控制机制。
这样当网络处于拥塞状态时,源端会抑制其发送速率。
UDP协议给其应用提供无连接的服务,是一个几乎没有任何修饰的服务。
5)应用层:
应用层负责支持网络应用,直接与用户或应用程序通信,它给应用程序提供访问其他层服务的能力并定义应用程序用于交换数据的协议。
应用层包括许多协议,例如支持Web的HTTP、支持文件传送的FTP、支持电子邮件的SMTP协议都建立在这一层。
TCP/IP应用程序使用的应用层接口有Windows套接字(Winsock)、NetBIOS等。
Windows套接字提供Windows下的标准应用编程接口;NetBIOS是工业标准接口,用于访问协议服务,如会话、数据报和名字解析等。
Internet的核心层是网络层和传输层,相应的核心协议是IP协议和TCP协议。
IP协议的主要功能包括无连结数据报传送﹑数据报寻径以及差错处理三部分。
IP协议的特点是点到点的,IP对等实体间的通信不经过中间机器,对等实体所在的机器位于同一物理网络,对等机器之间有直接的物理连接。
IP层的主要功能是屏蔽下面物理层的差别,向上一层提供一致的数据格式。
所有要传输的数据,被按照一定的格式分组封装层IP数据报,数据报单元通过寻径等机制进行传输,在接收方数据报进行重组,得到最初要传送的数据。
由于IP协议是不可靠的数据传输协议,由于网络的拥塞而发生的数据丢失等情况是不可避免的,因此Internet还必须有一定的控制重传机制,这就是差错与控制报文协议(ICMP)。
尽管计算机通过安装IP软件,从而保证了计算机之间可以发送和接收数据,但IP协议还不能解决数据分组在传输过程中可能出现的问题。
因此,若要解决可能出现的问题,还需要TCP协议来提供可靠的并且无差错的通信服务。
TCP协议被称作一种端对端协议。
这是因为它为两台计算机之间的连接起了重要作用:
当一台计算机需要与另一台远程计算机连接时,TCP协议会让它们建立一个连接、发送和接收数据以及终止连接。
传输控制协议TCP协议利用重发技术和拥塞控制机制,向应用程序提供可靠的通信连接,使它能够自动适应网上的各种变化。
即使在Internet暂时出现堵塞的情况下,TCP也能够保证通信的可靠。
互联网是一个庞大的国际性网络,网路上的拥挤和空闲时间总是交替不定的,加上传送的距离也远近不同,所以传输数据所用时间也会变化不定。
TCP协议具有自动调整"超时值"的功能,能很好地适应Internet上各种各样的变化,确保传输数值的正确。
IP协议只保证计算机能发送和接收分组数据,而TCP协议则可提供一个可靠的、可流控的、全双工的信息流传输服务。
虽然IP和TCP这两个协议的功能不尽相同,也可以分开单独使用,但它们是在同一时期作为一个协议来设计的,并且在功能上也是互补的。
只有两者的结合,才能保证Internet在复杂的环境下正常运行。
凡是要连接到Internet的计算机,都必须同时安装和使用这两个协议,因此在实际中常把这两个协议统称作TCP/IP协议。
2.2Socket技术
2.2.1Socket基本概念
20世纪80年代初,美国政府的高级研究机构(ARPA)给加利福尼亚大学Berkeley分校提供资金,让他们在UNIX操作系统下实现TCP/IP协议。
在这个项目中,研究人员为TCP/IP网络通信开发了API(应用程序接口)。
这个API称为Socket接口。
如今Socket接口是TCP/IP网络最为通用的API,也是在Internet上进行应用开发最为通用的API。
Internet是有不同种类的网络互连而成,实现不同网络及计算机之间交互操作的关键问题是由TCP/IP协议来解决的。
TCP/IP协议的核心是传输层协议(TCP和UDP)、网络层协议(IP)和网络接口层,前两层在操作系统内核中实现。
操作系统内核是不能直接为一般用户所感受到的,一般用户感受到的只有应用程序(包括系统应用程序),即各种应用程序构成了操作系统的用户视图。
两者之间的接口是网络编程界面(程序员界面)。
因此,TCP/IP网络环境下的应用程序也不是直接与TCP/IP核心打交道,而是与网络应用编程接口(套接字,socket)打交道,编程接口构成了核心协议的用户视图。
实际上,Socket在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信。
应用程序在网络上传输,接收的信息都通过这个Socket接口来实现。
在应用开发中,就像使用文件句柄一样,可以对Socket句柄进行读、写操作。
可以把Socket看成是一根连接线,当在两台计算机之间建立了一个Socket之后,两台计算机就可以通过这根连接线来完成信息交互,所做的仅仅是向这根连接线里写入数据,再从其中读出数据,而不必担心会不会由信息丢失,Socket会负责照看好数据。
Socket用于表达两台机器之间的连接‘终端’。
一个网络应用涉及两台(或两台以上)不同主机中跨网络彼此通信的两个进程。
这两个进程通过经由各自的套接字(Socket)发送和接收消息彼此通信。
对于一个给定的连接,每台机器上都有一个套接字。
有点像我们打电话,用电缆把电话连接起来,中间的物理结构和具体实现过程我们不必了解,只要我们能进行通话即可。
套接字是单台主机内应用层和传输层之间的接口。
套接字也用于指代应用程序和网络之间的应用程序接口(applicationprograminterface,简称API),因为它又是用于构造互联网中的网络应用程序的编程接口。
当我们进行编程时,需要用到Socket接口,Socket接口定义了许多函数或例程,我们可以直接调用它们实现网络连接、通信等功能。
Socket接口为我们建立通信信道,我们可以通过这条通道来与一台或多台计算机进行连接。
套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了套接字规范的计算机之间的通信成为可能。
对于应用程序来说,它就像一个服务协议插座一样,各种不同的协议,对应不同的端口。
我们可以把套接字看作相应进程上的“门”:
进程把消息发送到网络或从网络接收消息都得经过自身得套接字。
当一个进程想给另一台主机中的另一个进程发送消息是,它就把该消息推出自家的门。
该进程认定在这扇门的另一侧有一个传输设施会把这个消息传输到目的进程的门口。
在服务器进程处于运行状态的情况下,客户进程就能够初始化一个到服务器的TCP连接了,这是通过在客户程序中创建一个套接字对象来完成的,当客户创建了它的套接字对象的时候,它详细说明了服务器进程的地址,也就是,服务器的IP地址和进程的端口号,一旦创建了套接字对象,客户端的TCP就发起一个三次握手,并建立一个和服务器的TCP连接,三次握手对客户和服务器程序来说是完全透明的。
2.2.2Socket类型及规范
可以提供给用户使用的套接字有两种,它们分别是数据报套接字和流式套接字:
1)流式套接字(SOCKET_STREAM)
提供了面向连接、双向可靠的数据流传输服务,数据无出错,无重复地发送且按发送顺序接收。
内设流量控制,避免数据流超限;数据被看作是字节流,无长度限制。
流式套接字使用传输控制协议(TCP)。
它提供了一种可靠的,面向连接的数据传输方式。
通常基于连接的流式套接字是设计客户机/服务器应用程序时的标准。
流式套接字主要用于大批量数据或者让数据按顺序无重复的到达目的地而使用
2)数据报式套接字(SOCKET_DGRAM)
提供了无连接服务。
数据包以独立形式被发送,不提供无错保证,数据可能丢失或者重复,并且接收顺序无序。
数据报套接字使用用户数据报协议(UDP)。
实际使用中,同一个分组数据报可能不止一次的被发送,一般要等到接收方发回确认收到的消息才会停止发送。
一般有两种套接字规范:
一种是针对UNIX系统的BerkelySocket规范;一种是占主流地位的Windowssockets(简称WinSock)规范,它是Microsoft以BerkelySocket规范为范例开发的windows下的网络编程接口。
Windowssocket规范定义并记录了如何使用API与Internet协议相连接,且所有的Windowssocket实现都支持流式套接字和数据报套接字。
应用程序调用Windowssocket的API实现相互之间的通信。
Windowssocket又利用下层的网络通信协议功能和操作系统调用实现实际的通信工作。
2.2.3WinSocketAPI
本文在软件实现上使用的Socket函数正是WindowsSocketAPI。
下面介绍几个重要的API:
一)WSAStartup函数
intWSAStartup(
WORDwVersionRequested,
LPWSADATAlpWSAData
);
使用Socke