(通信与信息系统专业论文)网络行为预测与显示系统的研究与实现.pdf_第1页
(通信与信息系统专业论文)网络行为预测与显示系统的研究与实现.pdf_第2页
(通信与信息系统专业论文)网络行为预测与显示系统的研究与实现.pdf_第3页
(通信与信息系统专业论文)网络行为预测与显示系统的研究与实现.pdf_第4页
(通信与信息系统专业论文)网络行为预测与显示系统的研究与实现.pdf_第5页
已阅读5页,还剩62页未读, 继续免费阅读

(通信与信息系统专业论文)网络行为预测与显示系统的研究与实现.pdf.pdf 免费下载

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

文档简介

网络行为预测与显示系统的研究与实现 专业:通信与信息系统 硕士生:郑子祺 指导老a j f i 李宁副教授 摘要 随着信息技术和互联网的深入发展,其带来的负面影响和安全威胁也日趋严重, 因此,对互联网管理在提高网络安全性方面的研究成为非常迫切的需要。 与传统的入侵防御系统通过流量检测、特征检测和实时封锁等手段来保护网络环 境的做法不同,本文提出和实现了一个网络行为分析解决方案。通过观察网络内部发 生的事件,将来自多点的流动数据结合在一起,对网络行为进行研究、建模和在线分 析,以便在网络发生变化时帮助管理员更为快速地做出科学的决策。 本系统在内网关键点部署数据采集和记录设备,然后通过中心设备建立分析引擎 对数据进行统计分析,其中包括:链路分析、主机或服务器分析、i p 包分析、连接流 分析、应用端口分析和协议字段分析,从而评估历史和当前的网络状况;在此基础上, 借助a r i m a 方法,根据历史数据对网络的未来状况进行预测;最后将以上分析及预测 结果通过图形用户界面的形式展现。 在实际局域网环境中进行的测试结果表明系统达到了预期目标。 关键词:行为分析,网络管理,预测 r e s e a r c ha n di m p l e m e n t a t i o no fn e t w o r kb e h a v i o rp r e d i c t i o na n d d i s p l a ys y s t e m m a j o r :c o m m u n i c a t i o na n di n f o r m a t i o ns y s t e m n a m e : s u p e r v i s o r : z h e n g z i q i l in i n g a b s t r a c t a si n - d e p t hd e v e l o p m e n to fi n f o r m a t i o nt e c h n o l o g ya n dt h ei n t e m e t ,i t sn e g a t i v e i m p a c ta n ds e c u r i t yt h r e a t sa r ea l s ob e c o m i n gi n c r e a s i n g l ys e r i o u s t h e r e f o r e ,i n t e m e t g o v e m a n c ea n di m p r o v e m e n to fn e t w o r ks e c u r i t ya r eu r g e n tn e e d s t r a d i t i o n a li n t r u s i o np r e v e n t i o ns y s t e ms o l u t i o n sp r o t e c tt h en e t w o r ke n v i r o n m e n t t h r o u g ht h ef l o wd e t e c t i o n ,f e a t u r ed e t e c t i o na n dr e a l - t i m eb l o c k i n ga n do t h e rm e a n s h o w e v e r , t h i st h e s i sm a i n l yf o c u s e so nt h ed e s i g na n di m p l e m e n t a t i o no ft h e n e t w o r k - b e h a v i o r - a n a l y s i ss y s t e m ,w h i c ho b s e r v e dw h a th a p p e n e dt ot h ef l o wo fd a t af r o m m a n yp o i n t sw i t h i nt h en e t w o r ki ns u p p o r to fo n l i n eb e h a v i o ra n a l y s i s n e t w o r kb e h a v i o r t h r o u g ht h em o d e l i n ga n da n a l y s i sc a na c c u r a t e l yu n d e r s t a n dt h ep e r f o r m a n c ei s s u e o c c u r e dw h e nt h ec h a n g e sa r ec a u s e db yt h en e t w o r k n e t w o r ka d m i n i s t r a t o r sc a nq u i c k l y i d e n t i f yt h er o o tc a u s e so ff a i l u r e si no r d e r t or e d u c ef a i l u r er e c o v e r yt i m e t h es y s t e md e p l o y ss e v e r a ld a t ac o l l e c t i o ne q u i p m e n t sa tt h ek e yp o i n t so fi n t e r n a l n e t w o r kt oc o l l e c ta n dr e c o r dd a t at h r o u g ht h en e t w o r kc a r d s t h e nt h e yt r a n s m i tt h e c o l l e c t e dd a t at ot h ec e n t r a ld e v i c e ,w h i c hw i l la n a l y z et h ec o l l e c t e dd a t a ,i n c l u d i n g :l i n k a n a l y s i s ,h o s to rs e r v e ra n a l y s i s ,i pp a c k e ta n a l y s i s ,l i n kf l o wa n a l y s i s ,a p p l i c a t i o n - p o r t a n a l y s i s ,a n dp r o t o c o lf i e l da n a l y s i s t h e r e f o r e ,w ec a nk n o wm o r ea b o u tc u r r e n ta n dp a s t n e t w o r kc o n d i t i o n s a tl a s t ,t h es y s t e mm a k e su s eo ft h eh i s t o r i c a ld a t at op r e d i c tf u t u r e s c e n a r i o su s i n gt h ea r i m aa l g o r i t h m f i n a l l y , t h er e s u l t so ft h ea b o v ea n a l y s i sa n d f o r e c a s t i n gw h i c hr e f l e c tt h ep a s t ,c u r r e n ta n dt h ef u t u r et r e n d sa b o u tn e t w o r kc o n d i t i o n s c a nb es h o w nt h r o u g ht h eg r a p h i c a lu s e ri n t e r f a c e ,a n dt h e r e b yi tc a n h e l pa d m i n i s t r a t o r st o i i i 中山大学硕士学位论文 m a k es c i e n t i f i cd e c i s i o n m a k i n g f r o mt h et e s tu n d e rr e a l i s t i cc i r c u m s t a n c e ,t h ef u n c t i o n sa l ev a l i d a t e du n d e rv a r i o u s k i n d so fl a b o r a t o r yc o n d i t i o n s k e yw o r d s :n e t w o r kb e h a v i o ra n a l y s i s ,n e t w o r ka d m i n i s t r a t i o n ,f o r e c a s t i v 本人郑重声明: 原创性声明 所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取 得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或 集体已经发表或撰写过的作品成果。对本文的研究作出重要贡献的个人和 集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由 本人承担。 学位论文作者签名:爱i 孑则 日期:2 口。年月乙日 学位论文使用授权声明 本人完全了解中山大学有关保留、使用学位论文的规定,即:学校有 权保留学位论文并向国家主管部门或其指定机构送交论文的电子版和纸 质版,有权将学位论文用于非赢利目的的少量复制并允许论文进入学校图 书馆、院系资料室被查阅,有权将学位论文的内容编入有关数据库进行检 索,可以采用复印、缩印或其他方法保存学位论文。 学位论文作者签名: 袭i :子襁 1 日期:2 0 卢年石月2 日 , 聊虢物 日期:7 纠护年占月日 第1 章绪论 1 1 研究背景 第1 章绪论 互联网已成为人类社会最重要的基础设施之一,对人们的经济活动与社会活动正 产生着日益广泛而深入的影响。随着网络技术的日新月异,网络的性能也不断提高, 用户和网络应用逐渐增多。然而这种扩张使网络在可扩展、安全、服务质量和创新 性的应用等方面也面临新的挑战。目前与网络的蓬勃发展不相符的是,对网络运行的 客观规律的研究还缺乏系统的概念和方法,因此无法对网络性能和功能的改善提供可 量化的依据。 掌握网络行为的基本特征有助于网络规划、网络管理和网络安全等研究工作的进 行。通过对网络行为进行测量和分析,了解网络系统存在的不足和问题,就可以及时 了解和排除网络设备或软件出现的故障,为应用和技术的改进提供参考依据,从而提 高网络服务和应用的效率和效梨1 1 。 在网络安全方面,尽管企业在防火墙、入侵防御和杀毒软件等方面投入了大量的 资金,但企业网络仍继续遭受内部滥用和攻击的灾祸。内部滥用和病毒爆发连续七年 在c s i f b i ( 计算机安全协会联邦调查局) 计算机犯罪与安全调查中排在榜首。网络运行 中心的工作人员对于安全周边警报应接不暇,发现不能以旧的方式与内部威胁作斗 争。因此,网络行为分析( n b a - n e t w o r kb e h a v i o ra n a l y s i s ) 应运而生。 网络行为分析是一种比较新的技术领域,利用被动观察和描述找出通信高峰、不 正常的应用和违反政策的行为。与传统的入侵防御系统通过串联通讯检测【2 1 、特征检 测f 3 l 和实时封锁 4 1 等手段来保护网络环境的做法不同,网络行为分析解决方案观察网 络内部发生的事件,把来自许多点的流动数据结合在一起支持在线行为分析。网络行 为分析通过监视网络的通信流检测到雇员使用被禁止的协议和被感染的笔记本电脑 或可移动存储设备在防火墙后面的连接;通过把当前的行为与历史的行为相比较发现 没有使用补丁和病毒特征更新的零日攻击和蠕虫爆发【5 】;通过采取长期的观点不仅支 持纵深防御而且还能够启动容量规划和报剖6 1 。 中山大学硕士学位论文 1 2 论文主要工作 本论文提出了一种网络行为预测与显示系统。它通过一到多个数据采集系统从网 络中各处的链路采集网络的应用、协议、连接、流量、内容、性能等信息,并对所采 集的信息进行预处理和记录;数据传输模块把各个数据采集系统预处理后的数据传输 到数据分析模块所处的中心设备;数据分析模块对收集到的数据,进行即时的和历史 的网络行为分析,包括:链路分析、主机或服务器分析、i p 分组分析、连接流分析、 应用端口分析和协议字段分析,从而评估历史和当前网络状况;在此基础上,借助 a r i m a 方法,根据历史数据对网络的未来状况进行预测;这种网络行为分析通过编 程将结果显示给用户。最后,本文通过搭建实际测试环境,验证了本系统的基本功能。 1 3 论文结构 本文共分为六章: 第l 章为绪论部分,介绍论文选题的背景,概述论文的主要工作; 第2 章首先介绍了数据采集相关技术,包括l i n u x 内核n e t f i l t e r i p t a b l e s 模块和 l 7 - f i l t e r - u s e r s p a c e ,然后介绍了图形界面开发工具q t ,为显示模块的开发提供了 技术基础。 第3 章介绍了数据趋势预测方法x 1 2 a r i m a ,为流量预测模块的实现提供了理 论基础; 第4 章详细阐述了网络行为预测与显示系统的设计与实现; 第5 章搭建实际测试环境,对系统的功能进行验证; 第6 章对全文进行总结,并对后续工作进行展望。 2 第2 章系统开发相关技术 第2 章系统开发相关技术 本章将讲述实现本文提出的网络行为预测与显示系统需要的相关技术。首先介绍 数据采集相关技术l i n u x 内核n e t f i l t e r i p t a b l e s 模块和l 7 f i l t e r - u s e r s p a c e :最后介绍图 形用户界面开发技术q t 。 2 1l i n u x 内核n e t f i l t e r i p t a b l e s 模块 l i n u x 因其健壮性、可靠性、灵活性以及无限定范围的可定制性而在业晃非常受 欢迎。l i n u x 具有许多内置的能力,使开发人员可以根据自身的需要定制其工具、行 为和外观,而无需昂贵的第三方工具。n e t f i l t e t i p t a b l e s 信息包过滤系统是l i n u x 2 4 版 本提出的解决方案,而且也是第一个集成到l i n u x 内核的解决方案,它比以前任何一 版l i n u x 内核的防火墙子系统都要完善和强大,因此在本系统中数据检测部分采用基 于l i n u x 平台的n e t f i l t e r i p t a b l e s 框架来实现。 2 1 1n e t f i l t e r i p t a b l e s 发展简介 每一个主要的l i n u x 版本中都有不同的防火墙软件套件。第一代是l i n u x 内核1 1 版本所使用的a l a nc o x 从b s d u n i x 中移植过来的i p f w 。在2 0 版的内核中,j o sv o s 和其它一些程序员对i p f w 进行了扩展,并且添加了i p f w a d m 用户工具。在2 2 版内核 中,r u s s e l l 和m i e h a e ln e u l i n g 做了一些非常重要的改进,也就是在该内核中,r u s s e l l 添加了帮助用户控制过滤规则的i p c h a i n s 工具。后来,r u s s e l l 又完成了名为n e t f i l t e r 的内核框架。然而,这些防火墙软件套件一般都比其之前的版本有所改进,性能表现 也更加出众。 系统地说,随着l i n u x 内核版本的不断升级,l i n u x 下的包过滤系统经历了如下 3 个阶段【7 】: 1 ) 在2 0 的内核中,采用i p f w d m 来操作内核包过滤规则。 2 ) 在2 2 的内核中,采用i p c h a i n s 来控制内核包过滤规则。 3 ) 在2 4 的内核中,采用一个全新的内核包过滤框架和管理工具 n e t f i l t e r i p t a b l e s t 8 1 。 中山大学硕士学位论文 i p c h a i n s 在2 2 版本l i n u x 使用以后,随着网络安全需要及计算机技术的不断提高, 其设计的缺陷慢慢地浮现出来了,其中些最主要的问题如下: 1 ) 因为具有提供传递数据包到用户空间的框架,所以任何需要对数据包进行处理 的代码都必须运行在内核空间,容易出现错误并对内核稳定性造成影响。 2 ) 透明代理实现比较复杂,必须查看每个数据包来判断是否有专门处理该地址的 s o c k e t 。 3 ) 必须利用本地接口地址来判断数据包是本地发出、还是发给本地或是转发,然 而,创建一个不依赖于接口地址的数据包过滤规则是不可能实现的。 4 ) i p c h a i n s 代码既不模块化又不易于扩展( 例如对m a c 地址的过滤) 例。 自2 4 版本以后的l i n u x 针对以上的问题,在内核实现了一个抽象、通用化的防 火墙框架n e t f i l t e r ,比以前任何版l i n u x 内核的防火墙子系统都要完善和强大,使 用户可以完全控制防火墙配置和数据包过滤。n e t f i l t e t 和i p 报文的处理是完全结合在 一起的,同时由于n e t f i l t e t 和i p t a b l e s 结构相对独立,又是可以完全剥离的,所以这 种模块化机制也是n e t f i l t e r 既高效又灵活的保证之一1 0 1 。 2 1 2n e t f i l t e r i p t a b l e s 架构概述 l i n u x 提供的防火墙软件包内置于l i n u x 内核中,是一种基于包过滤型的防火墙 实现技术。其核心思想是根据网络层i p 包头中的源地址、目的地址及包类型等信息 来控制包的流向。在此基础上,可以通过检查包中的源端口、目的端口以及连接状态 等信息来加强过滤。 ( a ) n e t f i l t e r i p t a b l e s 架构概述 n e t f i l t e r i p t a b l e s 系统使用户可以完全控制防火墙配置和信息包过滤。它允许为防 火墙建立可定制化的规则来控制信息包过滤。基于n e t f i l t e r i p t a b l e s 的l i n u x 包过滤防 火墙通过制定有效的防火墙规则,可以保护内部网络用户的安全,确保用户能够正常 使用内部网络和互联网资源。虽然n e t f i l t e r i p t a b l e si p 信息包过滤系统被称为单个实 体,但它实际上由两个组件n e t f i l t e r 和i p t a b l e s 组成【1 1 l 。 1 n e t f i l t e r 组件也称为内核空f 日q ( k e m e l s p a e e ) ,是内核的一部分,它是l i n u x 内核 中个通用架构,提供一系列的表( t a b l e s ) ,每个表由若干链( c h a i n s ) 组成,而每条链 可以由一条或数条规贝u ( r u l e ) 组成。因此可以理解n e t f i l t e r 是表的容器,表是链的容 4 第2 章系统开发相关技术 器,而链又是规则的容器。此外它可以和其他模块( 如i p t a b l e s 模块和n a t 模块) 结合 起来实现包过滤功能。 n e t f i l t e r 框架主要包含以下三个部分【1 2 l : ( 1 ) n e t f i l t e r 为每种网络协议( i p v 4 、i p v 6 等) 定义一套钩子函数,这些钩子函 数在数据包流过协议栈的几个关键点被调用。在这几个点中,协议栈将把数据包及钩 子函数号作为参数来调用n e t f i l t e r 框架。 ( 2 ) 内核的任何模块可以对每种协议的一个或多个钩子进行注册,实现挂接,这样 当某个数据包被传递给n e t f i l t e r 框架时,内核能检测是否有任何模块对该协议和钩子 函数进行注册。若注册了,则调用该模块注册时使用的回调函数,这样模块就有机会 检查( 可能还会修改) 该数据包、丢弃该数据包以及指示n e t f i l t e r 将该数据包传入用 户空间的队列。 ( 3 ) 排队的数据包被传递给用户空间并进行异步处理。当用户进程能检查数据包 时,甚至可以重新将该数据包通过离开内核的一个钩子函数注入到内核。 2 i p t a b l e s 组件是一种管理内核包过滤的工具,也称为用户空间( u s e r s p a c e ) ,可以 通过它配置内核包过滤表格中的规则来做访问控制,使之变得更容易,但真正来执行 这些过滤规则的是n e t f i l t e r 及其相关模块。 i p t a b l e s 模块实现了三个规则列表来筛选流入、转发和流出数据包:f i l t e r ( 信息包 包过滤表) 、n a t ( 地址转换表) 、和m a n g l e ( 数据报处理表) ”1 。内核根据这三个规则列表 的目标选项对来自某些源、发往某些目的地或具有某些协议类型的信息包进行处理。 如果某个信息包与规则匹配,那么使用目标a c c e p t 允许该信息包通过。还可以使 用目标d r o p 或l 迮j e c t 来阻塞并杀死信息包。 在规则列表f i l t e r 中,可根据所处理的信息包类型将规则分组在不同的链中。处 理入站信息包的规则被添加到i n p u t 链中。处理出站信息包的规则被添加到 o u t p u t 链中。处理正在转发的信息包的规则被添加到f o r w a r d 链中。这三个 链是规则列表f i l t e r 中内置的缺省主链。另外,还有其它许多可用的链的类型( 如 p r e r o u t i n g 和p o s t r o u t i n g ) ,以及提供用户定义的链。每个链都可以有一 个策略来定义“缺省目标”,也就是要执行的缺省操作,即当信息包与链中的任何规则 都不匹配时执行的操作。 ( b ) n e t f i l t e r i p t a b l e s 中的信息包过滤工作原理 首先通过i p t a b l e s 建立规则并将链放在适当的位置,然后就可以开始进行真正的 中山大学硕士学位论文 信息包过滤工作了。当信息包到达防火墙时,内核先检查信息包的头信息,尤其是信 息包的目的地。如果信息包源自外界并前往系统内部或系统所连接的内部网上的其它 源,而且防火墙是打开的,那么内核将它传递到内核空间信息包过滤表( f i l t e r 表) 的 i n p u t 链。如果信息包源自系统内部或系统所连接的内部网上的其它源,并且此信 息包要前往另一个外部系统,那么信息包被传递到o u t p u t 链。类似的,源自外部 系统并发往外部系统的信息包被传递到f o r w a r d 链【1 4 1 。 然后将信息包的头信息与它所传递到的链中的每条规则进行比较,看它是否与某 条规则完全匹配。如果信息包与某条规则匹配,那么内核就对该信息包执行由该规则 的目标所指定的操作。如果信息包与这条规则不匹配,那么它将与链中的下一条规则 进行比较。最后,如果信息包与链中的任何规则都不匹配,那么内核将参考该链的策 略来决定如何处理该信息包。理想的策略应该告诉内核d r o p 该信息包。图2 1 是 n e t f i l t e r i p t a b l e s 数据包过滤过程。 p a c k e t sk i l l e d 2 2l 7 f i l t e r 分析 图2 1 信息包过滤过程【1 5 1 2 2 1l 7 f i l t e r - u s e r s p a c e 简介 6 l 7 f i l t e r t l 6 l 是子2 0 0 3 年发展起来的基于n e t f i l t e r 的应用层上的f i l t e r 代码,最初发 第2 章系统开发相关技术 布的是内核( k e r n e l ) 版,运行和修改程序的时候都会影响到l i n u x 内核,于是开发人 员在2 0 0 6 年发布了相应的用户空间版本,即l 7 f i l t e r - u s e r s p a c e 。此版本调用了n e t l i n k 协议族的功能,可通过i p t a b l e s 的- jq u e u e 命令将内核中的数据包调到用户空间来处 理,这样,l 7 f i l t e r 运行的时候就不会影响l i n u x 内核。另外,用户还可以根据自己 的需求,修改l 7 f i l t e r - u s e r s p a c e 源程序中的代码来改善和增加l 7 f i l t e r 的功能。 2 2 2l 7 - f l t e r 原理及l 7 一f i l t e r - u s e r s p a c e ( a ) l 7 f i l t e r 原理 l 7 f i l t e r 是基于数据流工作的,建立在n e t f i l t e rc o n n s t r a c k 功能之上。因为一个数 据流或者说一个连接的所有数据都是属于同一个应用的,所以l 7 f i l t e r 没有必要对所 有的数据包进行模式匹配,而只匹配一个流的前面几个数据包( 比如1 0 个数据包) 。 当一个流的前面几个数据包包含了某种应用层协议的特征码时( 比如q q ) ,则这个数 据流被l 7 f i l t e r 识别;当前面几个数据包的内容没有包含某种应用层协议的特征码时, 则l 7 f i l t e r 放弃继续做模式匹配,这个数据流也就没有办法被识别。 因此,l 7 f i l t e r 在默认情况下,同一个连接中,缓存只存储1 0 个数据包或2 k b 的数据包内容,将缓存中内容作为普通的文本,用模版文件去匹配缓存的数据包内容。 如果匹配成功,就给数据包打上一个标记,对该数据包进行指定目标处理,否则进行 默认目标处理。它的基本思想是使用正则表达式匹配,识别应用层协议。 ( b ) l 7 f i l t e r - u s e r s p a c e t l 7 1 l 7 f i l t e r - u s e r s p a c e 是l i n u x 系统下的数据包分类器,不像其他大多数的分类器, 它不仅检测端口号等简单的包头信息,而且还使用完整的g r e p 格式的正则表达式以 及模式匹配算法把进入设备的数据包应用层内容与事先定义好的协议规则进行比对, 如果匹配成功就说明这个数据包属于某种协议。 l 7 f i l t e r - u s e r s p a c e 工作方式为:当发现新建立的连接时,用五元组( 称为k e y ) 标记这个新的连接,同时为其建立一个新的线程来处理。对于被调用到u s e r s p a c e 的 每一个数据流分组,先根据该数据流的五元组( k e y ) 找到与其对应的线程号 ( c o n n e c t i o n ) ,然后由该线程把分组存储到缓冲区中,再进行识别分类,识别后打上 标记( 称为m a r k ) ,表明该连接已经被识别,如果该连接已经被识别,则释放缓冲区 空间,后续分组也不再存储。 7 中山大学硕士学位论文 2 3 图形界面开发技术q t g n o m e 和k d e 是l i n u x u n i x 系统下最流行的图形操作环境,它们各自有自己 的底层开发工具包,分别是:g t k + 和q t 。g t k + 完全使用c 语言,但无论在设计上 或是在应用上都具备面向对象的特点;而q t 则完全是一个基于c + + 的跨平台图形用 户界面库。真正使得q t 在自由软件界的众多w i d g e t s ( 如l e s s t i f , g t k 、e z w g l 、 x f o r m s 及n t k 等) 中脱颖而出的还是基于q t 的重量级软件k d e 。q t 虽然是商业公 司的产品,但是走的却是开源路线,提供免费下载,全部都是开放源代码,非商业用 途亦采用g p l 的版权宣告,著名的o p e ns o u r c e ”k d e ”项目便是采用q t 开发的。鉴 于本系统需要适用于l i n u x 和w i n d o w s 操作系统,所以选择底层开发工具包q t 。 2 3 1q t 简介 q t 是一个跨平台的c + + 图形用户界面库。q t 软件前身为t r o l l t e c h ( 奇趣科技) , 2 0 0 8 年6 月被诺基亚收购。目前包括q t 、基于f r a m e b u f f e r 的q te m b e d d e d 、快速 开发工具q td e s i g n e r 和国际化工具q tl i n g u i s t 等部分。q t 支持所有u n i x 系统,当 然也包括l i n u x ,还支持w i n n t w i n 2 k 和w i n 9 5 9 8 平台。通过使用q t ,您可以一次 性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重 复编写源代码。 q t 现在主要是由q td e v e l o p m e n tf r a m e w o r k s ( 诺基亚的一个部门) 的开发精 英开发和维护的。开发q t 的时间迄今已超过1 4 年,全球有数以千计的公司在使用 q t 开发桌面、嵌入式和移动应用程序及u i 。诺基亚通过开源授权( l g p l 和g p l ) 以及商业授权的方式对q t 进行授权,这样开源项目就可以使用q t 进行开发。 q td e v e l o p m e n tf r a m e w o r k s 让开放源码和商业软件的开发人员少编程,多创造, 并可以随处使用。q t 能够让开发人员只需构建一次创新的应用程序和用户界面,便 可以跨所有主要的桌面系统、消费电子产品和其它嵌入式平台扩展这些应用程序,而 无须重新编写代码。 q t 同xw i n d o w 上的m o t i f ,o p e n w i n ,g t k 等图形界面库和w i n d o w s 平台上的 m f c ,o w l ,v c l ,a t l 是同类型的东西,但是q t 具有下列优点: 1 优良的跨平台特性。 8 第2 章系统开发相关技术 q t 支持下列操作系统:m i c r o s o f tw i n d o w s9 5 9 8 、m i c r o s o f tw i n d o w sn t 、l i n u x 、 s o l a r i s 、s u n o s 、h p u x 、d i g i t a lu n i x ( o s f 1 、t r u 6 4 ) 、i r i x 、f r e e b s d 、b s d o s 、 s c o 、a i x 、o s 3 9 0 和q n x 等等。 2 面向对象。 q t 的良好封装机制使得q t 的模块化程度非常高,可重用性较好,对于用户开 发来说是非常方便的。q t 提供了一种称为s i g n a l s s l o t s ( 信号槽) 的安全类型来替代 c a l l b a c k ( 回调) ,这使得各个元件之间的协同工作变得十分简单。 3 丰富的a p i 。 q t 包括多达2 5 0 个以上的c + + 类,还提供基于模板的c o l l e c t i o n s 、s e r i a l i z a t i o n 、 f i l e 、i od e v i c e 、d i r e c t o r ym a n a g e m e n 、d a t e t i m e 类,甚至还包括正则表达式的处理 功能。 4 支持2 d 3 d 图形渲染,支持o p e n g l 。 5 大量的开发文档。 6 x m l 支持。 2 3 2q t 图形用户界面编程 由于本文采用的开发环境是基于k d e 环境的用户界面,所以可以采用k d e q t 来实现本系统应用程序的用户界面设计。我们可以选择多种工具包,其中最常见的有: m o t i f , a t h e n a 、g t k + q t ,m o t i f 和a t h e n a 多用于u n i x 系统,而g t k + q t 更适合 l i n u x 系统。因为本系统还需要适用于w i n d o w s 操作系统,所以本系统选择q t 作 为开发软件包。 q t 图形化架构 1 8 1 如图2 2 所示,由于q t a p i 建立在各种操作系统之上,所以 q t 可轻松实现跨平台的特性,即面向多平台的单一源码,仅需重新编译。 而g n o m e 选择完全遵循g p l 的g t k + 图形界面为基础,因此我们也一般将g n o m e 和k d e 两大阵营称为g n o m e g t k + 和k d e q t 。与g t k + 基于c 语言不同,q t 采用 c + + 语言,k d e 与q t 的关系见图2 3 。 9 中山大学硕士学位论文 q ta p p l i c a t i o ns o u r c ec o d e q t a p i q t f o rq t f o r x l lq t f o r m a cq t f o r $ 6 0 w i n o d o w s0 sx r a s t e r xw i n d o w sc a r b o n w i n d o w g d ic o c o as e r v e r w i n o d o w su n i x l i n u xm a c o s x s y m b i a n o s 图2 2q t 图形化架构 图2 3k d e 与q t 的关系 q t 类库拥有构建强健高端应用所需的全部函数,这些函数被分成若干个模块, 如表2 1 所示。本系统将使用两个核心模块:q t c o r e 和q t g u i 。 表2 1q t 模块组成【1 9 1 通用软件开发模块 q t c o r e 核心非图形接口类,为其他模块所调用 q t g u i g u i ( 图形用户接口) 功能模块 1 0 第2 章系统开发相关技术 q t m u l t i m e d i a 提供低级多媒体功能支持的类 q t n e t w o r k 提供低级多媒体功能支持的类 q t o p e n g l 提供对o p e n g l 支持的功能类 q t o p e n v g 提供对o p e n v g 支持的功能类 q t s c r i p t 提供使应用程序脚本化的工具类 q t s c r i p t t o o l s 为使用q ts c r i p t s 的应用程序提供附加功能的类 q t s q l 提供使用s q l 语言操作数据库表的功能类 q t s v g 提供显示s v g 文件内容的功能类 q t w e b k i t 提供编辑和显示w e b 内容的功能类 q t x m l 提供操纵x m l 语言的功能类 q t x m l p a r e r n s 提供x p a t h ,x q u e r y ,x s l t 和x m l 语言规范的 类 p h o n o n 提供创建多媒体功能的类 q t 3 s u p p o r t 提供从q t 3 平滑过渡到q t 4 的功能类 常用辅助工具模块 q t d e s i g n e r 提供扩展q td e s i g n e r 功能的类 q t u i t o o l s 提供处理使用q td e s i g n e r 创建的窗体的工具类 q t h e l p 提供在线帮助功能的类 q t t e s t 提供单元测试功能的工具类 w i n d o w s 平台上开发者专属模块 q a x c o n t a i n e r 提供获取a c t i v e x 控件和c o m 对象的类 q a x s e r v e r 提供创建a c t i v ex 服务器功能的类 u n i x 平台上开发者的专属模块 q t d b u s 为d b u s 提供进程间通信的类 2 3 3q t 的事件处理机制 编写图形用户界面的主要任务分为两部分:创建窗口部件和编写代码处理回调函 数中的事件。g t k 也使用回调函数处理程序中的事件。但与此不同的是,q t 采用了信 号和槽机制,而信号和槽机制是q t 的核心机制。 信号和槽是一种高级接口,应用于对象之间的通信,它是q t 的核心特性,也是 q t 区别于其它工具包的重要地方。信号和槽是q t 自行定义的一种通信机制,它独立 中山大学硕士学位论文 于标准的c c + + 语言,因此要正确地处理信号和槽,必须借助一个称为m o c ( m e t a o b j e c tc o m p i l e r ) 的q t 工具,该工具是一个c + + 预处理程序,它为高层次的事件处理 自动生成所需要的附加代码【2 0 1 。 在很多g u i - f 具包中,窗口小部件( w i d g e t ) 都有一个回调函数用于响应它们能触发 的每个动作,这个回调函数通常是一个指向某个函数的指针。但是,在q t 中信号和槽 取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。信号和槽能 携带任意数量和任意类型的参数,且参数类型是绝对安全的,不会像回调函数那样产 生c o r ed u m p s 。 所有从q o b j e c t 或其子类( 例如q w i d g e t ) 派生的类都能够包含信号和槽。当对象改 变其状态时,信号就由该对象发射( e m i t ) 出去,这就是对象所要做的全部事情,它不 需要知道另一端是谁在接收这个信号。这就是真正的信息封装,它确保对象被当作一 个真正的软件组件来使用,且对象无需了解具体的通信机制。槽用于接收信号,但它 们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。 因此我们可以将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽 进行连接,甚至于将一个信号与另外一个信号相连接也是可能的,这时无论第一个信 号什么时候发射,系统都将立刻发射第二个信号。总之,信号与槽构造了一个强大的 部件编程机制。 1 信号 当某个信号对其客户或所有者发生的内部状态发生改变,信号被一个对象发射。 只有定义过这个信号的类及其派生类能够发射这个信号。当一个信号被发射时,与其 相关联的槽将被立刻执行,就象一个正常的函数调用一样。信号槽机制完全独立于任 何g u i 事件循环。只有当所有的槽返回以后发射函数( e m i t ) 才返回。如果存在多个 槽与某个信号相关联,那么,当这个信号被发射时,这些槽将会一个接一个地执行, 但是它们执行的顺序将会是随机的、不确定的,我们不能人为地指定哪个先执行、哪 个后执行。 信号的声明放在头文件中,q t l 拘s i g n a l s 关键字指出进入了信号声明区,随后即可 声明自己的信号。例如,下面定义了三个信号: s i g n a l s : v o i dm y s i g n a l o ; v o i dm y s i g n a l ( i n tx ) ; 1 2 第2 章系统开发相关技术 v o i dm y s i g n a l p a r a m ( i n tx ,ny ) ; 在上面的定义中,s i g n a l s 是q t 的关键字,而非c c + + 的。接下来的一行v o i d m y s i g n a l o 定义了信号m y s i g n a l ,这个信号没有携带参数;接下来的一行v o i d m y s i g n a l ( i n tx ) 定义了重名信号m y s i g n a l ,它携带一个整形参数,这有点类似于c + + 中 的虚函数。从形式上讲信号的声明与普通的c + + 函数是一样的,但是信号却没有函数 体定义,另外,信号的返回类型都是v o i d ,因此,从信号返回有用信息是不能实现的。 2 槽 槽是普通的c + + 成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可 以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但 槽的参数不能有缺省值。 既然槽是普通的成员函数,因此与其它的函数一样,它们也有存取权限。槽的存 取权限决定了谁能够与其相关联。同普通的c + + 成员函数一样,槽函数也分为三种类 型,且o p u b l i cs l o t s 、p r i v a t es l o t s 和p r o t e c t e ds l o t s 。 p u b l i cs l o t s :在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对 于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接 以便信息能够正确的传递。 p r o t e c t e ds l o t s :在这个区内声明的槽意味着当前类及其子类可以将信号与之相连 接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。 p r i v a t es l o t s :在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这 适用于联系非常紧密的类。 槽的声明也是在头文件中进行的。例如,下面声明了三个槽: p u b l i cs l o t s : v o i dm y s l o t o ; v o i dm y s l o t ( i n tx ) ; v o i dm y s i g n a l p a r a m ( i n tx ,i n t

温馨提示

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

评论

0/150

提交评论