毕业设计(论文)-网络运行监测与定位系统.doc_第1页
毕业设计(论文)-网络运行监测与定位系统.doc_第2页
毕业设计(论文)-网络运行监测与定位系统.doc_第3页
毕业设计(论文)-网络运行监测与定位系统.doc_第4页
毕业设计(论文)-网络运行监测与定位系统.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络运行监测与定位系统摘 要:本文讨论了组成网络运行监测系统的各个模块及实现它的技术细节,尤其是在系统的总体结构设计、抓包模块中对网上数据包的捕捉和包还原模块中的http还原模块,提供了较详细的说明。而节点自定位技术是其中的一个重要分支。网络节点采集的数据往往需要确定的位置信息才有意义,对目标进行追踪需要预知节点位置,另外,许多网络路由机制,网络拓扑管理也是以预知节点位置信息为基础的。该系统能够提供关于网络数据流的完整数据内容的可视化,而且它是被动的侦听,不易被发现。关键字:网络监测;tcp/ip;定位系统abstract: this article discussed the composition of the monitoring network operating system to achieve the various modules and its technical details, particularly the systems overall structural design, zhuabao module on the internet to capture data packets and packets of the reduction in the http module reduction module, provide a more detailed explanation. the self-positioning technology node is an important branch. collection of data network nodes often need to identify the location information can be meaningful, needs to track the target predict node location, in addition, many network routing, network topology management is to predict node location-based information. the system can provide information on the integrity of network data flow visualization of data content, but it is a passive listener and not easily found. keyword: network monitoring; tcp / ip; positioning system目 录第一章绪论3第二章tcp/ip相关协议分析42.1 tcp/ip协议概述42.2 ip协议分析42.3 tcp协议分析5第三章 网络运行监测系统结构83.1网络运行监测系统介绍83.1.1安全监测的功能分类83.2网络运行监测系统的功能简介93.3网络运行监测系统的总体结构设计93.4网络运行监测系统模块划分及简要说明113.5网络运行监测系统的技术分析123.6小结14第四章 网络定位系统中的应用与实现16第五章 网络运行综合监测系统的设计与实现215.1 整体结构211.2 数据库设计225.3 类设计235.4 关键技术实现245.4.1 数据库连接与管理245.4.2 网络数据采集255.5 系统运行截图28参考文献29总 结30致 谢31附录一32第一章 绪论计算机安全是一个越来越引起世界各国关注的重要问题,也是一个十分复杂的课题。随着计算机在人类生活各个领域的广泛应用,计算机病毒也在小断产生和传播,计算机网络被黑客小断非法侵入,重要情报资料被泄密,同时也有一些人利用网络信息共享的特点,在internet网上散播一些小良信息,己给各个国家以及众多公司造成巨大的经济损失,甚至危害到国家和地方的安全。因此计算机系统的安全问题必须给子充分的重视并设法解决。故障管理是网络管理工作中时间最长、最枯燥乏味且容易出现疏忽的内容,作为网络管理员,在网络运行维护期间,不仅要随时检查网络设备、网络链路的状况,而且要对核心机房的供电情况、温度湿度、重要服务器的温度、运行状况、重要网络服务的运行状况等方面都能及时监测,这单纯靠人工手动完成是很困难的。目前也有很多故障监测类的网管系统,通常或是仅支持snmp协议的设备,或是单纯的机房环境监控系统,功能范围相对狭窄,对于异常情况的处理通知手段贫乏.这使得网管人员不得不利用多种工具、多套系统,而且需长期主动、定时观察,才能及时发现网络中存在的问题及隐患.过于复杂的管理手段和过多的人为因素,经常会因为疏忽而导致不能及时发现网络异常、进而发生重大影响或重大损失的情况。因此,根据网管人员日常面临的实际问题,利用microsoft.net架构、面向对象技术,设计实现了一个支持多种目标(供电、温湿度环境、设备状况、链路状况、服务状况、性能)的自动监测分析系统,该系统能及时发现隐患、问题,并能根据设定的报警策略、利用多种手段(声光、短信、邮件)及时通知网管、值班人员,使问题得到及时解决,避免不必要的损失。我们设计的网络运行监测与定位系统能够实时跟踪、监视网络,能截获internet网上传输的内容,并将其还原成完整的w w w,e-mail,ftp,telnet应用的内容,建立保存相应记录的数据库,支持多种查询力一式,从而能及时发现在网络上传输的非法内容,及时向上级安全网管中心报告,山网管中心进行决策,并且对邮件炸弹、”黑客”入侵都能起到一定的防范作用。第二章tcp/ip相关协议分析2.1 tcp/ip协议概述 tcp/ip是一个防议集合,其核心功能是寻址和路由选择以及传输控制。tcp/ip协议是http协议的基础,http实现客户与服务器之间的请求和响应,而tcp/ip实现了底层的数据传输。tcp/ip协议体系结构模型如图3-1所示。图2.1 tcp/ip协议模型 物理层和链路层:处理终端与网络之间的接口细节,包括操作系统的设备驱动程序、网片等。 网络层:网络层包括ip协议.icmp协议3 , igmp协议4、arp协议5 , rarp协议。其中ip协议是不可靠(unreliable)、无连接(connectionless)的数据报协议,为其他高层协议提供最基本的数据传输功能。 传输层:传输层包括tcp和udp两个著名的协议,二者均使用ip网络层协议,为两台主机上的应用程序提供端到端的通信。tcp虽然使用不可靠的ip服务,但却为主机提供面向连接的、可靠的传输层数据通信服务。udp为主机提供无连接的、不可靠的数据通信。虽然udp提供不可靠的服务,但这种协议的开销很小,因此也有着广泛的应用。 应用层:负责处理应用程序细节,这一层有许多协议,如http, ftp,telnet等。2.2 ip协议分析 ip协议是tcp/ip协议中最为核心的协议,tcp, udp数据都以ip数据报格式传输。ip协议是不可靠,无连接的数据报协议,为其它高层协议提供最基本的数据传输功能。ip报头格式如图2.2所示。图2.2 ip报头格式 ttl: 8字节ttl表示数据报生存时间,即数据报最多可以经过的路由数。 total length:整个ip数据报的长度,以字节为单位。由于该字段长16位,故ip数据报的最大长度可达21665535字节protocol:表示封装在ip数据报里的上层l办议,通常有6(tcp), 17(udp)等。ipv4 address: 4个字节的32位ip地址。以字节序传输。2.3 tcp协议分析tcp协议以ip协议为基础,提供面向连接的、可靠的字节流服务。tcp数据被封装在ip数据报中,如图2.3所示,其报头格式如图2.4 。图2.3 tcp数据封装在ip数据报图2.4 sequence number: tcp是流式传输,为了保证顺序,发送的数据报应编号。 port number:每个tcp段都包含一个原端口号和目的端口号,这两个端口号加上ip首部的源ip地址和目的ip地址唯一确定一个tcp连接(socket) 。 urg:紧急标志有效。 ack:确认标志。大多数情况下该标志位是置位的。确认编号为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。 psh:推标志。该标志置位时,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。 rst:复位标志。用于复位相应的tcp连接。 syn:同步标志。该标志仅在三次握手建立tcp连接时有效。它提示tcp连接的服务端检查序列编号,该序列编号为tcp连接初始端(一般是客户端)的初始序列编号。通过tcp连接交换的数据中每一个字节都经过序列编号。在tcp报头中的序列编号栏包括了tcp分段中第一个字节的序列编号。fin:结束标志由于tcp是面向连接的协议,故双方进行通信之前需要三次握手建立连接。图2.5三次握手完成通信之后需四次挥手结束。图3-6四次挥手第三章 网络运行监测系统结构3.1网络运行监测系统介绍3.1.1安全监测的功能分类网络运行监测的口标是对网络中存在的安全漏洞和网络中发生的安全事件进行监测,至少可以分为检测功能和处理功能两部分,网络运行监测中的检测功能可以被进一步分为:(1)基十网络的安个漏洞扫描功能这类功能从系统外部仿照入佼者的行为,使用端口扫描工具和共它针对具体安个漏洞的测试功能,对系统的安个状况进行分析。例如日前比较著名的系统satan. iss等。(2)基十网络的安个事件监察功能这种安个监测方式在1990年就已经被提出,是目前许多安个监测系统的基本形式。这种安个监测功能是在网络上不断监听信息,分析可能发生的各种安个事件。(3)基于主机的安个漏洞检查功能这类安个功能查看系统内部的主要配置文件是否正确,主要文件、程序的权限是否正确。比较有代表性的是cops(computer oracle and password system)。(4)基于主机的安个状态检查功能这类是对安个状态进行定期检查的功能,例如采用 crc校验或mds校验文件,比较有代表性的程i是tripwires。(5)基于主机的安个监察功能这类功能通过修改服务器等方式及时查看系统中的事件和状态,这类监察功能的历史从1991年就开始了,例如,courtney程序可以发现攻击者的端口扫描。(6)基于主机的安个事件记录功能这类安个功能通常被称为日志采集功能,该功能对系统的各种行为进行记录,并且把这种记录信息保存在日志中供事后的市计之用。如axent的omnig uarde(7)陷阱功能这类安个功能通过提供虚假的环境引诱攻击者上当。网络运行监测功能中的处理功能们们被检测功能触发,主要包括:(1)安个追踪功能这种功能般在实时检测到攻击时采用,用于对攻者进行反向追踪。因此,这种功能高要被各种实时功能(例如,基十网络的安个事件监察功能、陷阱功能等)所激活。(2)个事件分析功能这类功能(日志分析功能)高要和事件记录功能(日志采集功能)联合使用。仅仅记录日志并没有实际的意义,只有对日志进行分析才能够获得高要的信息,因此该功能高要被事件记录功能所触发。不同的事件记录方式会泞致不同的事件分析方式。(3)安全事件报弊功能这是安个事件的处理功能中最简单直接的种,也就是向告理员报告所发现的安个事件,要求告理员具体处理。(4)安全状态配置功能这类安个功能对系统进行自动配置,共其目的是将系统的安个状态维持在某设想的水平。这种功能并不需要被共它功能所触发。可以使用的手段有:修改配置文件、修改权限等。例如axent的enterprise security manage等。(5)安个状态修复功能如果系统的安个状态不能够满足要求,该功能能够对安个配置进行自动修改,以期达到设定的安个状态。这种功能是对安个事件最人程度的处理方式。3.2网络运行监测系统的功能简介既然己经意识到网络安全的重要性,那么我们必须能够对网络进行实时监控,而网络运行监测系统的一个主要口的正是对网络上传输的内容进行监控。它的基本原理是负责监视网络上的流通数据流,并进行有效还原,在对信息包进行应用层分析的基础上,捕捉可疑的网络活动,动态地发现网上存在的安全问题。网络运行监测系统是对付愈演愈烈的网络黑客活动和各种计算机犯罪的一种有效的手段。网络运行监测系统的技术关键在于嗅探(sniff)网络传输层的数据包,并将收到的ip报文,经过重组、分析,成为用户可见的应用层信息,从而得知网络传输内容是否有效合理,对于无效、泄密、攻击、反动、黄色等内容的网上传输能够及时得以发现并进一步作出决策处理。3.3网络运行监测系统的总体结构设计(1)设计思想设计这样一个监测系统,首要考虑的问题是如何采集到网络上传输的信息。常用的有两种方法:一是以路由的方式连接在网络的出口处,采集网络上传输的信息。采用这种方法的优点是在必要时能阻断特定的网络传输,缺点是一般的路由器都没有这种功能,自己编写的路由器程序,传输性能未必能满足原有的要求,这种方式更适合防火墙的设计。另一种是以旁路方式连接在网络的出口处,用一台pc机通过集线器连接在网络的关键网段上,修改网卡的接收方式,就能接收到这个网段上传输的所有信息采用这种方式的优点是对原有网络的传输性能没有影响,缺点是如果要阻断某些传输,会比较困难。综合比较两种方法后一种是比较理想的选择。(2)系统结构采用上述信息采集方法,网络运行监测系统分为前台监控器、后台分析器和远程查询主机3部分。图2.1是网络运行监测系统的系统构架。图2.1网络运行监测系统结构(3)系统组成监控器:平要负责如实地记录下网络上的传输数据,并将其存成硬盘上的文件,交给后台分析器进行处理。分析器:负责对前台监控器记录下的数据进行处理,将前台监控器截获的数据拼装、还原成应用层的完整内容。另外对截获的每一条tcp连结,要在数据库中添加相应的记录。远程查询主机:通过拨号登陆到后台分析器,实现查询和控制功能。网络运行监测系统的3个模块各自分工,共同构成整个网络运行监测系统。3.4网络运行监测系统模块划分及简要说明网络运行监测系统由3大主要模块组成:(1)网络监控模块;(2)协议还原模块;(3)数据库及后台控制模块。以下分别加以说明。网络监控模块:该模块由监听程序、监控器通信与旁路模块两部分组成,其模块结构如图2.2所示: 图2.2网络监控模块结构组成协议还原模块:负责对前端接收的ip报文,经过重组、分析,成为用户可见的应用层的信息。该模块的实质是本机在与连接的源端和口的端都没有tcp连接情况下,实现一个简化了的tcp/ip协议组,其中包括ip协议、tcp协议和http. ftp. telnet. smtp协议。与之对应,主要山下列模块来实现这些协议的功能:(1)ip层模块;(2)tcp层模块;(3)smtp模块;(4)ftp模块;(5)telnet模块;(6)http层模块;(7)socket模块。数据厅及后台控制模块:主要负责建立一个databasedevice(即一个数据库),将4个应用(即smtp. ftp.telnet. http)分置在4个表中。同时完成数据厅的优化、后台查询系统的设计和对前台控制表的修改。3.5网络运行监测系统的技术分析 图3.3网络安个监测系统概要流程图从技术实现的角度来讲,图2.3清楚地描述了技术模块之间的关系。本系统的监控器采用一台pc机,安装有两块以太网卡,开发平台是linux,分析器山安装了w indows nt的另一台pc机承担.运用vc . sol server等软件共同开发。后台查询系统是利用borland delphi 3.0 clienbserversuite作为开发平台。delphi的这个版本是专门为开发基于客户机/服务器结构的数据库及网络的开发及应用而设计的,它提供了很多数据库及网络开发方面的控件。本系统在技术上主要解决了以下几个难点。(1)在抓包模块中,要实现对网卡全收模式的设计,而本系统的实现是在linux平台下,它主要是利用了 linux通过的一个直接访问设备的套接字,socket ( pf_inet,sock一 packet,htons(ox0003);它的具体过程如下:打开套接字:socket ( pf_inet,sock一 packet,htons(ox0003);用 ioctl的siocg ifflag s命令,读取eth0网卡的标志,在eth0网卡的标志中加入iff_promisc标志,并用 ioctl的siosg i-fflags设置;注意:所谓iff_ promisc方式是指:在一般情况下,网卡只读取那些宿mac地址是自己的包。而在iff-promisc方式下,网卡将读取网络中的所有mac包,而不论这些包的mac地址是什么。所以在这种力一式下,就可以实现对以太网中所有流量的控制、监听。 (2)分析包模块是本系统中的重中之重,在这个模块中,包含了http还原模块,此模块将用户所访问的网页以及用户通过浏览器提交的用户名、口令等信息较完整地还原出来。通过对截取的原始数据的分析,参照http/1.1规范发现,要浏览一个网页,通常要建立多个连接以加快传送速度。这是与smtp等协议仅需要一个连接最本质的区别。显然,这给http的还原带来一定的困难。因此,确定哪些连接(指利用该连接传送的内容)属于哪一个网页就成为还原的核心问题。在解决这一问题时,要考虑如下http协议的特征及所采取的方法。端口的单调递增性和局部性:从客户端浏览器向http服务器发送第一个请求开始,即建立第一个连接开始,操作系统为后续连接分配的端口号单调递增,而且,属于同一个网页的多个连接的端口号具有局部性特征, 即所分配的端口号相对连续,偶尔有跳跃。这取决于用户应用程序消耗端口的具体情况。这为网页的成功还原奠定了技术基础。原始数据的组织方式:该模块的原始数据来自于tcp/ip协议还原模块的还原结果。为了表示一个连接,数据文件的命名体现了连接的四元组:源ip地址、源端口号、宿ip地址、宿端口号。即:源ip地址.源端口号-宿ip地址.宿端口号以及宿ip地址.宿端口号-源ip地址.源端口号例如:5.1091-51.80和207.r2.250.251.r0-5.1091分别代表一个连接的两个方向上所传送的信息。也就是客户端浏览器发送给服务器的请求信息和服务器回送给客户端浏览器的应答信息。这些信息包含了合成一个网页所必需的基本信息。(3)对于来自具有root权限的用户对监控器配置所做的修改是这样处理的,把相关的监控器配置信息保存在监控器本地的配置文件中,当监控器要修改配置参数时,就把这些修改保存在这个配置文件中。而监控器会从此配置文件中读取相应的配置参数,然后按照新的参数对数据包进行分析。3.6小结虽然网络运行监测系统是网络安全部门使用的重要武器之一,但它也存在着局限性。(1)监控器不能发现所有的数据包 网络运行监测系统通过运行一个工作在全收模式的网络适配器来捕捉所有正在进入和即将离开子网的数据包。注意这与监视出现在一个子网上的所有网络传输是不同的,如图4。在图中结点物理的分布成环行,其中结点b 在结点a和运行的监控器之间,数据包hello b由结点a 发送到结点b,但是由于a 和b是直接相邻的,b 结点捕获和处理来自a结点的数据包,监控器永远都没有机会看到这个数据包。这意味着监控器不能跟踪全部发生在子网上的网络活动。例如一个从a 结点到b结点的数据包是一次内部攻击或者误用,监控器将不会发现它。图3.4检测器不能看到子网全部数据包(2)加密使监控器失去作用 当将浏览器和一个使用安全套接字(secure socket layer ,ssl) 的web服务器相连时,你的计算机发出的数据包直到到达web服务器应用本身才会被解密,ssl数据包流过防火墙并保持加密状态。数据包到达web服务器结点,从内核堆栈中弹出,然后由一个套接字web 服务器程序读取它,直到最后在web服务器程序本身的控制下数据包才被解密。这种类型的应用级加密也使监控器对许多攻击和不良内容视若无睹。尽管如此,网络运行监测系统为保证网络的安全提供了一种有效的方法。本文讨论了组成网络运行监测系统的各个模块及实现它的技术细节,尤其是对抓包模块中对网上数据包的捕捉和包还原模块中的http还原模块,提供了较详细的说明。此系统能够提供关于网络数据流的完整数据内容的可视化,而且它是被动的侦听,不易被发现。本系统对待特殊情况的处理还有待改进,如对其它协议及加密信息的内容还原。另一方面,网络技术仍在不断的发展和演变中,为了适应未来技术的发展,本系统仍需进一步改善。第四章 网络定位系统中的应用与实现网络通信协议是通信双方在通信时遵循的规则和约定.在计算机网络中用协议数据单元pdu(protocol description unit)描述通信协议,pdu由控制部分和数据部分组成,控制部分由若干字段组成,表示通信中用到的协议.在定位器与计算机之间通过发送短信,进行通信,必须严格定义好通信协议,该通信协议以pdu的形式存在.任何以短信完成定位的系统,必须定义好自己的pdu,定位器能够接收短信,并按照pdu格式,识别短信的命令类型,通常的命令有定位请求、跟踪发起、查询定位器中保存的轨迹等命令,具体某种定位器,所支持的命令有所不同.定位器收到该命令后,能够提供相关服务,并将服务的执行结果,如定位的网络测量报告等内容,通过短信,回应相关命令,该命令也是具有按照协议而固定的格式,按照预先定义的pdu格式进行编码,该命令再通过短信,由定位器发送到计算机,由于该计算机能够完成定位命令、执行相关查询定位等操作,因此相对定位器来讲,具有很强的服务功能,因此为了表述的方便,该计算机也叫服务器.服务器收到该短信后,对该信息包进行解码拆包,从中抽取定位有关的经纬度信息,并将该经纬度信息通过直观的电子地图显示在计算机屏幕上.该定位通信协议,由专门的模块实现,如图4.1所示:图4.1双模定位器1通信协议实现模块在系统中的位置与意义协议中数据类型定义,即pdu的格式定义,以及函数实现,是本系统实现的关键.由于定位器需要完成精确的定位,需要大量的操作,具体应用领域又很广,如警用定位、物流定位、儿童定位、城市保安定位、银行运钞车监视、快递公司人员配送、银行钱箱位置监控等,需要大量的命令来支持这些操作,如主动报警、启动报警和高压电击(钱箱)、设置定位器锁定车辆、设置室内自动数据上传、设置区域参数(用来规定活动范围,包括禁止驶入,和禁止驶出)、设置应用类型等,这些命令不仅需要服务器的支持,同时定位器需要硬编码支持,就象tcp/ip协议需要硬件及路由器等支持一样。虽然服务器发出的命令及定位器回应的命令有相对固定的格式,但是每个具体的命令不完全一样,在实现时建议对每个具体协议采用相应的函数来实现,这样,对以后协议服务的拓展和应用程序使用这些协议实现函数,带来了便捷和可读性。每个函数的参数类型、大小和参数在函数中的位置顺序,必须与协议中一致(具体协议内容,文中省略)。函数和参数的命名参照以下要求:变量和函数命名首字母小写,中间有多个单词,则以大写字母起头,用于分隔不同单词,增强可读性。以具有代表性的服务“单次定位请求”为例,对双模定位器通信协议实现模块作具体说明。函数名字orientationrequest参数commandidentifiercommandcontrolwordserialnumberapplicationtypeparameterpackagelength定位器的回应,由定位器相关硬件来实现回应的信息编码和将信息发送给服务器,而服务器端负责定义函数接收该数据,并按照协议,将定位器回应的信息内容,进行解码.需要定义函数将回应信息进行解码,该解码函数,具有与定位器回应信息编码相对应的参数,参数的顺序应该严格按照协议定义的顺序.函数名字orientationrequestreply参数commandidentifiercommandcontrolwordserialnumberreplycodeapplicationtypelocalizernumberparameterpackagelengthparameterpackage服务器收到消息时,必须判断定位器的回应消息,是该定位请求回应的消息还是其他回应消息,只有知道这个回应消息的命令控制字和流水号,才能判断该消息是否为本次定位请求的回应消息,然后才能调用相应的定位请求回应解码函数.关于服务器接收定位器发送过来的信息,以结构体或其他类型数据接收,然后分析接收到的数据,判断定位器的回应消息的控制字,然后再调用orientationrequestreply解码数据,这些为协议实现的服务性代码(指判断定位器回应消息的类型,为调用orientationrequestreply和 orientationrequestreply而做的其他工作)部分,也以模块的形式提供.如图2所示:图4.2单次定位请求与该请求回应在整个系统模块中的序列图为了便于理解上面的序列图,详细说明如下,由服务器中的相关服务模块,根据用户或其他需要,调用“单次定位请求orientationrequest”服务,该orientationrequest的主要的功能是根据参数中传来的数据,将这些数据按照协议要求的格式,打成协议规定的消息包,然后将这个消息包,通过服务器端负责往gsm发送消息的模块,将该消息包发往定位器,定位器能够接收并识别该消息包,通过消息包的内容,定位器判断出该命令为定位请求命令,于是,将定位请求的回应消息按照协议规定的格式打包,并通过gsm往服务器发送该消息包,服务器首先通过接收消息的模块,接收该消息,然后调用“单次定位请求回应函数orientation-requestreply”将消息包中的数据解码,并传递至相关参数中,以备后续处理模块调用和处理.服务器负责往gsm发送消息的模块,需要使用at命令往定位器发送消息(或通过其他方式发送sms消息);同样地,服务器负责接收定位器发送过来的消息的模块,也可能需要使用at命令或其他硬件设备相关命令.本序列图强调在时间顺序上消息的发送情况,且不含服务器按照协议处理数据后与其他计算机或模块采用tcp/ip协议通信的部分.为了函数阅读和调用的方便,力争做到一次开发,长期使用,节省人力、物力与财力,将通信协议中每一个函数放置于一个独立的类中,该类包含对应该函数的所需辅助函数,如设置定位器的超级密码的函数所在的类,必须含有密码数据.在发送前,需要实现若干个算法,来对密码数据进行加密传输,而定位器则在硬编程中具有相对应的加密规则的逆规则来实现数据的解密.所有与协议实现相关的,与数据编码解码有关的类放到一个头文件中去,而这些类的相关实现放到另外一个文件中去,该文件不含类的声明,仅含各个类的具体实现成员函数.如部件图4.3所示.图4.3双模定位器通信协议实现模块各部件组成成分整个系统的架构如图四,服务模块1主要负责数据的编码解码,服务模块2负责数据库管理(含车辆信息、位置信息、用户信息等)和用户的管理,还有两个客户端模块如显示模块和web服务模块,负责客户服务位置显示,方便更多用户对定位系统的强烈需求。图4.4整个系统的模块组成定位器可以采取gprs ( generalpacke-tradioservice)无线数据通信2与计算机进行通信,协议的规范稍微有些变动,而系统的gsm通信模块则要用gprs通信的模块所代替或同时提供这两种模块,这样系统就有在多种情况下精确和随时定位的可能,如室内定位,若某种方式信号很弱,则通信方式自动选择另外一种方式,并且两种定位方式互为补充.同时提供这两种方式,能够完成大多数条件下的精确定位.双模定位器1通信协议的实现模块是整个系统实现的关键部分,为定位信息的消息从定位器到服务器的传输提供了强大的支持,为整个系统的搭建起一个基础平台的作用.第五章 网络运行综合监测系统的设计与实现5.1 整体结构综合监测系统的体系结构如图1所示,系统核心为监测项目数据库,存放各个被监测对象的基本信息、监测参数信息及监测结果信息,辅助以系统全局配置参数表及监测日志数据库.用户界面子系统提供建立及维护监测项目的用户界面,附带检查功能的新建项目用户界面,确保每个监测项目参数的正确性.同时,用户界面显示监视项目检查结果和日志查询结果.调度子系统为运行控制中心,按照预先设置的监视间隔时间,读取被监测项目信息,触发数据采集子系统获得被测项目状态;根据判断依据得出监测结果,如果被检项目异常,则提交报警子系统;报警子系统根据该项目的基项是否正常、最大报警次数等原则确定是否实际输出报警.图5.1 网络综合监测系统体系结构目前系统为c/s模式,基于.net框架开发,数据库采用ms-sql server2000,开发语言采用vb.net,vb.net较以往的vb6.0不同,已经成为完全的面向对象语言.通过扩展indy.sockets组件集,对基于tcp/ip协议簇的互联网主要服务协议http、ftp、icmp、snmp、dns、smtp、pop3等进行信息采集,实现对网络设备、服务或链路的运行状况监视;基于温度、湿度、数字i/o的信息采集通过智能ltm-8000系列模块构成,短信输出模块采用短信发送器构成,他们通过两个rs-232串行口与上位机的连接,串行口的操作用vb.net中的串口类实现.1.2 数据库设计综合监测系统的特点就是监测对象类型多,对于每种监测对象,既有相同的参数,如对象名称、描述、类型、结果判断方法、正常返回值等;又有各自独特的参数,如监测对象为web服务,则需要ip地址、端口、http读取命令;监测对象为snmp某个oid值,则需要ip地址、oid、snmp community,监测对象为温度值,则需要串口编号、温湿度测控模块编号、温湿度通道编号及id等.因此如何设计合理的监测项目数据库、表结构及关联关系,将对后面的代码实现产生重大的影响.实际解决方法的示例如图5.2所示,图2 数据库设计部分表及关联关系抽取每个监测项目的共同参数构成主监测项目表,以itemid为主键,作为每个项目的唯一标识;其余各种监测项目各自建立单独的具体参数子表,如http协议监测项目、icmp协议监测项目等,各子表利用itemid字段与主监测项目表关联,对于某个具体项目,通过主表中的项目类型itemtype字段确定子参数表名,然后利用关联关系可得到子表中的参数;报警输出参数表也以itemid字段与主表关联,存放报警方法.5.3 类设计面向对象编程在代码维护、可扩展性、代码重用等方面都有过程编程语言不可比拟的优点,本系统采用vb.net这一完全面向对象的开发语言,同其他面向对象语言一样,类定义是实现的关键,下面列出系统中主要的类定义:(1)基础类:包括数据环境类,此类由system.windows.forms.form窗体类继承,主要扩展了数据库连接、读取、写入成员;串口类,此类负责对rs-232串口的打开、读写、关闭操作;应用程序参数配置类,负责应用程序全局参数的读写分析.(2)用户界面类:由数据环境类继承而来,包括需要使用数据环境的主界面窗体mainform,添加监测项目窗体类additemform,监测项目信息维护窗体类changeitemform.(3)监测项目类:监测项目类由各自被检查项目的基础类继承而来,重载了用于初始化监测参数的构造函数,增加了检查对象工作是否正常的成员函数.具体有温湿度检查类,由串口类继承而来,提供对ltm系列温湿度模块的数值读入、并根据设定正常值范围判断检查结果;供电检查类,由串口类继承而来,提供对ltm系列数字输入模块的数值读入能力,并根据设定的正常值判断市电供电是否中断;tcp/ip检查类,由indy.sockets组件继承而来的常用协议对象监测类,有http、ftp、icmp、sn-mp、dns、smtp、pop3、telnet类等,均扩展了根据输入参数判断对象工作是否正常的成员函数.(4)报警处理类:根据监测项目的报警参数,确定是否输出报警,并实现声光、邮件、短信报警功能.具体有邮件输出类,由indy.sockets的smtp组件实现e-mail报警功能;gsm短信输出类,由串口类继承而来,提供对sms pdu格式编码、按gsm规则输出编码结果到串口、实现中文短信发送功能.声光报警输出控制类:由串口类继承而来,提供对ltm-8000数字输出模块的数值写入能力.在整个体系结构的设计当中,充分考虑了系统的兼容性和可扩展性,表现在两个方面,(1)如果某个监测对象的输入参数或检测办法发生变化,仅修改其项目监测类的具体实现即可,不会影响整个体系结构;(2)当有新类型的监测对象加入时,不需要修改整体结构,仅将其功能实现类加入即可.5.4 关键技术实现5.4.1 数据库连接与管理本系统数据库采用ms-sql server 2000,按设计好的数据库结构建立表及关联关系.对数据库的访问采用了microsoft在.net中推出的新一代数据库访问技术ado.net.与过去的ado技术相比,ado.net中数据库的连接与管理使用.net提供的最新的databaseadapter技术,用全新的dataset代替了recordset,dataset可以说是内存中的数据库,在与数据库连接取得初始数据后,dataset对象包含了数据库系统的所有内容,包括表、表间关系、数据约束等,这样就可以象操作本地数据库一样使用数据库服务器.具体实现:首先建立一个oledbconnection对象,保存与数据库的连接参数,然后为每个表建立oledbdataadapter对象,这将自动生成对每个表的select、insert、update和delete命令;最后从每个表的oledbdataadapter中生成到统一的dataset数据集内,它是一个以xml格式存储的.xsd文件,同时在该数据集中建立各表之间的关联关系.使用时,用oledbdataadapter的fill方法触发与数据库连接并读取数据库内容填充到内存中的dataset对象,然后与数据库断开连接;当希望保存内存数据到数据库时,使用update方法重新连接到数据库,并将在dataset对象中所做的更改保存回数据库.示例代码如下:me.oledamoniitem.fill(me.moniitemdataset1) 读取数据库,填入数据集在存取某个表某行或某个字段时,首先由dataset对象得到相应表的句柄,这可以使用通用datatable类型的对象,也可使用已经产生于该dataset中具体datatable类型,如在本系统中,数据集moniitemdataset1含有各个表的具体datatable类型,如mymoniitem为moniitem表生成的,my-httppara为httppara表生成的;其次,采用同样的方法生成每个表中的具体行、列类型,这样,访问具体字段变量时就可直接用表名、列名,这在开发难度和代码可读性方面都有很大优点.由于设置了关联关系,对每个监测项目,先由主表确定其行位置,然后用主表行的getchildrows方法,来获得关联子表中的行集合句柄.同样也可根据itemrow.itemtype确定监测对象类别,然后用具体的get子表行方法,如getmyhttppararow可以直接获得myhttppara表的行集合,如果子表行集合长度大于等于1,说明有被关联到的记录行,则可存储具体行的具体列,如欲访问http监视参数表中的ip地址字段myhttppararows(0).ipaddress.示例代码如下:for each itemrow as moniitemdataset.mymoniitemrow in me.moniitemdataset1.mymoni-item.rows 访问主表的每一行select case itemrow.itemtype.trim 依据主表行中的监测项目类型case http 如果为http类型dim pararows() as moniitemdataset.myhttppararow 定义http参数表行集合变量pararows = itemrow.getmyhttppararows 得到子表行集合句柄if pararows.length = 1 then 如何行集合中行数为1,则有相关联记录dim sipaddr as string = pararows(0).ipaddress 访问该行中具体字段变量 end ifend select5.4.2 网络数据采集虽然微软. net提供的system. net类库对于tcp/ip协议已有不错支持,但本系统要监测的网络对象包含大量的应用层协议,基于. net自身网络类库逐一实现各种高层协议并不是高效方法.因此采用了著名的indy.sockets组件集,indy.sockets是由chad z. hower领导的一个开源小组in-dyp开发维护的免费、开源internet组件集,它支持clients, servers, tcp, udp, rawsockets等基础协议,并已实现了100多个高层协议及互联网标准,如smtp、pop3、nntp、http等,虽然indy本身由delphi编写,并有替代delphi自身网络组件的趋势,但它也可被大多数开发平台如c#、c+、visual basic.net等任何.net语言使用.indy.sockets组件集与winsock最大的区别是indy是阻塞式(blocking)的,这点与sockets在u-nix系统中实现的方式一致.在windows平台,阻塞式虽然有代码执行期间用户界面“冻结”的缺点,但在编程难度与可移植性方面都远远优于非阻塞式,况且目前win32平台已经支持多线程,可以很方便地使用线程技术解决“冻结”问题.具体实现中,对每种被监测的协议,都由原有组件类继承出一个新的协议检查类,重载含有基本参数、结果判断标准参数的构造函数,判断对象是否工作正常的检查判断成员函数.篇幅有限,以http协议为例,列出简化的类定义如下:public class httpcheck http协议检测类inherits indy.sockets.tcpclient 由indy.sockets.tcpclient类继承private readcmd as string, normal result as stringpublic sub new(byval p host as string, byval p port as integer, byval p readcmd asstring, byval p normal result as string) 构造函数,填写的检查参数依次为主机名、端口号、http读命令、正常结果值mybase.new() 调用基类构造函数 me.host = p host.trim 填写主机地址 me.port = p port 填写端口号 me.readcmd = p readcmd.trim 填写http读命令,如get / me.normal result = p normal result.trim 填写正常返回结果end sub 检查http服务函数checkit()的定义public function checkit(byref sresult as string) as boolean dim result as boolean 返回结果,true=成功,fail=失败 try me.connect() 建立连接 dim bmycmd as byte() = encoding.ascii.getbytes(readcmd + vbcrlf +vbcrlf) me.iohandler.writedirect( bmycmd ) 输出命令dim ret as string = me.iohandler.readstring(normal result.length) 读取结果 sresult = res= + ret 返回结果字符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论