已阅读5页,还剩55页未读, 继续免费阅读
(计算机科学与技术专业论文)网络资源访问控制技术的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 信息的网络化大大提高了日常办公的效率,但同时也对信息的安全带来了日 益严重的挑战。目前,网络访问控制技术有很多种,例如:m a c 地址过滤、基 于p 地址的访问控制列表和防火墙控制【i 】等等。但这些方法都具有一定的局限 性,它们只能对访问网络资源的主机进行合法性验证,而对访问网络资源自q 用户 身份却不加限制。基于这些问题,本文在研究w i n d o w s 网络架构和网络协议韵 基础上,采用数据包过滤思想,设计了基于数据包过滤的网络资源访问控制系统 来解决这些问题。 论文的主要工作包括: 1 在研究啪n d o w s 的网络协议架构和w i n d o w ss p i 技术1 6 j 的基础上,提出通 过对主机的网络活动进行过滤的方式达到对用户身份进行认证的解决方案。 2 在系统设计中,为了增强本系统的稳定性和安全性,系统共由三部分组成: 请求过滤程序、访问过滤程序和用户身份认证程序。请求过滤程序负责对提出网 络请求的主机的网络请求进行过滤;访问过滤程序对提供资源的主机的网络活动 进行过滤;用户身份认证程序负责对用户身份进行认证。 3 利用s p i 技术实现过滤器,对参与通信的主机的网络活动进行过滤以达到 要求用户进行身份认证的目的;采用双因素身份认证技术1 4 】进行身份验证。 本论文研究的网络资源访问控制系统细化了网络访问控制粒度,由原来的单 台主机细化为使用主机的用户,使网络访问控制架构更加完整和安全。 关键词:访问控制,数据包过滤,s p i ,身份认证,网络资源 a b s t l i a c t 、7 l ,i t ht h e 撤d e v c l o p m e n to fi n t e m c ta f l dw j d d 晰d ew 曲,p e o p l e 啪w o r k n l o r ee 岱c i e n t l y n se 船i e rt of i n da n du s ei l l 】f o r i i l a 矗o n a n da tm es a i n e 矗m e ,h o wt 0 s c c u r ed a t ai sf k i i l gm a n yc h a l l e n g e s n 讲矾i 出哼s ,t l l e r ea r em a i l yw a y st oc o n t r o l p e o p l et oa c c e s sn 鸭s u c h 嬲m a ca d d r e s sf i h e r i i l g 锄df i r e w a l l ,e t c b u tn l e yh a v e ac o n l m o nl i i l l i 枷o nt l i a tt 量l e yc a no i l l yv ,i l i d a t ew h e t h c 蕾t h eh o s tl l a s1 l l er i g h tt o a c c e s sn e t w h i l ec a i ln o ti d 酬f yt h el 培e r sw h o 耐t h en e t - t h ed i s s e r 眦i o ni sd e v o t c dt o 地o r e t i c a l 孤d 辨烈i c a lg t i l d yo fw 协d o w s n 嘶o r kt e c h n i q u e s 1 1 l es y s t e md i s c u s s e d 证t h ed i s s c n a n o nc 锄i d e n t i 锣t h eu r s v a l id i _ l y 如ra c c e s s i l 唱也en e t t h em a i nc o l 曲锄:f sa r e 豁f o l l o w s : i w i n d o w sn e t w o r ks 仇1 c t u r ca n dw i n d o 、v ss p it e c h i l i q u e sa r er e v i e 、e d 劬m 血c o r ya n d 婵i c t i 阮f i l t c 咖gt h ea c c e 够t 0n e tl l s i n gw i n d o 粥s p it e c l l i l i q u e si s 出s c i l s s c di i lo r d c rt 0i d c n t i 分t h e 璐e f sv a l i d i 够 2 t oi i n p r o v em e a c c e s sc o n 扛o ls y s t 鼬s a c s ) s t a b i l 时趾ds e c 谢吼 t l l i sp a p c rp r o p o s e s 锄dd c s c r i b e sa r c m t e c t i 鹏w h i c hc 0 璐i s 乜o f 恤ep a n s :阳1 1 c s t f i l 魄a c c c s sf i l t e ra i l da 删k n t i c a 虹o nc e l l t e r t h er e q l l c s tf i n e rt a k c sc h a f g co f f i l t c r i n gm co u t - c o 眦e c t i o no f m cc l i e mh o s t ;t h ea c c e s sf i l t e ri si l lc h a 唱eo f f i l 州n g 咖ei n c o 曲e c 石彻o ft b es e n ,e rh o s t :w 1 1 i l et 】1 ea u t h e n t i c a t i o n ( :b n t c fi d e n t i 矗e st h e l l s e r sv a l i d 吼 3 强et w o i l t c r sa r cr e a l i z e dn u 庐w i n d o w ss p i ( s e r 订c ep f o v i d e ri n t e r f a c e ) 。 k e yw o r d s :a c c e s sc o 咖l ,d a t ap a c k c tf i l t e 咖g ,s p i ,a u 血e 面c 撕o n ,n e t 鼬s o u c e 西北工业大学 学位论文知识产权声明书 本人完全了解学校有关保护知识产权的规定,即:研究生在校攻读学位期间论文工作的 知识产权单位属于西北工业大学。学校有权保留并向国家有关部门或机构送变论文的复印件 和电子版。本人允许论文被查阅和借阅。学校可以将本学位论文的全部或部分内容编入有关 数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。同时本人 保证,毕业后结合学位论文研究课题再撰写的文章一律注明作者单位为西北工业大学。 保密论文待解密后适用本声明。 学位论文作者签名:圣立蛰函 冲1 褐月jt 日 指导教师签名 加 鹌 西北工业大学 学位论文原创性声明 秉承学校严谨的学风和优良的科学道德,本人郑重声明:所呈交的学位论文,是本 人在导师的指导下进行研究工作所取得的成果。尽我所知,除文中已经注明引用的内容 和致谢的地方外,本论文不包含任何其他个人或集体已经公开发表或撰写过的研究成果, 不包含本人或其他已申请学位或其他用途使用过的成果。对本文的研究做出重要贡献的 个人和集体,均已在文中以明确方式表明。 本人学位论文与资料若有不实,愿意承担一切相关的法律责任。 学位论文作者签名:曩五驾函 7 年;月旧 西北工业大学顼士学位论文第一章绪论 1 1 课题的研究背景 第一章绪论 信息的网络化大大提高了日常办公的效率,使得工作人员可以方便地在网络 上查找、使用与维护各种信息,但同时也对信息的安全带来了日益严重的挑战。 网络的互通性与信息的安全性这一对矛盾自网络问世以来就伴随着网络的成长 而日益成为网络用户与网络技术人员关注的焦点。由于业务的需求,人们希望网 络能够四通八达,自己的终端能够访问到网上自己关心的所有资源;另一方面, 同是出于业务需求,人们要求网络能够对不同来源、不同角色对网络的访问进行 控制,以确保自己的资源不受到非法的访问与篡改。 目前,网络访问控制技术有很多种,例如:m a c 地址过滤、v l a n 隔离、 m e e 8 0 2 1 q 身份验证、基于职地址的访问控制列表和防火墙控制等等。但这些 方法都具有一定的局限性。 采用m a c 地址过滤技术时,当某个网络设备的网卡发生变化时要对系统进 行重新配置,维护工作量大。此外,现在许多网卡都支持m a c 地址重新配置, 非法用户可以通过将自己所用网络设备的m a c 地址改为合法用户m a c 地址的 方法,使用m a c 地址“欺骗”,成功通过交换机的检查,非法访问网络资源。 v l n 隔离的安全酶患在于它不能针对个别用户进行限制。采用访问控制表时, 当网络终端数量较大时,同样会使得管理的复杂性和难度十分巨大。防火墙设备 如果要达到很高的数据吞吐量,其设备造价将会非常高,通常在企业应用中都只 能用于整个企业的出口安全,在企业网内部的安全保护方面使用较少。 目前的访闯控制技术都存在一个共同的缺点,即只能实现对一个网络的资源 进行访问控制,而对访问网络资源的用户身份不能进行有效的验证。所以,现在 迫切需要一种技术与手段,能够对访问的网络资源的用户身份的合法性进行验 证。 本文设计的系统主要由三部分组成:部署在客户端的过滤程序、部署在服务 端的过滤程序和身份认证服务器。过滤程序的主要功能是对进入和出去的网络请 求进行过滤,只有用户成功进行身份认证后,才能进行网络通信,访问网络资源; 认证服务器的主要完成对用户身份的管理和验证工作。 西北工业大学硕士学位论文 第一章绪论 1 2 课题的研究与实现工作 本文的设计基于灿w s 网络协议架构,利用w i n s 眦k 2s p i 技术,实现对 网络连接的过滤,通过双因素身份认证方式对用户身份进行验证,合法的用户可 以访问网络资源,非法用户则不能访问网络资源。根据以上的实现思路,提出了 主要由以下三部分组成的系统:请求过滤程序,访问过滤程序和身份认证程序, 然后围绕这三个部分进行深入的研究和学习,提出了各部分的设计和实现方法: 1 ) 设计并实现了基于w 吣o c 娩s p i 技术的请求过滤程序。 2 ) 设计并实现了基于w m c k 2s p i 技术的访问过滤程序。 3 ) 设计并实现了基于双因素身份认证技术的身份认证程序。 1 3 论文的组织安排 全文共分为六章。 第一章为绪论。简单介绍了本课题背景和设计与开发工作。 第二章主要是对w m d o w s 网络协议架构的研究。通过对w i n d o w s 网络协议 架构和t c p m 协议在晰n d o w 8 系统中的实现,为本文进行系统设计提供理论基 础。 第三章主要研究本系统中涉及的主要技术。通过对相关技术的研究,为本系 统的实现提供技术基础。 第四章为本文系统的设计方案。详细阐述了本系统的设计方案。 第五章为本文系统的实现。详细描述了本系统的实现过程。 第六章为研究工作的总结和展望。对本文的研究工作进行总结,并对下一步 的工作进行展望。 2 西北工业大学硕士学位论文第二章w 函d o w s 网络协议絮 第二章w i n d o w s 网络协议架构 w i n d o 、船操作系统目前仍占据着个人计算机市场,同时,由于网络的迅速崛 起,网络的软件化和软件的网络化形成了一个新的发展均势,这种形势造就了网 络编程成为较为热门的技术。w i n d o w s 网络编程1 7 1 技术有许多种,例如常见的 c k ,w 越r l 或;不常见但又非常重要的n d i s 【l 州( 网络驱动程序接口规范) 等。就像a p i 为应用程序提供接口一样,n d i s 为驱动程序提供网络接口,它有 一组标准的网络函数供驱动程序调用。本章将详细讨论w i n d o 、s 网络协议架构。 2 1w i n d o w s 网络协议的实现 w i n d o w s 网络编程的根本是实现不同主机之间的通信。为了实现这种通信而 制定了各种协议,目前仍沿用o s i 模型用,即网络7 层协议。随着h l t e n l e t 的发 展,t c p m 协议【1 已经成为事实上的广域网通信标准。 2 。2w i n d o w s 操作系统的总体架构 w i n d o w s 操作系统的总体架构分为两个层次,上层为应用层,下层为核心层。 其结构如图2 1 所示。 应用程净( e j 泡) 应用程序 ( 嚣x 嚣) 应用层动态链接库( d 重j l ) 核心屡驱动i 辨( v 趵或者s y 8 ) 硬件 图2 1w i n d o m 操作系统的架构 应用层是可以直接接触到的,应用程序( e ) 【e ) 工作在这一层:动态链接库嗍 ( m 1 ) 也属于应用层的范畴,动态链接库被应用程序调用时就成为应用程序的 部分,所以它们并没有本质的区别。e x e 和d u ,是两种工作方式不同的应用 3 西北工业大学硕士学位论文 第二章w i n d o w s 网络协议架 程序。e x e 是一个独立且可以直接执行的模块,受w 砌o w s 进程保护机制的保 护,其他程序无权直接使用这个程序的模块和数据。d l l 是一个共享的函数库, 它提供标准的接口供其他程序调用,本身却不能单独运行。 各种用户界面都是应用程序运行的结果,它们工作在应用层。在应用层的下 面还有一层叫做核心层( k e m e l ) 。w - m d o w s 9 5 9 8 下核心层的程序扩展名为v x d w i n d 0 、) i r sn 1 y 2 0 0 0 下核心层的程序扩展名为s y s ,这些程序叫做驱动程序。驱动 程序为上层应用程序提供底层的支持。例如,两个人通过q q 聊天的工作过程如 图2 2 所示。 qqqqb 在缠辑摄中输入文字并发避 显示箍息 q q 将数燕传递到下层的服务提供莆 应用层 ( 菝心窿的驱动程序)应用屈 o q 接收驱动程序发送避采的数据包 辕幽蒜 驱动程序按协议将敛据发送捌弼卡 援心层 驱动程序按狲议将数摆翻译成q q 识 另q 豹数据井传送劁q q 碰用程序 翻卡运造嘲络连接将毂捂毽爱出隧卡通接收钝a 敖迸的数据包 l i 图2 - 2 q q 聊天过程 在这个过程中,q q 应用程序提供了用户界面,供用户输入信息和显示接收 到的信息,核心层的驱动程序则完成数据封包的处理。 这种分层结构可以实现代码共享。以协议驱动程序为例,一个系统里会有许 多程序使用相同的网络协议,把协议驱动程序单独调用出来就可以实现代码的共 享。就像d l 工可以被所有的e x e 调用一样,所有程序都可以调用同一个协议驱 动程序。这种分层结构还可以实现安全保护。在w i n d o w s 保护机制的作用下, 应用程序受到许多限制。例如,应用程序无权直接操作c p u ,不能直接操作其 他应用程序的内存缓冲区等 2 3 网络7 层协议在w i n d o w s 中的实现 为了更好地理解7 层协议在w i n d o 粥中的应用,首先了解一下o s i 模型。 如图2 3 所示。 4 西北工业大学硕士学位论文第二章w i n d o w s 网络协议架 物理舟赁( p 姆神c 柚m 硝l u q l 图2 - 3 0 s i 模型 物理层就是网卡。一是将线路发送过来的高频电流转化成数据包传送给网卡 驱动程序;二是将网卡驱动程序传送过来的数据包转化成调频电流发送到线路上 去。 数据链路层是网卡驱动程序。负责与w m d o w s 操作系统提供的n d i s 进行沟 通。n d i s 提供标准的接口,网卡驱动程序和协议驱动程序可以利用这处接口来 完成必需的任务。n d i s 横跨数据链路层、网络层和传输层。 网络层是n d i s 。虽然n d i s 横跨三层,但它的职能重心是提供网络层接口。 传输层是1 d i 。t d i 是传输驱动接口,它不仅是一个简单的传送带,还要对 信息进行检索、分类并重新组织。t c p 协议的封包处理就是在这一层进行的。 会话层是s p i 。s p i 是服务提供者接口。属于应用层范畴,负责连接核心层 驱动程序和高层应用程序。 表示层是a p i 。负责s p i 与应用程序之间的数据传输。 应用层是应用程序,最常见的就是e 文件。负责将数据传输结果显示给 用户,将将用户下达的命令传送到下一层。 o s i7 层协议与w m d o 、s 网络协议结构的映射关系如图2 4 所示。 西北工业大学硬士学位论文第二章w i n d o w 5 网络协议架 o s l 7 层协议模型 7 应用层t a p p 4 i l o _ bl | l 弦r 藏示层伊r 目组h l t 撺 s - 舍话屡( a p p l h h o hl 雒e 时 4 佟辘魁 p 他蛐n 住d 蚰l 叠y e n 3 溯络层却p c t t i 雠l j 哪 复数据镀路层p k # t i t l l 硝c r ) l 赣理屡协”h c 正t i l _ p 坤 w l n d 口w s 结构 7 应甩程序e x 盼 t 硒嚆啦咐c k p “肛l l 应用层 s p h d l l 0 核心膳 禾t 脚h d 7 螂砷 童n d l s b l d ,町1 ) 2 阿卡驱动程序t m m # 娴 i 网卡 图2 - 4o s i7 层协议与厂m d o w s 结构的概略映射 将概念性的文字换成真正的应用程序,得到更加直观的映射图2 5 。 o 潮7 屡协议模型 丁应甩层( a p p 霉h 弧删 袭示层( p 件t 时i o t l 娜r ) s 会话段l a 弹b c 以o nl 毫挣磅 传输崖( p r 拍撇i 蛐l 雎e r 3 ,掰络屈协p p i | c l nl 冀y 螂 2 敦据链路层伊瑚1 4 t h b l - y e r ) 翻自理崖 a p 啦- 蠊l 町哪 w t n d g w s 铬构 7 x “e 。 、v 1 2 - 3 2 d 阻- 成甩屠 5 溉瞧。 核心篾 t 印j p 刚k 枷d 缸,弘 2 捌吐o j 辨 l ,嘲卡 图2 5 0 s i7 层协议与w n d o w s 程序的映射 其中) o ( e x e 为某个应用程序,而x x d l l 是为) 。【e x e 工作的s p i 程序。图 2 5 中提到的文件都保存在硬盘的某个目录下面,运行时就会被系统加载到内存 中,各个完成自己的工作,这样我们就可以比较形象地理解这些协议。 2 4t c i p 协议的架构 t c p 仰协议是一组完整的网络协议,它不需要o s i 模型的支持,不过,可以 用其与o s i 模型的映射关系来帮助理解t c p p 协议。t c p 琅协议分为4 层, 6 獭妣t c p 刀p 协议与o s i 模型对应关系如图2 6 所示。 o 辍7 屡协议模型w i n d 懈5 r c 辫l p 攮型 图2 6o s i7 层协议与w i n d o 嬲t c f v l p 协议的关系映射 从图2 6 可以看出,t c p m 协议的应用层相当予o s i 的高3 层。传输层仍然 相当于o s i 的传输层。t c p 坤协议为网络层换了一个名字,称它为i n t e m e t ,这 是实现口协议的层。t c p 】口协议将数据链路层和物理层统称为网络接口。t c p i p 实际上是一组协议的词,而不是单个协议。将t c m p 的各个协议展开,可以形 成如图2 7 所示的关系映射。 o s i7 层协议模型w l n d o mr r o p ,i p 模蛩 图2 7o s i7 层协议与m n d o mt i 驯m 协议组的映射关系 现在对本论文涉及到协议进行解释,其它协议不再进行介绍。 ( 1 ) t c p ( 仇塔m i s s i o n c o n 们l p r o t o e o l ,传输控制协议) :是面向连接的协 议,提供可靠的数据传输,对传输的数据进行正确性检查。发送出去的数据需要 得到对方的正确性确认,如果返回不成功,则进行重发。 ( 2 ) u d p ( u s e fd a 乜蝴mp r o t o c o i ,用户数据包协议) :是面向无连接的协 7 盟日 一一日一一一 一一一一一一一 议,不对传输数据进行正确性检查。发送数据后,不再关心对方是否正确接收到。 ( 3 ) p ( i n t e m e tp r o t o c o l ,i n t e n l e t 协议) :i n t e n l 砹通信最主要的网络协议, 提供主机间可靠的地址跌幅,但是对网络上数据包的传送是无连接的,不保证数 据可以安全、正确地到达目的地。 8 西北工业大学硕士学位论文第三章相关技术研究 第三章相关技术研究 3 1w i n s o c k2s p l 技术 w i 璐o c k2 【7 】是眦d o w ss o c k e t s 的2 o 版本,在这个版本中收入了一种新的 叫做s p i 的编程接口。利用这种技术可以在s o c k e t 中插入一层,从而可以完成 诸如传输质量控制( q o s ) 、扩展t c p m 协议栈、网络封包过滤及网络安全控制 等功能。 w 姗c k 2 是一个接口,而不是协议,所以它可用于发现和使用任意数量的底 层协议所提供的通信能力。w i n s o c 也不仅提供了一个供应用程序访问网络服务 的礅n d o w ss o c k c t 应用程序编程接口( a p i ) ,还包含了由传输服务提供者和名 字解析服务提供者实现的w i t l s o c k 服务提供者接口( s p i ) 和w s 2 3 2 d 1 1 。w 协s o c k 2 s p i 是以动态链接库形式( d l l ) 存在的,它工作在a p i 和w e r 之间,为上 层应用程序提供服务。它是通过w s p s t a r t u p 函数为上层函数提供接口,而其它 的传输服务提供者函数则是通过分配表的方式来访问w s 2 3 2 m l 。传输服务提供 者的动态链接库只是在应用程序需要时才由w s 23 2 d l l 来装入内存中的,在不需 要里则会被自动卸载。 3 1 1s p i 技术的研究 w i 璐0 c k 是为上层应用程序提供的一种标准网络接口。上层应用程序不用关 心w i n s o c k 实现的细节,它为上层应用程序提供透明的服务。 w 幽c k2 引入的一个新功能就是打破服务提供者的透明,让开发者可以编 写自己的服务提供者【6 】接口程序,即s p i 程序。s p i 以动态链接库( d l l ) 的形 式存在,它工作在应用层,为上层a p i 调用提供接口函数。 用户自己编写的s p i 程序安装到系统之后,由操作系统负责在需要时加载到 内存中。由于系统提供的s p i 已经可以完成网络传输功能,所以一般由用户开发 的s p i 程序不再需要实现网络传输部分的功能,而是直接调用系统的s p i 程序的 网络传输功能,这样工作的效果就是“钩子”程序。w 妇o c k2 提供的服务者的 结构如图3 1 所示。 9 西北工业大学硕士学位论文第三章相关技术研究 日 w l 雠虹 孥输丑重棼凝骺者接口帅删名孕空制服务挺靛张口 圈圆圈圆 图3 1 w i i l s o c k 2 s p i 结构 w 协s o c k2s p i 除了有完成网络传输功能的传输服务提供者( t r 椰p o r ts e i c e p r o v i d e r ) ,还有提供友好名称服务的名字空间服务提供者【6 j ( n a m es p a c es e r v i c e p r o v i d e r ) 。传输服务提供者能够提供建立通信、传输数据、流量控制和错误控制 等服务;名字空闯服务提供者把一个网络协议的地址属性和一个或多个用户友好 名称关联起来,这样可以启用与协议无关的名字解析方案。 由于s p l 是为a p i 提供服务的接口,所以一般情况下w 协s o c k 的a p i 函数在 s p i 中都有与之相对应的函数,但也有由w s 2 - 3 2 曲自己完成的。a p i 与s p i 对 应关系如表3 1 所示( 没有全部列出) 。 表3 1w i n s o c k a p i 函数与s p i 函数之间的对应 w l n s o c ka p i 函数 w t “s ka p l 扩碰函数对应莳s p i 函鼗 s o c k 薛w s a s o c k 以w s p s o e k 娃 w s a s t a r 蛔p w g p s t 日t u p w s a s h | d 酗d d 弛 w s i s 州n 鬈t 9 a l h i n 珥 a d :e 蝉 w s a a o 口p lw s p a c e w s a a d d m s t 棚抽gw s p a d d r m 勖s t r l 弼 w 酗a 昭d 轴l e 雌w s p a 掣瞄畦e “ “ 一 w i n s o c ks p l 与w i 璐o c k a p i 相对应的函数在用途和用法上基本相同,了解了 a p i 的基本用法,基本上就可以运用s p i 函数了,所以本文对s p i 函数的用法就 不再赘述。 l o 西北工业大学硕士学位论文第三章相关技术研究 啦3 2 d l l 的数据传输部分的主要功能是在服务提供者和应用程序之间提供 流量管理的功能。每个应用程序通过w s 23 2 皿l 和相应的服务提供者进行严格的 数据传递,w s 2 3 2 ,d l l 根据应用程序在创建套接字时所提供的参数来选择特定的 服务提供者,然后把应用程序的实现过程转发给选定的服务提供者来管理。也就 是说,w s 2 ) 2 d 1 1 只是一个中间过程,而应用程序只是一个接口,数据通信的实 现却是由服务提供者为其完成的。w s 23 2 d 是通过创建套接字的a p i 函数 w s a s 0 c k e t 或s o c k c t 的参数来确定使用哪一个服务提供者。而w s a s o c k e t 或 c k c t 的参数中包括了地址族、套接字类型和协议类型,这三个因素共同决定了 创建套接字的服务提供者。w s 23 2 m l 在服务提供者中寻找第一个和前面三个因 素相匹配的w s a p r 0 1 的c o ln 旺o w 结构,然后就加载这个服务提供者到内存 中,通过调用这个服务提供者的w s a s 拓叶u p 函数,进而调用如w s p s o c k e t 函数 来创建套接字,w s p c o 衄e c t 的函数来建议连接等等。w s 23 2 m l 与w b o c i ( 2s p i 的关系如图3 - 2 所示。 s 珂 s h 鑫p l 图3 - 2w s 2 - 3 2 d l l 与应用程序和s p i 的关系 除了流量管理功能外,w s 23 2 d n 还提供了其它的服务,例如协议枚举,基 于线程的阻塞钩子管理,及在w s 23 2 d 1 1 和服务提供者之间进行版本协商。其实 w s 23 2 d l l 并不知道服务提供者请求等活动是如何实现的,只是在应用程序和服 务提供者之间实现的媒介功能。w s 23 2 d l l 提供了介质级别的流量管理,应用程 序则提供了有关如何实现网络相关的操作,它实现的了用户所期望的功能。 在传输服务提供者的实现过程中,安装顺序是非常重要的。我们不仅要正确 的安装服务提供者,而且还必须在w m d o 、v ss o c k c t 中注册,将相关的信息保存在 数据库中,这样w s 23 2 d l l 才能方便的获得下层服务提供者的相关信息。在 w s 23 2 m l 中提供了用来安装服务提供者的函数,它需要服务提供者的有关数据, 例如d l l 的名称和路径。同时h 旺3 2 d l l 还提供了卸载服务提供者的函数,在 l , 酣 西北工业大学硕士学位论文第三章相关技术研究 不需要时通过它可以将特定的服务提供者从系统中卸载。 w s 23 2 d l l 在服务提供者中按安装顺序搜寻和w s a s o c k c t 或s o c i 。c t 提供的三 个参数相匹配的服务提供者,所以安装顺序在一定程序上决定了服务提供者是否 被正确调用的关键。w 协d o w s c k e t2 还提供了一个动态链接库s p o r d 既d u ,它 提供了对已安装的所有服务提供者顺序的重新排列。 w s 23 2 d l l 使用标准的动态链接技术加载服务提供者接口的d l l 到系统中, 并调用w s p s t a r t u p 来初始化。w s p 跳时u p 的参数l p w s a p r o t o c o li n f o w 指针提供应用程序所期望的协议信息,然后通过这个结构指针我们可以获得所保 存的系统服务提供者的d l l 名称和路径,加载系统服务提供者并查找到系统s p i 程序的w s p s t a | 加p 函数的指针,通过这个指针我们就可以将自己服务提供者的 w s p s 帅函数和系统s p i 程序的w s p 乳l n u p 进行挂接,在完成特定功能后, 调用系统的各个服务提供者函数以完成任务的转发。 3 1 3 传输服务提供者 传输服务提供者主要分为基础服务提供者和分层服务提供者。传输服务提供 者能够提供建立通信、传输数据、流量控制和错误控制等服务的程序模块,通常 以d l l 的形式存在,在需要时才会被操作系统加载到内存中。由于在本文设计 的系统中,只涉及到基础传输服务提供者的编写,故不对分层服务提供者进行详 细介绍。一 基础服务提供者和分层服务提供者都开放相同的s p i 接口,所不同的是基础 服务提供者位于提供者的最底层。在安装时,要将基础服务提供者安装在服务提 供者加载顺序链的最低端,而分层服务提供是根据需求分布在顺序链的中间。它 们的关系如图3 3 所示。 图3 3w h 培0 c ks p i 服务提供者之间的关系 1 2 腓 腿 n 帆 孵 烈 枷 晰 嫩 鲫 晰 暑; 西北工业大学硕士学位论文 第三章相关技术研究 传输服务提供者是基础服务提供者还是分层服务提供者是由 w s a p r 0 1 o c o i ,i n f o w 结构中的w s 越哏饼r o c o l c h a 结构的c h a i n 【肌 成员变量来决定的。c h a i n l e n 值的含义如表3 - 2 所示。 表3 2c h a i n 【詹n 成员变量的含义 i c h 4 b 1 古义 i o分层服务提供者 | l 基础服务提供者 i 大子1分屠暇务提供者在协议链中的顺序编号 传输服务提供者的w s a p r o t o c o li n f o w 结构信息保存在注册表的 h k e y _ - l o c a i ,m a c h i n e s y s 、m c u i r e n t c o n 扛o l s e t s e r 、r i c e g 悯s o c 尥忡a r 锄e t e r s 憧r a t o c o lc a 诅l 0 9 9 、c a _ 妇l o ge n 岫e s 分支下。在这个分支下,每个类型的服 务提供者都会有一个子分支。子分支的p a c k 嗣c a t a 】o 百t c m 键保存的内容为传输 服务提供者的路径、文件名及w s a p r 0 1 o c o l - d 盯o w 结构。在 w s a p r o t d c 0 ld 盯o w 结构中保存有该服务提供者的唯一标志。 那么这些层与层之间是怎么联系在一起的呢? s p i 程序以d l l 形式存在,以 标准的d l l m a m 函数作为入口函数,并且只导出一个函数w s p s t a r c u p 作为传输 服务提供者程序的入口函数。其中有一个参数是w s a p r 0 1 d c o l j n f o w 结构 的指针,根据这个指针可以得到下一个服务提供者的唯一标志,并根据该标志从 注册表中查出文件路径,进而用l o a d l i b a r y 加载到内存中,通过g e t p r o c a d d r e s 毋 函数得到该d l l 中的w s p s 咖函数地址,然后通过w s p s 咖得到3 0 个函 数服务指针,这样就可以替换这些函数指针以达到自定义的功能,例如:m 过 滤,流量控制等等。w s a s 纽t u p 的函数原型如下; i n tw s 队p iw s p s 切巾似 w o r d w 腮b m t e q 姊酣, l p w s p d a l a l p w s p d a t a , l p w s a p r o t o c o i ,n f o wl p l l 墒, w s p i 耽a i ,l 1 a b l e u p c a l l t 曲l e , l p w s p p r o ct a b l e l p p r o c l 曲l e ) ; l p w s p p r o ct a b l e 结构里保存了传输服务提供者提供的3 0 个服务函数的 指针。只要将这些函数指针赋值为自己的函数的地址,当相应的函数请求发生时 就会首先由自己的函数来处理。当然,一般情况下没有必要去实现所有的函数请 西北工业大学硕士学位论文第三章相关技术研究 求。通过调用下一层服务提供者的w s p s 咖函数,就可以得到底层提供者的 3 0 个服务函数指针,然后自己的服务函数直接调用底层的3 0 个函数就可以完成 请求转发。w s p s 缸咖函数调用前后的对比结构如图3 - 4 所示。 图3 - 4w s p s t a m l p 函数调用前后的对比结构 3 1 4 基础传输服务者的安装 基础服务提供者程序以动态链接库形式存在,不能够单独运行,需要按一定 规则安装到系统中,由系统加载后才能运行,所以需要首先编写一个w i l l s o c k2 s p i 的安装程序。 系统利用注册表的配置来加载w i n s o c k2s p i 服务程序。自己编写的s p i 程 序,只是在系统中闻插入一层做一些特殊的处理,然后仍需要调用系统的s i p 程 序来完成整个通信过程。所以,安装程序需要对注册表进行操作,告诉操作系统 加载自己编写的s p i 程序,并且在安装程序在将系统注册表的s p i 配置换成自己 的配置之前,还需要首先保存系统s p i 的配置自己的s p i 程序调用。 传输服务提供者的w s a p r o t o c o li n f o w 结构信息保存在注册表的 h k e yi ,0 c a i m a c h i n e 峪y s t e m c u 玎c n t c o 叻0 l s e t 、s e n r i c e s 、w m s o c k 2 心a r 锄 e t e r 如r o t o c o l c a t a l 0 9 9 c a t a l o ge 玎埘e s 分支下。在这个分支下,每个类型的服务 提供者都会有一个子分支。子分支的p a c k e d c a c a l o g i t e m 键保存的内容为传输服 务提供者路径、文件名及w s a p r o t o c o li n f o w 结构。 腿e y 上o c a lm a c h 斟e s y s t e m c u r r e n t c o n t r o l s 粥e r y i c e s 、w 抽s o c k 2 项下就是w i 越o c k2 的相关信息。p a 舢e t e r s 子项下保存着s o c k2s p i 的相关 信息,通常由3 个字符串键值和两个子项组成。c u r f e n tn 锄e s p a c ec a t a l o g 键 1 4 西北工业大学硕士学位论文第三章相关技术研究 值为当前命名空间服务提供者的目录,默认值为n a m e s p a c ec a l a l 0 9 5 ; c u 玳i n tp r o t o c o l - c a c a l o g 键值为当前m m o c k 的版本:n a m e s p a c 啊a t a l 0 9 5 子项 下保存命名空间提供配置信息。p r o t o c o l 吼a l 0 9 9 c a 诅l o ge n 研e s 子项下保存服 务提供者的配置信息,下面有一组用服务提供者编号命名的子项,予项中都有一 个键值是p a c k e d c a t a l o g i t e m 。p a c k e d c a t a l o g i t e m 键值为二进制类型,里面保存 服务提供者的路径和协议信息。 在本系统中,编写的s p i 程序为基础服务提供者,且只对t c p ,口的i p v 4 做 处理( 地址家族为a fi n e t ) ,所以安装程序只需要替换t ( :p 】p 地址家族为 a fi n e t 的基础服务提供者配置。在w s a p r 刚的c o l - 矾f o w 结构中的 认d d r e s s f 锄i l y 成员变量就是地址家族变量;p r o t o c o l c l l a i n 成员变量的数据类型 是w s a p r o t o c 0 l c h a 矾结构,其中有一个成员变量c h a i l l l e n ,可以用 c b a j n ie n 的值来基础服务提供者还是分层服务提供者,c h a i n l e n 为0 表示分层 服务提供者,为l 表示基础服务提供者。因此可以用c 蜥n l 舳和i a d d r e s s f a m i l y 字段来确定我们要替换的基础服务提供者。基础服务者安装前后的对比如图3 5 所示。 图3 5 基础服务者安装前后的对比 本系统安装程序的实现见5 4 2 一节。 3 1 5 基础服务提供者程序的实现 基础服务提供者程序的实现主要分为两步。 第一步是在w s p s t a | 知p 函数中用自己的服务函数替换系统基础服务提供者 中的s p i 函数,实现过滤w s p s t a 咖函数的程序流程如图3 - 6 所示。 西北工业大学硕士学位论文 第三章相关技术研究 图3 - 6 替换系统基础服务提供者的s p i 函数 第二步,w s p s 谧t u p 利用上图所示的流程完成了对s p i 服务函数的过滤,接 下来就是在自己的服务函数中进行处理,然后在自己的服务函数再调用已经保存 在n e x t p r o c t a b l e 中的系统服务提供者函数实现请求中转。代码框架如下( 以过 滤w s p s e n d 函数为例) 。 蛳w s p a p iw s p s 切巾l “ w o r dw v e r s i 彻r c q u e s l e d , l i w _ s p d a l 隗 l p w s p d a t a l p w s a p r o t o c o li n f o w l p p - o t o c o n f o , w s p u p c a l l l l a b u u p c a n l 曲1 e , l p w s p p r o ct a b l e l p p r o c l 曲l e ) 根据”w s a p r i 删o i j f n f o w 结构得到系统需要加载的基础服务提供者 ,根据得到的路径取得d l l 的入口地址 h m o d u i 正h l m r a r y h 勰d l e 2 l o a d l i b r a r y ( s l i b 例归a 廿1 ) ; ,取得s p i 的入口函数地址 l p w s p s t a r r ij pw s p s 协l 柚p f u 栌 a l p w 鲫s t a r l l j p ) g e t p r o c a d d s s i b m i y h 孤d l e ,”w s p 鼬| n u p ”) ; 1 6 西北工业大学硕士学位论文第三章相关技术研究 ,调用w s p s 诅l t u p f 咖c 得到该基础服务提供者的3 0 个s p i 函数指针 w s p s t a l 呻f 咖似,、梳i o n r 蜘u e s t e d ,l p w s p d a 扭, l p p r o t o c o l h 曲,u p c a l l t a b l e ,l p p r 1 曲l e ) ; ,将3 0 个s h 函数指针保存在全局变量n e x c p r o c t 曲i e 中 n a c i l ,r o c 肋b l e = + l p p i 口c 1 a b l e ; 设置自定义的处理函数 l p p r o c t 2 i b l e l p w s p s 0 c k e t = w s p s e 咄 ,编写自定义的处理函数 i n t w s p a p iw s p s 盯i d ( s o c k e ts l p w s a b u f l p b u 在酗, d w o r dd w b u 侮;r c o 呲 l p d w o r d l p n 啪b e 帕f b y t e s s e 咄 d 、o r d d w f l a 黔 l p w s a o v e r i ,a p p e d l p o v e f l a p p e d , l p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论