欢迎光临第一论文网,权威的论文发表,我们将竭诚为您服务!
您的位置: 第一论文网 -> 科学教学论文 -> 文章内容

计算机实时监控系统的问题和策略分析

作者:第一论文网 更新时间:2015年10月26日 21:04:51

第1章  绪  论
1.1 课题背景
近年来由于互联网的飞速发展,计算机的应用逐渐扩展到了各个行业的内部,人类社会已经进入了信息化时代。为了实现内部资源的共享,局域网的应用得到了长足的发展,同时为了更好地利用互联网的功能,越来越多的公司、学校以及各种职能部门都提供了和互联网互联互通的功能。毫无疑问,这样的举措可以带来很多的益处,但是同时也应该注意到通过网络观看电影、进行网络游戏,甚至登录各种不健康网站等负面影响。由于这些行为不易发现和管理,因此如何有效地解决这个突出的问题成为人们关注的一个焦点。本课题是在这个背景下产生的,论文针对计算机和网络给管理方面带来的不利影响,论述了如何利用网络来充分发挥其积极作用,实现对局域网内计算机管理的信息化和自动化。
监控系统的一个简单含义就是通过某种方法对一些特定的情况进行实时的跟踪,如有异常现象发生,则发出警报信息同时对异常进行相应的处理,而减轻了工作的强度。从使用设备类型的角度上来划分,监控系统可以分为两类:以硬件为主的监控系统和以软件为主的监控系统[1]。前者主要是通过摄像头和各种传感器来完成监控功能,例如银行使用的闭路电视监视系统,就是采用摄像头来录制任意一个时刻营业厅周围的场景;后者是随着网络和计算机的发展而产生的新的监控系统,互联网的普及和发展,既带来信息共享和资源交换方便的益处,同时也不可避免地带来了消极的因素,如网络病毒、恶意黑客程序等一直在威胁着计算机的安全,各种不健康的内容充斥着互联网,严重影响了网络的健康发展。为了抵御各种新的威胁,产生了以软件为主的监控系统,这类监控系统主要以防火墙为代表,本文所要介绍的监控管理系统就属于这来监控系统。
据国外数据统计,开通互联网办公的企业中,企业员工平均每天有超过二分之一的上班时间用来上网聊天,浏览娱乐色情网站或者处理个人事务[2]。我国各行业自从1999 年底开始接入 Internet 办公后,内部的局域网也存在着类似的问题。如浏览国家明令禁止的网站、工作时间上网打游戏聊天、下载和实际工作无关的电影、歌曲,甚至利用各行业的网络,对国内外的某些网站发起恶意攻击,这些行为某些已经违反了国家互联网的有关管理条例,更多的是消耗了网络带宽的资源,使网络得不到充分的利用,影响了正常的办公业务。因此如何加强对计算机的管理,更好地利用网络资源,为企事业单位服务成了日益突出的问题。
本课题开发的目的在于针对以上的现实问题,为了满足局域网的管理员的需求,需要有一套监控管理软件,对网络内的所有计算机进行实时有效的管理,充分发挥软件的监督作用。
1.2 国内外研究现状
从上个世纪 90 年代以来,随着科学技术的迅速发展,人们的生产行为、生活方式都发生了重大的变化,作为生活生产中非常重要的一项技术即监控技术的重要性正在逐渐被人们所认识和重视[3]。监控系统的演变,是一个从集中监控向网络监控的发展历史。早期的监控系统,采用大型仪表集中对各个重要设备的状态进行监视,并通过操作盘来进行集中式操作。而计算机监控系统是以监测控制计算机为主体,加上检测装置、执行机构与被监测控制的对象(生产过程)共同构成的整体。在该系统中,计算机实现了生产过程的检测、监督和控制功能。在现代企业的生产和管理中,大量的物理量、环境参数、工艺数据、特性参数需要进行实时检测、监督管理和自动控制。由于工业生产过程控制要求的高环境适应性、高实时性、和高可靠性等特点,自动控制与检测技术一直沿着自己的道路发展,测控领域所使用的通信技术都自成体系,许多通信协议不开放,而且大多数系统都是面向单台,或单一类型的设备。
随着生产力的进步,设备的分布越来越离散。单一的,各自独立的监测系统已不能适应工业化的需求,于是便产生了分布式系统。这种系统以计算机网络为基础,使系统资源分配趋于合理。但是由于目前运行的绝大多数分布式监测系统还只是在局域网上,通常的测控仅局限于同一地点,所以具有一定的地域局限性。Internet 能实现资源的共享,从而使人们有能力解决以前在极有限的资源下很难解决的问题,为远程监控系统的发展提供了有利的条件。远程监控是本地计算机通过网络系统如Internet/Intranet,对远端进行监视和控制,完成对分散控制网络的状态监控及设备的诊断维护等功能。我们通常把能够实现远程监控的通信媒体、计算机软件、硬件系统称为远程监控系统。在现场设备分布广泛或数据不易采集的场合,要能够及时地监视设备的运行状态并进行有效控制,这就是远程监控技术在工业生产上的需求。
随着网络技术的不断发展,远程监控将更多地应用在企业生产过程的管理中,专业技术人员可以通过互联网来管理和维护生产过程,优化生产工艺,提高设备的可用率,最终降低生产成本,提高效益。
局域网监控系统主要是对局域网内使用的计算机进行监控,用来查看任意一段时间内被控端计算机的使用情况,使用的是远程控制技术。远程监控软件是在远方机器允许的情况下,对其进行监控的一类软件。它由客户端(Client)和服务器端(Server)两部分组成。Server 端是应用于被控端计算机上的软件,Client 端是运行于监控端计算机上的软件。黑客使用的特洛伊木马技术也是这种远程监控技术,是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。
从远程监控程序的发展来看,基本上可以分为两个阶段,最初产生于以 UNIX 平台为主要操作系统时期,当时木马程序的功能相对简单,往往是将一段程序嵌入到系统文件中,用跳转指令来执行一些木马的功能,在这个时期木马的设计着和使用者大都是些技术人员,必须具备相当的网络和编程知识。而后随着 Windows 平台的日益普及,一些基于图形操作的木马程序也出现了,用户界面的改善,相应的木马入侵事也频繁出现,由于这个时期木马的功能已日趋完善,因此对服务器端的破坏也更大了。
远程监控软件实现的原理与木马类似,它使用木马的技术,但是用于对内监控,不行使它的破坏功能。现在这类软件正朝着如下的几个方向发展:
(1) 跨平台性:主要是针对 Windows 系统而言,如何让监控程序能够在不同的Windows 平台上运行是一个需要解决的难点。因为 Windows NT/2000/XP 都具有了权限的概念,这和 Windows 95/98 是不同的。另外一般的监控程序多少都使用了某些Windows 系统下特定的 API,因此如何能够设计出与 Windows 平台版本无关的监控系统是所有开发商们面临的一个难点。
(2) 模块化设计:模块化设计是一种潮流,现在的远程监控软件同样采用了模块化设计的概念。
(3) 更新更强的感染模式:传统的修改 INI 文件和注册表的手法,已经不能适应更加隐蔽的需要,目前很多木马的感染方式已经开始改变,象病毒一样感染Windows 下的文件,监控软件也需要解决隐蔽性的问题,因此木马的传播方式仍然可以借鉴。
(4) 即时通知:如果目标使用的是动态 IP,以扫描方式找 IP 地址太慢,现在的木马已经有了即使通知的功能,如 IRC、ICQ 通知等。
随着网络技术的飞速发展和监控范围的扩大,监控系统由过去的单机监控过渡到现在的网络监控,但目前还存在着一些问题。
首先,网络通信技术不足的问题。网络通信技术是远程监控技术中最为关键的技术,然而,目前网络通信一般简单采用 Socket 技术,甚至 FTP 或 E-Mail 等,这些技术无论在传输的数据量、编程的灵活性还是安全性方面都有很大的欠缺,特别是对于现场多个端点的数据采集,会大大增加编程的复杂度,不能满足远程监控技术对网络通信的需求。
其次,网络通信中多种结构并存的问题。目前的远程监控系统结构大多比较复杂,分布距离远,而且还存在着不同局域网,不同平台,甚至在同一局域网中的操作平台以及编程语言也可能有不同的问题,这就要求集成网络中的不同平台,实现相互之间的通信,而这些问题采用传统方法是难以解决的。
远程监控是国内外研究的前沿课题,国内外都展开了积极的研究。1997 年 1 月,首届基于 Internet 的远程监控诊断工作会议由斯坦福大学和麻省理工学院联合主办,有来自30个公司和研究机构的 50 多位代表到会。会议主要讨论了有关远程监控系统开放式体系、诊断信息规程、传输协议及对用户的合法限制等,并对未来技术发展作了展望。由斯坦福大学和麻省理工学院合作开发基于 Internet 的下一代远程监控诊断示范系统,这项工作同时也得到了制造业、计算机业和仪器仪表业的 Sun、HP、Boeing、Intel、Ford 等 12 家大公司的热情支持和通力配合。之后,由这些公司共同推出了一个实验性的系统 Testbed。Testbed 用嵌入式 Web 组网,用实时 JAVA 和 Bayesian Net 初步形成在 Internet 范围内的信息监控和诊断推理。
另外,许多国际组织,如 MIMOSA(Machinery Information Management OpenSystem Alliance)、SMFPT(Society for Machinery Failure Prevention Technology)、COMADEM(Condition Monition and Engineering Management)等,也纷纷通过网络进行设备监控与故障诊断咨询和技术推广工作,并制定了一些信息交换格式和标准。许多大公司也在他们的产品中加入了 Internet 的功能,如 Bently 公司的计算机在线设备运行监测系统 Data Manager 2000 可以通过网络动态数据交换(Net DDE)的方式向远程终端发送设备运行状态信息;著名的 National Instruments 公司也在它的产品 LabWindows/CVI以及Lab VIEW中加入了网络通讯处理模块,因而可以通过 WWW、FTP、E-mail 方式在网络范围内进行监控数据的传送。法国“ALARM”研究组对生产过程的智能报警和监控系统进行了长期研究,并在多个项目中进行了应用。
国内对于远程监控技术也开展了积极的研究[4]。目前,西安交大、华中科技大学、哈尔滨工业大学、南京理工大学等高校已取得了较为先进的研究成果,如西安交通大学研制的“大型旋转机械计算机状态监测系统及故障诊断系统 RMMD”、华中科技大学开发的“汽轮机工况监测和诊断系统 KBGMD”、哈尔滨工业大学的“微计算机化机组状态监视与故障诊断专家系统 MMMDES”等。
网络的快速发展和计算机的广泛应用,影响和冲击着传统的管理模式。传统的单纯依靠人力的管理,显然不适合今天的现实情况。这是因为操作者坐在计算机旁边具体在做些什么,管理者不能做出准确地判断。现代的计算机监控系统就是针对这种具体情况为管理者如何管理好局域网内的计算机,提供了一个新的管理模式。它完全通过编程实现对计算机使用情况进行监督,适合于局域网内的计算机管理,具有传统管理模式不可比拟的优势:
(1) 将管理者从需要查看显示器,来知道员工正在做什么的被动局面中解脱出来,只需要打开本地计算机上的监控端程序,就可以知道员工现在的工作状况和历史操作记录。
(2) 快速发展的计算机和互联网技术为这种方式提供了坚实的基础。随着计算机运行速度的提高和网络传输速度的加快,使得监控端可以像观看自己的显示器一样浏览其他机器,能够保证画面的连续性。
(3) 对于应用计算机的企业、学校等各个部门而言,不仅降低了管理者的工作复杂程度,同时可以更好的发挥计算机和互联网的功能,真正体现其自身的价值。
计算机领域经历了一场新的革命,它结合了现代控制技术、图形技术,其目标是随时随地为人们提供无缝的、高质量的、易用的、廉价的信息资源,使其能真正进入人们的生活。计算机监控系统的技术水平也从初期的模拟信息传输与控制飞速发展到了数字化、网络化信息传输与控制。
目前远程监控技术的主流是应用 Internet 技术,在 TCP/IP 协议和 WWW 规范的支持下,合理组织软件结构,使工作人员通过访问网络服务器来迅速获取自己权限下的所有信息并及时做出响应[5]。将来,嵌入式系统的发展会越来越迅速,越来越成熟,这项新技术迟早必将用于远程监控系统上,是监控系统未来发展方向之一。嵌入式监控系统可以使信息实现本地化处理,改善服务器性能,可以使每一个设备具备上网与服务功能,即每一个设备都可以独立进行服务,从而大大提高监控的质量和范围。
网络通信技术在测控系统中的应用还渗透到了传感器领域,将网络接口芯片与智能传感器集成起来,并把通信协议固化到智能传感器的 ROM 中,导致了网络传感器的产生。网络传感器继承了智能传感器的全部功能,并且能够和计算机网络进行通信,因而在现场总线控制系统中得到了广泛的应用,成为现场级数字化传感器。国外有不少仪器公司已研制出了各种各样的网络化传感器。国内在网络传感器方面的研究尚处于原理研究阶段,还没有成型的网络化传感器出现。
监控技术的发展始终与最新技术的发展息息相关,使用者不断对远程监控的简便性及实时性提出了更高的要求[6]。因此必须要更好地、更及时地应用最新技术,这样才能使得远程监控不断地发展,不断地满足人们的需求。
1.3 课题主要研究工作
本课题涉及到网络安全、计算机网络通信等多个领域技术,整个系统对响应速度、实时性、安全性和稳定性有着非常高的要求。本课题要完成的主要任务是基于 C/S 模式的整个系统的架构设计、需求分析、功能模块设计和具体的实现,重点完成客户端和服务器端各个模块的设计,并保证整个系统的稳定性、可靠性和扩展性,充分考虑后续阶段的开发。


 
第2章  开发工具及关键技术
2.1 开发工具
Microsoft Visual Basic(简称VB)是在Windows操作平台下设计应用程序的最迅速、最简捷的工具之一。不论是初学者还是专业开发人员,VB都为他们提供了一整套的工具,可以轻松方便开发应用程序。因此,VB一直被作为大多数初学者的首选入门编程语言。
“Visual”指的是采用可视化的开发图形用户界面(GUI)的方法,一般不需要编写大量代码去描述界面元素的外观和位置,而只要把需要的控件拖放到屏幕上的相应位置即可方便设计图形用户界面,“Basic”指得是BASIC语言,因为VB是在原有的BASIC语言的基础上发展而来的。
VB是Microsoft的一种通用程序设计语言,包含在Microsoft Excel、Microsoft Access等众多Windows应用软件中的VBA都使用VB语言,以供用户进行二次开放;目前制作网页使用较多的VBScript脚本语言也是VB的子集[7]。
利用VB的数据访问特性,用户可以对包括Microsoft SQL Server和其他企业数据库在内的大部分数据库格式创建数据库和前端应用程序,以及可调整的服务器端部件。利用Active技术,VB可使用如Microsoft Word字处理器、Microsoft Excel电子数据表及其他Windows应用程序提供的功能,甚至可直接使用由VB专业版或企业版创建的应用程序和对象。
用户最终创建的程序是一个真正的.EXE文件,可以自由发布。
2.2 客户机/服务器模式
1989 年,麻省理工学院的 Forrestoer Restarch 提出了 C/S 的计算模式,即客户机/服务器模式,C/S 模式定义了客户机如何和服务器进行数据及应用软件共享的技术。在 C/S 模式中,客户机/服务器则是就逻辑观点而言的定义。客户机是指运行用户服务请求程序,并将这些请求传送到服务器的计算机[8]。服务器则是指管理数据资源,响应并受理由客户机发出的请求,将计算结果传送给客户机的计算机。在 C/S 应用系统中,服务器可接受多个客户机的请求,并将请求排队或同时处理。
传统 C/S 系统主要有三部分:数据服务器、客户应用程序和网络。数据服务器负责管理系统资源。其主要上作是对多个用户提供高效的数据访问,以及实现数据的安全管理。客户应用程序主要实现用户与数据的交互,在 C/S 模式中,客户应用程序一般集表示逻辑和业务处理逻辑于一体,实现企业逻辑的集中处理。客户应用程序通过DBMS 的客户端组件实现用户对数据服务器的访问。网络和通信软件是 C/S 系统中客户和服务器之间数据交互的上具。通过网络,客户端应用程序和服务器协调上作,共同完成用户的数据处理请求。网络和通信软件一般是由操作系统完成的,DBMS 的客户端组件和服务器程序调用相应的通信接口,实现信息交互。
从本质上讲,传统 C/S 模式是一种两层结构模型。为了解决两层结构中存在的问题以及满足 Internet/Intranet 的兴起对于企业运作方式转变的需要,人们提出了多层C/S 结构。它是一种先进的协同应用程序开发模型,这种方案将 C/S 系统中各种各样组件划分为多“层”服务,它们共同组成一个应用程序。多层结构的 C/S 模型把数据库应用划分为几个逻辑层,用户层可以把注意力集中在数据显示和与用户的交互上,理想情况下,不需要知道数据是怎样存储和管理的[9]。这些层并不一定与网络上的具体物理位置相对应,它们只是概念上的层,借助这些概念可以开发出强大的基于组件的应用程序。使用这些方法设计应用程序,开发人员在网络上部署数据和进程时可以有相当大的灵活性,从而有利于实现最佳的性能、更好的安全性以及更方便的维护。三层结构是多层结构的一种最简单的实现形式,在实际应用过程中,中间层组件通常可以分为两个以上的层次。典型的三层结构计算模型如图 2-1 所示:
 
图2-1 三层结构
在三层结构中,客户层只提供应用的用户接口,它根据用户的操作调用相应的业务逻辑,它永远不会直接访问后台数据库,也称为表现层;业务层是应用系统的关键所在,它负责处理所有的用户请求,并且把处理结果返回给表现层;服务层提供数据库支持,维护数据,也称为数据层。
网络应用的最主要的模型就是 C/S 模型,其实质是“请求驱动”。C/S 模型最终可归结为一种“请求/应答”关系。一个请求总是首先被客户发出,然后服务器总是被动地接收请求,返回客户需要的结果。在客户发出一个请求之前,服务进程一直处于休眠状态。一个客户提出请求后,服务进程被“唤醒”并且为客户提供服务,对客户的请求做出所需要的应答。这一请求/应答相应的过程可以用图 2-2 所示。在本系统的设计过程中,采用 C/S 模式主要考虑了 C/S 模式所具有的以下特点。一是Client/Server 模型最重要的特点是非对等相互作用,即客户与服务器处于不平等的地位,服务器拥有客户所不具备的硬软件资源,客户和服务器分别是服务的请求者和提供者。实际上,网络中各个机器的资源是不平等的,网络的真正目的就是共享这些不均等的资源,Client/Server 模型的非对等相互作用特点也正好体现和适应了客观现实中资源的不均等现象[10]。二是技术性的,网络上不同主机进程间通信完全是异步的,通信时机具有随机性,所以必须有一种为通信双方的数据交换提供同步的机制,而Client/Server 模型对此机制提供了极好的支持。由于上述原因,Client/Server 模型由Sybase 公司首先提出并在实际中应用后,迅速获得了广泛的支持,事实上已成为网络应用的标准模式。三是可以更方便、更清晰地分工应用软件的设计任务。四是可以降低对客户机的要求,使客户机只需处理人机界面为主的工作,适应日益扩展的应用需求.五是防止客户机上有权连接数据库的用户绕过系统中的客户端应用系统,利用自行安装在客户机上的数据库访问工具非法访问某些未授权的数据,从而保证了安全性。
 
图2-2 Client/Server模型
2.3 Winsock
Windows下网络编程的规范-Windows Sockets(简称Winsock)是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。从1991年的1.0版到1995年的2.0.8版,经过不断完善并在Intel、Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,已成为Windows网络编程的事实上的标准。
Windows Sockets规范以U.C. Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套Microsoft Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。Windows Sockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,Windows Sockets也定义了一个二进制接口(ABI),以此来保证应用Windows Sockets API的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。一个网络软件供应商必须百分之百地实现Windows Sockets规范才能做到现Windows Sockets兼容。任何能够与Windows Sockets兼容实现协同工作的应用程序就被认为是具有Windows Sockets接口。我们称这种应用程序为Windows Sockets应用程序。Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口.应用程序调用Windows Sockets的API实现相互之间的通讯[11]。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间的关系如图2-3
 
图2-3 Winsock环境
通信的基础是套接口(Socket),一个套接口是通讯的一端。在这一端上你可以找到与其对应的一个名字。一个正在被使用的套接口都有它的类型和与其相关的进程。套接口存在于通讯域中。通讯域是为了处理一般的线程通过套接口通讯而引进的一种抽象概念。套接口通常和同一个域中的套接口交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。Windows Sockets规范支持单一的通讯域,即Internet域。各种进程使用这个域互相之间用Internet协议族来进行通讯(Windows Sockets 1.1以上的版本支持其他的域,例如Windows Sockets 2)。套接口可以根据通讯性质分类;这种性质对于用户是可见的。应用程序一般仅在同一类的套接口间通讯。不过只要底层的通讯协议允许,不同类型的套接口间也照样可以通讯。用户目前可以使用两种套接口,即流套接口和数据报套接口。流套接口提供了双向的,有序的,无重复并且无记录边界的数据流服务。数据报套接口支持双向的数据流,但并不保证是可靠,有序,无重复的[12]。也就是说,一个从数据报套接口接收信息的进程有可能发现信息重复了,或者和发出时的顺序不同。数据报套接口的一个重要特点是它保留了记录边界。对于这一特点,数据报套接口采用了与现在许多包交换网络(例如以太网)非常类似的模型。
一个在建立分布式应用时最常用的范例便是客户机/服务器模型。在这种方案中客户应用程序向服务器程序请求服务。这种方式隐含了在建立客户机/服务器间通讯时的非对称性。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供(或被接受)。这一套惯例包含了一套协议。它必须在通讯的两头都被实现。根据不同的实际情况,协议可能是对称的或是非对称的。在对称的协议中,每一方都有可能扮演主从角色;在非对称协议中,一方被不可改变地认为是主机,而另一方则是从机。无论具体的协议是对称的或是非对称的,当服务被提供时必然存在"客户进程"和"服务进程"。一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被"惊醒"并且为客户提供服务-对客户的请求作出适当的反应。这一请求/相应的过程可以简单的如图2-4表示。虽然基于连接的服务是设计客户机/服务器应用程序时的标准,但有些服务也是可以通过数据报套接口提供的。

 
图2-4 C/S服务过程
2.4 TCP/IP协议
TCP/IP起源于60年代末美国政府资助的一个分组交换网络研究项目,到现在90年代已发展成为计算机之间最常应用的组网形式[13]。它是一个真正的开放系统,因为协议组件的定义及其多种实现可以不用花钱或花很少的钱就可以公开地得到。它被称作是因特网的基础。
TCP/IP通常被认为是一个四层协议系统,如图2-5所示,每一层负责不同的功能:
 
图2-5 TCP/IP参考模型
(1) 链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
(2) 网络层,有时也称作互连网层,处理分组在网络中的活动,例如分组的路由选择。在TCP/IP协议组件中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互连网控制报文协议),以及IGMP协议(Internet组管理协议)。
(3) 运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议组件中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。
而另一方面,UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。这两种运输层协议分别在不同的应用程序中有不同的用途。
(4)应用层负责处理特定的应用程序细节。
2.5 API函数
API的英文全称Application Programming Interface,WIN32 API也就是Microsoft Windows 32位平台的应用程序编程接口。对这个定义的理解,需要追溯到操作系统的发展历史上,当WINDOWS操作系统开始占据主导地位的时候,开发WINDOWS平台下的应用程序成为人们的需要。而在WINDOWS程序设计的领域处于发展的初期,WINDOWS程序员所能使用的编程工具唯有API函数,这些函数是WINDOWS提供给应用程序与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种界面丰富,功能灵活的应用程序。所以可以认为API函数是构筑整个WINDOWS框架的基石,在它的下面是WINDOWS的操作系统核心,而它的上面则是所有的华丽的WINDOWS应用程序。
但是,那时的WINDOWS程序开发还是比较复杂的工作,程序员必须熟记一大堆常用的API函数,而且还得对WINDOWS操作系统有深入的了解。然而随着软件技术的不断发展,在WINDOWS平台上出现了很多优秀的可视化编程环境,程序员可以采用“即见即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。
这些优秀可视化编程环境操作简单、界面友好(诸如VB、VC++、DELPHI等),在这些工具中提供了大量的类库和各种控件,它们替代了API的神秘功能,事实上这些类库和控件都是构架在WIN32 API函数基础之上的,是封装了的API函数的集合。它们把常用的API函数的组合在一起成为一个控件或类库,并赋予其方便的使用方法,所以极大的加速了WINDOWS应用程序开发的过程。有了这些控件和类库,程序员便可以把主要精力放在程序整体功能的设计上,而不必过于关注技术细节。
实际上如果我们要开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数,虽然类库和控件使应用程序的开发简单的多,但它们只提供WINDOWS的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是非常难以实现的,这时就需要采用API函数来实现。


 
第3章 系统分析与设计
3.1 需求分析
随着网络技术的发展,我国各企业单位大部分都建有自己的内部局域网。建立内部局域网,可以充分利用公司现有的硬件资源,比如打印机,扫描仪,节约公司开支;还提高公司员工的工作效率,由于联成局域网,公司内部的资源都可以共享,避免了不必要的重复工作;还可以规划建设自己的内部企业网,提高办公自动化水平和企业内部应用电子商务的能力,逐步进入业务级网络应用阶段[14]。但是某些企业员工却利用公司的网络资源做与工作本身无关的事情,如浏览国家明令禁止的网站、工作时间上网打游戏聊天、下载和实际工作无关的电影、歌曲等,这些行为某些已经违反了国家互联网的有关管理条例,更多的是消耗了网络带宽的资源,使网络得不到充分的利用,影响了正常的办公业务。因此如何加强对计算机的管理,更好地利用网络资源,为企事业单位服务成了日益突出的问题。
基于以上的现实问题,对于局域网的管理员而言,需要一套监控管理软件,对网络内的所有计算机进行实时有效的管理,充分发挥软件的监督作用。根据网络应用状况和当前的技术水平,目前对监控系统的具体需求表现在:
(1) 监控的实时性:服务器能随时了解客户端的工作情况,能随时跟客户端进行联系交流。
(2) 操作性强:软件的使用者多是管理人员,他们应用计算机的能力不是很强,因此一定要简便好用,图形界面通俗易懂,操作方便简单。
(3) 安全性:防止监控程序被人为地强行结束,是监控系统必须解决的关键问题之一,只有保证监控程序一直运行才能做到监控的连续性。
本文所构建的局域网计算机监控系统是为了方便管理而实施的监控行为,出发点就是为了提高应用计算机的各个行业的工作效率。局域网内的客户机安装客户端监控软件,向安装了服务器端软件的服务器传送客户机的实时信息。
按照以上对系统的需求分析,系统设计为实现以下几方面的功能。
(1) 服务器对客户端发出监控命令,客户端随即发送屏幕截图到服务器,以便服务器能进行实时监控,或者是服务器一直侦听客户端,当客户端软件捕捉到键盘鼠标等事件时,立即把这些事件反馈给服务器端。
(2) 服务器和客户端之间具有聊天功能,能随时进行沟通,而且聊天应由服务器发起,聊天窗口的控制权由服务器所掌控。
3.2 方案选择
按照以上所述的需求分析以及所要实现的功能,对该程序的监控模块有两个方案,一种为屏幕截图的方式,而另一种是基于客户端事件的方式。
3.2.1 方案一
要想知道客户端主机的操作者在利用计算机做什么,最简单也是最有效的方法就是查看计算机屏幕,让主机的运行情况一目了然。这就是屏幕截图的方法,一旦接收到服务器端发来的查看消息,实时传送客户端主机的屏幕给服务器端。
该方案的优点:
(1)直观明了,实现起来相对简单。
(2)服务器端操作简单、人性化。
该方案的缺点是其中所需的技术主要涉及屏幕的截取和图像的网络传输。由于需要传送的数据量过大,给网络和计算机造成了较大的负担,没有做到准确、及时的反映出客户端的真实情况,不能够达到实时浏览客户端屏幕信息的效果。这是应注意的技术难点。
3.2.2 方案二
除了方案一提到的抓屏的方法,监控还可以是基于事件的, 这个方法类似于高级木马程序,客户端监控软件记录主机的各种实时信息并发送给服务器端软件,这些信息包括:鼠标键盘事件,主机网络使用情况,当前运行的进程信息,主机收发邮件的信息,主机修改的文件信息,主机 CPU 使用率等信息。
该方案的优点:
(1)实时性比较好。
(2)监控的信息比较全面。
该方案的缺点是实现起来相对复杂,客户端反馈的信息相对专业化,这就要求服务器端操作人员有一定的计算机基础。
该系统设计初衷是用于企业、公司这些单位的,员工的计算机水平不一定很高,而且监控者不需要了解全面的监控信息,只是要了解员工利用计算机在做什么,是否在干一些与工作无关的事。因此,综合上述几个方面以及实现难易程度,最终选择了方案一,即屏幕截图的方式来进行监控。
3.3 构架设计
按照以上的需求分析,设计了基于TCP/IP协议的局域网计算机实时监控系统,系统主要应用于内部局域网,体系结构采用得到广泛应用的C/S结构,系统结构如图3-1所示。
 
图3-1 局域网计算机监控系统结构图
由结构图可以看出,系统包括客户端监控软件和服务器端软件两大部分,客户端监控软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器端软件。客户机运行着监控程序,它是整个系统的数据源,由于采用了进程隐藏技术,使得监控程序能够防止被强行结束,从而保证监控的连续性和可靠性[15]。
3.4 客户端监控软件的设计
客户端监控软件按照要实现的功能划分为3个模块,分别是Picture模块、通信模块、信息互送模块,客户端监控软件结构图如图3-2
 
图3-2 客户端监控软件结构图
下面分别介绍各个模块的功能和设计思想。
(1)Picture模块设计
Picture模块的主要功能是截获客户端的屏幕信息,它是进行屏幕监控的基础,它获取客户端屏幕的分辨率以及图象。其设计思想是在客户端窗体设计中添加PictureBox控件,把目前屏幕的各个属性设置到控件中对应的属性。
(2)通信模块设计
通信模块的主要功能是完成客户端与服务器之间的通信,它是整个监控过程的核心。设计思想是利用VB里的Winsock控件,可以进行客户端与服务器之间的通信与数据传输[16]。
(3)信息互送模块
该模块的功能就是完成客户端与服务器之间的聊天功能,在监控过程中客户端与服务器有必要进行交流沟通,所以添加聊天功能是必要的。使用VB 中的TextBox控件即可完成。
3.5 服务器端软件的设计
服务器是整个监控过程的发起者,客户端端软件在运行的时候收集被监控计算机的屏幕信息,等待服务器的命令。当服务器要监视客户端的屏幕时,它向客户端发出请求命令,客户端随即向服务器发送屏幕位图数据,服务器接受到数据并进行处理与显示,服务器工作图如图3-3
 
图3-3 客户端-服务器工作图
服务器从发出请求到最后的屏幕显示过程中,要有一系列的动作,具体工作流程图如图3-4
 
图3-4 服务器工作流程


 
第4章 系统的实现
按照前一章对系统的分析和设计,本章主要讨论监控系统如何实现,包括客户端监控软件和服务器监控软件的实现。
计算机实时监控系统开发的环境为:
操作系统:Windows XP
开发模式:基于C/S的开发模式
开发工具:VB6.0
4.1 客户端监控软件的实现
客户端端监控软件按照功能划分为3个模块,即Picture模块、通信模块、信息互送模块。下面按照每个模块的实现来进行介绍。
4.1.1 Picture模块的实现
客户端端监控软件要把屏幕截获发送给服务器,首先就要获取客户端端的屏幕信息,如分辨率等,还要对截获的图象进行相应的设置[17]。在VB6.0中实现方法如下:
首先建立客户端端监控软件的主窗体,在主窗体里添加PictureBox控件,如图4-1所示。把PictureBox控件的Name属性设置为picTmp,方便以后的代码编写。
 
图4-1 添加Picture控件

然后双击窗体进行代码编写,这里首先要获得被监控端的屏幕分辨率,同时对PictureBox进行初始化,代码如下:
'======| 载入窗体 |======
Private Sub Form_Load()
lngScrRslX = Screen.Width / Screen.TwipsPerPixelX  '获取客户端分辨率
lngScrRslY = Screen.Height / Screen.TwipsPerPixelY
picTmp.Left = 0
picTmp.Top = 0
picTmp.Width = lngScrRslX
picTmp.Height = lngScrRslY
picTmp.Visible = False
picTmp.AutoRedraw = True
picTmp.AutoSize = True
End Sub
其中lngScrRslX和lngScrRslY为自定义的变量,为屏幕的分辨率。
4.1.2 通信模块的实现
正如前文所述,Microsoft Visual Basic提供了用于Windows Sockets编程的可用控件——Winsock控件。该控件为用户提供了访问TCP和UDP网络的极其方便的途径。并且适用于Microsoft Access、Visual Basic、Visual C++和Visual FoxPro等多种可视化环境。通过Winsock控件编制C/S程序,程序员无须了解TCP或低级Winsock APIs调用实现的细节,如用户无须考虑网络字节顺序与本机字接顺序便可直接进行数据的传送。用该控件实现网间进程通信极其方便。
远程控制功能是基于客户机/服务器这一模型来实现的,所以程序的编制也应分两部分进行:一部分是服务器端--也就是被控制的一方,另一部分是客户端--控制方。服务器程序要守侯在一个固定或不固定的网址(IP)上等待客户程序的请求;客户程序则向服务器程序所在的网址请求连接,连接成功后通过交换信息即可得到相应的服务。因此设置Winsock属性时,服务器端应设置LocalPort和应用Listen方法进行监听,客户程序则要设置RemoteHost和RemotePort及应用Connect方法请求连接,并用Senddata方法互换信息。
在TCP应用中,为了建立一个网络连接实例(Instance)的服务器端,只需设置本地服务端口号,然后服务器调用方法Listen进入阻塞状态,等待来自客户的连接请求[18]。与此对应的客户端不但要将Winsock的属性RemoteHost置为服务器的名称(IP地址或网络代号),还应设置服务器所监听的相应服务的端口号(RemotePort),如FTP服务在21号端口,HTTP在81号端口等。然后调用方法Winsock.Connect向服务器发出请求。服务器接收到客户请求时,事件ConnectionRequest将被触发。如服务器愿意提供服务,则可调用Accept方法接受连接。
一旦连接建立,两端均可使用SendData或GetData进行数据的发送或接收。事件DataArrival将在另一端数据准备就绪时被触发。
UDP协议的实现与TCP不同的是,调用Sockets的两端无需建立连接便可进行数据的传输。因此,一个UDP应用可以同时担任服务器或客户的角色。
以下程序代码为Visual Basic Windows Sockets编程的基本框架。
服务器方:
Private Sub Command1 Click()
注释:设置本地服务端口号
Winsock1.localport=10
注释:服务器进入监听状态
Winsock1.listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requested As Long)
注释:收到客户连接请求
注释:检查Socket状态
If Winsock1.State <> sckClosed Then Winsock1.Close
注释:接受客户请求
Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
注释:对方数据已准备好
注释:可用GetData()/SendData()接收/发送数据
注释:处理客户数据
……
End Sub

Private Sub Form_Unload(Cancel As Integer)
Winsock1.Close
End Sub

客户方:
Private Sub Command1.Click()
注释:设置服务器IP地址
Winsock1.RemoteHost=“169.254.134.138”
注释:设置服务器相应服务端口号
Winsock1.RemotePort=10
注释:向服务器发出连接请求
Winsock1.Connect
End Sub

Private Sub Winsock1_Connect()
注释:服务器响应连接
注释:可以进行GetData()/SendData()进行数据传输
……
End Sub

Private Sub Form1.Unload()
Winsock1.Close
End Sub
  以上程序为用Visual Basic建立TCP连接的基本过程。本模块就是以此为基本框架加以扩展应用[19]。
这里要注意的是,VB6.0中的基本控件箱里是没有Winsock控件的,需要自己添加,点击“工程”菜单中的“部件”,然后在“控件”中找到“Microsoft Winsock Control 6.0”,如图4-2
 
图4-2 添加Winsock控件
4.1.3 信息互送模块的实现
根据C/S监控模型这种特点,聊天应该由服务器发起和结束,因此自定义了一个变量blnUnloadMessage(Boolean型)作为信息互送窗口的卸载标志,当服务器发送信息互送控制字时,把blnUnloadMessage置为False,就打开信息互送窗口可以进行聊天,反之当服务器关闭信息传送窗口时,把blnUnloadMessage置为Ture,就会卸载该窗口。具体代码如下:
'=====| 关闭窗口 |======
Private Sub Form_Unload(Cancel As Integer)
    If blnUnloadMessage Then
        Cancel = 0
    Else
        Cancel = 1
    End If
End Sub
4.2 服务器端监控软件的实现
服务器分为3个模块,IP数据库模块、监控模块和信息互送模块,下面分别对这3个模块的实现进行介绍。
4.2.1 IP数据库模块的实现
    根据C/S结构,服务器要能对多个客户端进行监控,而这个要通过切换IP地址来实现,因此服务器软件需要建立个IP数据库,要求能对IP地址进行添加、删除和修改。由于IP地址格式和长度固定,所以这里采用的文件的存储方式,在程序目录下建立个文本文档“ipaddr.txt”,把所监控的IP地址存储在该文档里。
'********| IP地址保存到文件 |*******
Private Sub PutIPAddr()
Dim i, fn
fn = FreeFile
Open App.Path + "\ipaddr.txt" For Output As #fn
If lstIp.ListCount = 0 Then Write #fn, "none"
For i = 0 To lstIp.ListCount - 1
    Write #fn, lstIp.List(i)
Next i
Close #fn
End Sub
其中FreeFile函数返回下一个可供Open语句使用的文件号,提供一个尚未使用的文件号,使用FreeFile函数获取可用的文件号是编程的良好习惯[20]。
在添加IP地址的时候不免要碰到输入错误的问题,错误的IP地址是不会被解析的,所以在添加IP的地址的时候要加入一段代码来对输入的IP地址进行合法性判断,而非法IP地址又分为三种情况,一是非法的地址长度,二是地址中有非法字符,三是要添加的地址已存在,具体代码如下:
'====| 添加IP地址 |====
Private Sub cmdAdd_Click()
Dim i As Integer, lenIp As Integer
          '合法性判断
lenIp = Len(txtIpAddr.Text)
If lenIp > 15 Or lenIp = 0 Then
    MsgBox "非法的地址长度!请重输!"
    Init_IpAddr
    Exit Sub
End If
For i = 1 To lenIp
    If (Not IsNumeric(Mid(txtIpAddr.Text, i, 1))) And Mid(txtIpAddr.Text, i, 1) <> "." Then
        MsgBox "地址中有非法字符!请重输!"
        Init_IpAddr
        Exit Sub
    End If
Next i
lenIp = lstIp.ListCount - 1
For i = 0 To lenIp
    If txtIpAddr.Text = lstIp.List(i) Then
        MsgBox txtIpAddr.Text + " 地址已存在,无须添加!"
        Init_IpAddr
        Exit Sub
    End If
Next i
       '添加地址
On Error GoTo END_SUB
lstIp.AddItem txtIpAddr.Text
lstIp.Refresh
Init_IpAddr
       '保存到文件
PutIPAddr
END_SUB:
End Sub
完成后的IP地址数据库操作界面如图4-3
 
图4-3 IP地址数据库操作界面

4.2.2 监控模块的实现
该模块为整个软件的核心模块,要实现最重要的功能,它首先要完成与客户端之间的通信连接,该部分与前文所述的客户端的通信模块相似,然后当监控者按下“屏幕监控”按钮,立即向客户端发送监控命令字,客户端随即返回屏幕信息,之后服务器接受客户端发送过来的信息,加以处理后在主窗体显示被监控客户端的屏幕[21]。
具体流程图如图4-4所示,
4.2.3 信息互送模块的实现
如前文所述,该过程由服务器发起,由服务器结束,服务器拥有信息互送的控制权,当服务器关闭信息互送窗口时,发送控制字“UNLOAD_MESSAGE”到客户端,客户端随即也关闭信息互送窗口,代码如下:
    '====| 卸载窗体 |====
Private Sub Form_Unload(Cancel As Integer)
    blnSendMsg = True
    On Error Resume Next
    frmCtrl.wskCtrl.SendData "UNLOAD_MESSAGE"
End Sub

                          
图4-4 监控流程图


结    论
本章主要总结了局域网计算机监控系统的工作成果和创新之处,但是随着网络技术的飞速发展和用户的需求越来越高,该系统也要不断的完善,因此,本章也提出了系统存在的有待改进的地方。
工作成果:
局域网计算机监控系统是针对当前局域网存在的突出问题而提出的一个新的解决方案。它改变了传统的被动管理模式,把人对计算机的管理转化为计算机对自身的管理,既减轻了管理者工作强度又提高了管理的效率和针对性,该系统完成了期望的以下主要功能:
(1) 服务器端可以监测客户端的屏幕,在双机调试中实现了该功能,如图5-1所示。
 
图5-1 服务器程序界面

(2) 服务器端可以与被监控的客户端进行聊天,如图5-2所示为服务器聊天窗口,图5-3为客户端聊天窗口。
 
图5-2 服务器信息互送界面
如图,只有服务器有关闭聊天窗口的权限。
实践证明,该系统在对局域网内的计算机的管理过程中起到了卓有成效的作用。
待改进之处:
虽然本文所论述的局域网计算机监控系统在局域网的管理中给管理人员提供了很大帮助,但是随着网络技术的飞速发展和用户需求的不断改变和提高,计算机监控系统也要不断地进行改进才能保持强大的生命力。
该系统有待改进的地方有:
(1) 客户端没有采用进程隐藏技术,一旦用户关闭监控程序,将实现不了监控功能。进程隐藏涉及到黑客技术,相对来说比较复杂,断时间内难以实现。
(2) 服务器与客户端之间的连接偶尔发生错误,几经调试都没能很好的解决这个问题,原因目前尚未得知。

 
图5-3 客户端信息互送界面

 
致    谢
首先感谢我的导师谭顺华老师。他丰富的知识、严谨的治学态度,使我在毕业设计的这段学习中受益非浅。他让我不仅学到了更多的知识,更让我体会到了做人的道理。在论文撰写过程中他给予了我精心的指导和巨大的帮助。论文的顺利完成,是我自己辛勤劳动的结果,更凝结了谭老师的心血与关怀。
同时,我要感谢信息工程学院的老师们,是他们让我开拓了更广阔的眼界和接触到了更丰富的知识。还要感谢我的同学游泽宇、张东海、刘旭等人,他们在我撰写论文的过程中也给予我很大的帮助。
最后,还要感谢百忙之中审阅论文的各位老师,恳请各位老师多多批评指正,并提出宝贵意见。

参考文献
[1] 罗德安,廖丽琼.警卫车辆实时监控系统的开发[J]. 计算机应用,2000,20(10):58-60.
[2] 王建新,杨世凤,史永江,童官军.远程监控技术的发展现状和趋势[J]. 国外电子测量技术,2005,12(4): 9-12.
[3] 孙德明,何正嘉,快速构建基于Web的远程测控系统[J]. 计算机工程与应用,2003,23(6):160-162.
[4] 杨叔子,史铁林,李东晓.分布式监测诊断系统的开发与设计[J]. 振动、测试与诊断,1997,17(1):1-6.
[5] 沈海军,田菩提.实现局域网中机对机的屏幕监控[J]. 电脑学习,2000,16(6):18-20.
[6] 杨经,司志刚,叶惠敏. 基于内容安全的局域网监控系统的设计与实现[J]. 计算机工程与应用,2000,6(2):174-176.
[7] 王津琳,赵满胜. 网络监控系统在局域网中的应用[J]. 信息安全与通信保密,2004,7(2):58-59.
[8] 费仁元,王民,徐洪安. 基于C/S模式的企业局域网监控系统[J]. 北京工业大学学报,,2004,30(2):139-143.
[9] Anthony Jones, Jim Olund. Windows网络编程(第2版)[M]. 杨合庆译. 北京: 清华大学出版社,2002:168-185.
[10] Douglas E. Comer, David L. Stevens. 用TCP/IP进行网际互连[M]. 赵刚, 林瑶, 蒋慧译. 北京: 电子工业出版社, 1998: 198-205.
[11] 李明慧,徐凤林,李素芳. 公路收费监控网络系统[J]. 计算机应用研究,2000,15(8):84-87.
[12] Jeffrey Richer. Windows核心编程[M]. 王建华, 张焕生, 后丽坤等译. 北京: 机械工业出版社, 2000: 153-168.
[13] Charles Petzold. WINDOWS程序设计[M]. 北京博彦科技发展有限责任公司译. 北京:北京大学出版社, 2004: 286-302.
[14] 赵少华, 黄瑞光. 图像监控系统视频采集压缩卡的实现[J]. 电讯技术, 2000, 5(6):68-71.
[15] 郑阿奇,曹戈.Visual Basic实用教程[M].北京:电子工业出版社,2000:130-160.
[16] Andrew S. Tanenbaum. 计算机网络[M]. 熊桂喜, 王小虎译. 北京: 清华大学出版社,2002: 402-417.
[17] 郭天杰, 齐玉东. Windows 9x, NT和2000下的API拦截技术[J]. 计算机应用研究,2001(9): 125-127.