基于Windows的个人防火墙系统---毕业论文_第1页
基于Windows的个人防火墙系统---毕业论文_第2页
基于Windows的个人防火墙系统---毕业论文_第3页
基于Windows的个人防火墙系统---毕业论文_第4页
基于Windows的个人防火墙系统---毕业论文_第5页
免费预览已结束,剩余79页可下载查看

下载本文档

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

文档简介

本本 科科 毕毕 业业 论论 文文 基于基于 WindowsWindows 的个人防火墙系统的个人防火墙系统 Windows-Based Personal Firewall System 姓 名: 学 号: 学 院:软件学院 系:软件工程 专 业:软件工程 年 级: 指导教师: 年年 月月 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 I 摘摘 要要 互联网发展至今,其应用迅速地扩展到人类社会的各个领域。人们的生活、 学习乃至工作对于网络的依赖也越来越多,个人用户俨然成为互联网上的主流 群体。然而,由于网络的开放性,个人用户同时也成为互联网上最容易受攻击 的群体,于是很自然的就出现了供个人用户使用的个人防火墙。个人防火墙技 术是由最初的防火墙技术发展起来,建立在现代通信网络技术和信息安全技术 基础上的应用性安全技术,是个人用户进行网络行为时的安全保障。在网络犯 罪日益猖獗的今天,个人防火墙作为个人用户网络安全的第一道屏障,对保护 网络用户信息安全有着重要的意义。 本次毕业设计就是基于这一实际应用,以 VC+ 6.0 为开发平台,在 windows 平台上开发一款个人防火墙系统。本系统核心采用 Winsock 2 SPI 技术, 利用传输服务提供者实现网络封包的拦截,并对封包内容进行分析,根据用户 设置的控管规则对封包进行的合法性进行检查和过滤;同时提供简洁明快的界 面程序,包括封包监视,应用规则设置,日志查询及系统设置,实现对当前网 络数据的实时监视,应用程序访网的控制,历史操作记录的查询,以及系统参 数的设置和改变,以供用户及时地对可疑的数据流和不安全的访网进程做有效 的处理。 关键词:关键词:个人防火墙;封包过滤;Winsock 2 SPI 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 II Abstract With the development of the Internet, its application rapidly expands to various fields of human society. Peoples living, learning and work have become increasingly dependent on networks, and personal users on the Internet have become the main groups. However, due to the openness of the network, personal users are the most vulnerable groups in Internet. So far, there have been many easy-to-use personal firewall products for personal users. Personal firewall originated from the firewall technology. As the network security for personal user, it is based on modern communication networks and information security technology. It is the first network security barrier to defind the personal user from the rampant crime activities in the network. In our project, a personal firewall system is designed with VC + + 6.0 in the windows platform. The core of the system using Winsock 2 SPI technology, and the transport service providers is applied to intercept network packets. The packet content analysis control the legality of packet inspection and filtering based on rules set by users. At the same time, this system provides important functions, including the packet monitoring, the application of the rules set up and the log inquiries.In this case, users can deal effectively with the insecure stream and the suspicious proccess in time. Key words: Personal firewall;Packet Filtering;Winsock 2 SPI 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 III 目录目录 第一章第一章引言引言1 1 1.11.1 个人防火墙的研究背景和意义个人防火墙的研究背景和意义 1 1 1.1.1 防火墙的发展历史.1 1.1.2 防火墙的发展趋势.2 1.1.3 几款流行的防火墙简介.3 1.21.2 本文的研究内容本文的研究内容 4 4 1.31.3 本文的组织结构本文的组织结构 5 5 第二章第二章基本概念介绍基本概念介绍6 6 2.12.1 W WINDOWSINDOWS网络协议架构网络协议架构 6 6 2.1.1 Windows 系统的总体架构.6 2.1.2 Windows 操作系统中的 OSI 模型.7 2.1.3 Windows 操作系统中的 TCP/IP 协议8 2.22.2 W WINSOCKINSOCK服务提供者接口服务提供者接口(SPI)(SPI) 9 9 2.2.1 SPI 概述.9 2.2.2 传输服务提供者10 第三章第三章系统详细设计系统详细设计1717 3.13.1 系统的开发目的和设计目标系统的开发目的和设计目标 1717 3.23.2 系统总体设计系统总体设计 1818 3.2.1 核心功能18 3.2.2 工作流程及功能用例19 3.33.3 开发前的准备开发前的准备 2222 3.3.1 管控文件结构定义22 3.3.2 日志文件结构定义25 3.43.4 核心模块核心模块 X XMOGUMOGU. .DLLDLL详细设计详细设计 2727 3.4.1 封包截获27 3.4.2 访问控制30 3.4.3 封包分析38 3.4.4 与 Xmogu.exe 的交互41 3.4.5 工具类43 3.4.6 Xmogu.dll 生成和安装43 3.53.5 主模块主模块 X XMOGUMOGU. .EXEEXE详细设计详细设计 4545 3.5.l 文件操作46 3.5.2 主程序类 CPropertyApp .52 3.5.3 隐藏的接口窗口 CMainFrame .56 3.5.4 主窗口 CMainSheet .59 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 IV 3.5.5 封包监视窗口 CPacketMonitor .60 3.5.6 管控规则窗口 CAcl .62 3.5.7 日志查询窗口 CLogQuery 64 3.5.8 系统设置窗口 CSystemSet .66 3.5.9 任务栏图标 CSystemTray67 第四章第四章系统实现结果系统实现结果6969 4.14.1 安装安装 6969 4.24.2 封包监视封包监视 7070 4.34.3 控管规则控管规则 7171 4.44.4 日志查询日志查询 7272 4.54.5 系统设置系统设置 7272 4.64.6 关于关于 7373 第五章第五章结束语结束语7474 5.15.1 存在的问题及解决方法存在的问题及解决方法 7474 5.1.1 存在的问题74 5.1.2 解决方法74 5.25.2 自我总结自我总结 7474 参考文献参考文献. .7575 致谢致谢. .7676 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 V Contents CHAPTER 1 INTRODUCTION.1 1.1 THE SIGNIFICANCE AND RESEARCH BACKGROUND OF FIREWALL1 1.1.1 The history of firewall systems1 1.1.2 The trend of the firewall technique2 1.1.3 The introduction of some popular firewall systems.3 1.2 THE RESEARCH CONTENT OF THIS PAPER4 1.3 THE ORGANIZATION OF THIS PAPER4 CHAPTER 2 BASIC CONCEPTS6 2.1 WINDOWS NETWORK PROTOCOL ARCHITECTURE.6 2.1.1 The overall structure of Windows6 2.1.2 The OSI mode in Windows7 2.1.3 TCP/IP protocol in Windows.8 2.2 WINSOCK SERVICE PROVIDER INTERFACE (SPI)9 2.2.1 An overview of SPI9 2.2.2 Transport service providers10 CHAPTER 3 SYSTEM DESIGN17 3.1 THE PURPOSE OF SYSTEMS DEVELOPMENT AND DESIGN GOALS.17 3.2 THE SYSTEM OVERALL DESIGN.18 3.2.1 Core function18 3.2.2 Work processes and functions of use case.19 3.3 PREPARATION FOR DEVELOPMENT.22 3.3.1 The definition of control file structure.22 3.3.2 The definition of the log file structure .25 3.4 THE DESIGN FOR CORE MODULES XMOGU.DLL.27 3.4.1 Packet interception.27 3.4.2 Access Control .30 3.4.3 Packet analysis .38 3.4.4 Interaction with Xmogu.exe.41 3.4.5 Tools Classes43 3.4.6 The generation and installation43 3.5 THE DETAILED DESIGN OF THE MAIN MODULE XMOGU.EXE45 3.5.l File operations.46 3.5.2 Main Class CPropertyApp .52 3.5.3 Hiden interface Window CMainFrame56 3.5.4 Main Window CMainSheet59 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 VI 3.5.5 Packet monitor window CPacketMonitor60 3.5.6 Control rules window CAcl62 3.5.7 Query Log window CLogQuery 64 3.5.8 System setting window CSystemSet66 3.5.9 Taskbar icon CSystemTray67 CHAPTER 4 THE FINAL SYSTEM.69 4.1 INSTALLATION69 4.2 PACKET MONITOR70 4.3 CONTROL RULES.71 4.4 LOG QUERY72 4.5 SYSTEM SETTINGS72 4.6 ABOUT.73 CHAPTER 5 CONCLUDING REMARKS .74 5.1PROBLEMS AND SOLUTIONS74 5.1.1 Problems.74 5.1.2 Solutions.74 5.2 SELF-SUMMARY74 REFERENCES.75 THANKS.76 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 1 第一章第一章引言引言 网络安全问题自有网络的那天起就存在了,只是由于当时的局限性,人们 并没有给予重视。随着网络发展,人们对网络的依赖日益明显,网络安全问题 也变得越来越严重,而个人防火墙则是个人计算机在网络上的安全保障。个人 防火墙通常直接切入个人用户的操作系统,并接管用户操作系统对网络的控制, 使得运行在系统上的网络应用软件在访问网络的时候,都必须经过防火墙的过 滤,从而达到控制用户计算机和网络之间连接的目的。本章首先介绍了防火墙 的研究背景,从中可以了解到防火墙的发展历史、未来发展趋势以及现在市面 上流行的几款防火墙;然后简要叙述本论文的主要研究内容;最后指出全文的 组织结构。 1.1 个人防火墙的研究背景和意义个人防火墙的研究背景和意义 1.1.1 防火墙的发展历史防火墙的发展历史 对于防火墙的发展历史,基于功能划分,可分为如下五个阶段: 20 世纪 80 年代,最早的防火墙几乎与路由器同时出现,第一代防火墙主要 基于包过滤(Packet filter)技术,是依附于路由器的包过滤功能实现的防火墙; 随着网络安全重要性和性能要求的提高,防火墙渐渐发展为一个独立结构的、 有专门功能的设备。 到 1989 年,贝尔实验室的 Dave Presotto 和 Howard Trickey 最早推出了第二 代防火墙,即电路层防火墙; 到 20 世纪 90 年代初,开始推出第三代防火墙,即应用层防火墙(或者叫做 代理防火墙) ;到 1992 年,USC 信息科学院的 BobBraden 开发出了基于动态包 过滤(Dynamic packet filter)技术的,后来演变为目前所说的状态监视 (Stateful inspection)技术。 1994 年,市面上出现了第四代防火墙,即以色列的 CheckPoint 公司推出的 基于这种状态监视技术的商业化产品; 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 2 到了 1998 年,NAI 公司推出了一种自适应代理(Adaptive proxy)技术,并 在其产品 Gauntlet Firewall for NT 中得以实现,给代理类型的防火墙赋予了全新 的意义,可以称之为第五代防火墙。 此外,如果基于实现方式划分,可分为如下四个阶段: 第一代防火墙:基于路由器的防火墙,由于多数路由器中本身就包含有分组 过滤功能,故网络访问控制可通过路由控制来实现,从而使具有分组过滤功能 的路由器成为第一代防火墙产品。 第二代防火墙:用户化的防火墙,将过滤功能从路由器中独立出来,并加上 审计和报警功能。针对用户需求,提供模块化的软件包,是纯软件产品。 第三代防火墙:建立在通用操作系统上的防火墙,近年来在市场上广泛使用 的就是这一代产品。包括分组过滤和代理功能。第三代防火墙有以纯软件实现 的,也有以硬件方式实现的。 第四代防火墙:具有安全操作系统的防火墙:具有安全操作系统的防火墙本 身就是一个操作系统,因而在安全性上得到提高。 1.1.2 防火墙的发展趋势防火墙的发展趋势 传统的防火墙通常是基于访问控制列表(ACL)进行包过滤的,位于在内部专 用网的入口处,所以也俗称“边界防火墙“。随着防火墙技术的发展,出现了一 些新的防火墙技术,如电路级网关技术、应用网关技术和动态包过滤技术。在 实际运用中,这些技术差别非常大,有的工作在 OSI 参考模式的网络层,有的 工作在传输层,还有的工作在应用层。 随着新的网络攻击的出现,防火墙技术也有一些新的发展趋势。这主要可 以从包过滤技术、防火墙体系结构和防火墙系统管理三方面来体现。 a. 防火墙包过滤技术发展趋势 在包过滤技术方面,一些防火墙把在 AAA 系统上运用的用户认证及其服务 扩展到防火墙中,使其拥有可以支持基于用户角色的安全策略功能;一些防火 墙针对目前已有防火墙的不足,采用多级过滤技术,每种过滤技术对应于不同 的网络层,分层过滤,以弥补单独过滤技术的不足;还有一些防火墙使自身具 有病毒防护功能,可以防止病毒在网络中传播,比等待攻击的发生更加积极。 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 3 b.防火墙的体系结构发展趋势 随着网络应用的增加,对网络带宽提出了更高的要求。这意味着防火墙要 能够以非常高的速率处理数据。另外,在以后几年里,多媒体应用将会越来越 普遍,它要求数据穿过防火墙所带来的延迟要足够小。为了满足这种需要,一 些防火墙制造商开发了基于 ASIC 的防火墙和基于网络处理器的防火墙。从执行 速度的角度看来,基于网络处理器的防火墙也是基于软件的解决方案,它需要 在很大程度上依赖于软件的性能,但是由于这类防火墙中有一些专门用于处理 数据层面任务的引擎,从而减轻了 CPU 的负担,该类防火墙的性能要比传统防 火墙的性能好许多。而基于 ASIC 的防火墙使用专门的硬件处理网络数据流,比 起前两种类型的防火墙具有更好的性能。但是纯硬件的 ASIC 防火墙缺乏可编程 性,这就使得它缺乏灵活性,从而跟不上防火墙功能的快速发展。 c.防火墙的系统管理发展趋势 防火墙的系统管理也有一些发展趋势,主要体现在集中式管理,分布式和 分层的安全结构,强大的审计功能,自动日志分析功能以及网络安全产品系统 化等方面。 另外,分布式防火墙技术逐渐兴起,并因其优越的安全防护体系,符合未 来的发展趋势,在一出现便得到了许多用户的认可和接受。 1.1.3 几款流行的防火墙简介几款流行的防火墙简介 如今市面上的防火墙产品数不胜数,那么,究竟那些产品功能强大,能真 正提高计算机在网络中的安全系数呢?在 2008 年 Toptenreviews 发布的世界顶 级防火墙排名中,位列三甲产品如下: 第一名 ZoneAlarm Pro (Zone Labs 公司出品的网络防火墙) 这是一款优秀的网络防火墙软件,使用很简单,界面易于浏览,具有很强 的反探测和预防网络入侵的工具。只要在安装时填入用户的资料,安装完后重 新开机,ZoneAlarm 就会自动启动,帮您执行任务。其主要功能模块包括定义 信任和不信任的网络和区域,定制高级防火墙规则,应用程序控制,反间谍, 反病毒软件监控,邮件保护,隐私保护,ID 锁,警报和日志。 第二名 Outpost Firewall Pro 防火墙 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 4 这是一款短小精悍的网络防火墙软件,包括了广告和图片过滤、内容过滤、 DNS 缓存等功能。它能够预防来自 Cookies、广告、电子邮件病毒、后门、窃密 软件、解密高手、广告软件和其它 Internet 危险的威胁。尤为值得一提的是, 这是市场上第一个支持插件的防火墙,这样它的功能可以很容易地进行扩展。 该软件资源占用也很小。 第三名 Norton Personal Firewall 中文简称诺顿个人防火墙,大名鼎鼎的 symantec 公司出品,是一款智能型 防火墙,可确保电脑的安全,提供多层防御机制,可以自动拦截入侵行为,控 制所有传入和传出的联网通信,避免黑客和隐私威胁,保护个人资讯安全。 1.2 本文的研究内容本文的研究内容 计算机刚走进家庭的时候,对于个人用户来说,只要安装具有实时监控功能 的病毒防护软件就可以高枕无忧了。但很快情况就发生变化了,随着网络的普 及以及网络应用的急速扩展,个人用户使用计算机的大部分时间都依赖于网络, 个人计算机系统除了受病毒的威胁外,还要面临无处不在,无时不有的网络攻 击。因此,为了保障通信及个人信息安全,在计算机上安装个人防火墙系统是 很有必要的。而目前市面上,虽然苹果的 MAC OS 系统和各个版本的 LINUX 系统 渐渐为用户认识和接受,但无疑微软的 Windows 依然占据着霸主地位。因此, 基于 Windows 平台的个人防火墙系统有着广阔的市场前景,而学习和掌握 windows 平台上开发防火墙系统的技术将是大有可为的。 本文设计的个人防火墙系统采用 Visual C+ 6.0 作为开发平台,核心使用 Winsock 2 SPI 技术,利用在服务提供者中挂接一层自已的操作实现应用层的 网络封包拦截,并根据应用规则对封包进行合法性检查和过滤。同时,本系统 提供友好的用户操作界面,采用经典的标签式分页窗口,简洁明了,实现了网 络封包实时监视,应用规则控管以及日志查询等主要功能 本文从最初的框架设计到最终打包成安装程序,详细地介绍了此个人防火 墙系统的完整实现过程。 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 5 1.3 本文的组织结构本文的组织结构 本文的章节按排如下: 第一章 引言,首先介绍了防火墙的研究背景和意义,然后指出本文的研 究内容,最后说明本文的组织结构。 第二章 基本概念介绍,对 Windows 网络架构,Winsock 2 SPI 等关键技术 做必要的说明。 第三章 系统详细设计,首先说明了开发目的和目标,然后介绍系统的整 体设计,接着分核心模块 Xmogu.exe 和主模块 Xmogu.exe 两部分详细阐述。 第四章 系统实现结果,分别对安装过程,封包监视窗口,应用规则窗口, 日志查询窗口,系统设置窗口以及关于窗口进行介绍。 第五章 结束语,指出自已对系统的看法,总结开发过程中得到的经验和教 训,并对系统的改进提出一些想法。 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 6 第二章第二章基本概念介绍基本概念介绍 2.1 Windows 网络协议架构网络协议架构 2.1.1 Windows 系统的总体架构系统的总体架构 Windows 操作系统的总体架构分为两个层次,即上层的应用层和下层的核心 层。其中应用层是可以直接接触到的,应用程序(.EXE)就工作在这一层;动 态链接库(.DLL)也属于应用层的范围,动态链接库被应用程序调用时就成为 应用程序的一部分,所以它们没有本质的区别。可以这样认为,EXE 和 DLL 是 两种工作在不同方式下的应用程序,EXE 是一个独立且可以直接执行的模块, 受 Windows 进程保护机制的保护,其他程序无权直接使用这个程序的模块和数 据;而 DLL 则是一个共享的库,它提供标准的接口供其他程序调用,本身却不 能单独执行。 各种用户界面都是应用程序运行的结果,工作在应用层。在应用层下面还 有一层叫做核心层(Kernel) 。核心层的程序为上层应用程序提供底层的支持, 程序扩展名为.sys,叫做驱动程序。举个简单的例子,两个应用程序间的通信 如下图 2.1 所示: 图图 2.12.1 WindowsWindows 操作系统架构操作系统架构 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 7 在上述过程中,应用程序提供了用户界面,供用户输入信息和显示接收的信 息,核心层的驱动程序则完成数据封包的处理。 2.1.2 Windows 操作系统中的操作系统中的 OSI 模型模型 OSI 模型仅仅是一个理想的方案,几乎没有什么系统能够完全实现它,它存 在的作用是给人们一个设计网络体系的框架。机器上的每一层都假设它正在直 接与另一机器的同一层通信,它们使用相同的协议,各层的目的是向更高的层 提供服务,抽象低层的实现细节。OSI 模型在 Windows 中体现得非常明显,但 是如果不对 Windows 核心作深入的了解,就很难完全明白 7 层协议的含义。下 面将 OSI 模型映射到 Windows 操作系统,以得到一个直观的认识。如下图 2.2 所示: 图图 2.22.2 OSIOSI 模型在模型在 WindowsWindows 结构中的映射结构中的映射 如上图所示: 物理层,很好理解,可以看作网卡。 数据链路层,网卡驱动程序。NDIS 则是操作系统和网卡驱动建立关系的接 口规范,同时 NDIS 也对协议驱动程序提供接口,即 NDIS 为整个网络驱动提供 接口,所以横跨数据链路层和网络层、传输层。 网络层,是 NDIS。虽然 NDIS 肩负 3 层接口工作,但是它的职能重心是提供 网络层接口。它所传输的信息一方面是通过网卡驱动程序向网卡传达系统的信 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 8 息和数据,另一方面将网卡驱动程序传来的信息传送到上层 TDI。 传输层,是 TDI。TDI 是传输驱动接口,它不仅是一个简单的传送带,还要 对信息进行检索、分类并重新组织。TCP 协议的封包处理就是在这一层进行的。 会话层,是 SPI。SPI 是服务提供者接口,上面介绍的各层都处于核心层, 其程序都是驱动程序,表现为.sys。SPI 属于应用层范畴,它的程序为动态链 接库(DLL)形式。SPI 负责连接核心层驱动程序和高层应用程序,SPI 的上级 为 API。 表示层,是 API。API 为应用程序提供接口,负责 SPI 与应用程序之间的数 据传输。 应用层,是应用程序。应用层为 7 层协议的最高层,应用程序是人机界面, 它负责将数据传输结果显示给用户,并将用户下达的命令传送到下一层。 2.1.3 Windows 操作系统中的操作系统中的 TCP/IP 协议协议 TCP/IP 是一组完整的网络协议,它并不完全符合 OSI 的七层参考模型,采 用了 4 层的层级结构,每一层都调用下一层所提供的服务来完成自已的需求。 Windows TCP/IP 协议与 OSI 模型的对应关系如下图 2.3 所示: 图图 2.32.3 OSIOSI 模型与模型与 WindowsWindows TCP/IPTCP/IP 协议的关系映射协议的关系映射 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 9 如上图所示: 应用层:应用程序间沟通的层,如简单电子邮件传输( SMTP)、文 件传输协议( FTP)、网络远程访问协议( Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协 议(TCP)、用户数据报协议( UDP)等,TCP 和 UDP 给数据包加入传输数据 并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接 收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都 能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如 Ethernet、Serial Line 等)来传送数据 。 2.2 Winsock 服务提供者接口服务提供者接口(SPI) Winsock 2 服务提供者接口(Service Provider Interface) ,简称 SPI, 是 Winsock API 的补充。如名字所描述,SPI 是应用程序使用的服务,而它本 身不是应用程序,它的作用是向加载这个服务的应用程序导出自己。 2.2.1 SPI 概述概述 Winsock 是为下层应用程序提供的一种标准网络接口。上层应用程序不用关 心 Winsock 实现的细节,它为上层应用程序提供透明的服务。 Winsock 2 引入的一个新功能就是打破服务提供者的透明,让开发者可以编 写自已的服务提供者接口程序,即 SPI 程序。SPI 以动态链接库(DLL)形式存 在,它工作在应用层,为上层 API 调用提供接口函数。Winsock 2 是一个接口, 而不是一个协议。作为接口,它只能发现和利用底层传输协议完成通信。 用户编写的 SPI 程序安装到系统之后,所有的 Winsock 请求都会送到这个 程序并由它完成网络调用。由于系统提供的 SPI 已经可以完成网络传输功能, 所以用户编写的 SPI 没有必要重新编写这部分功能,一般可以直接调用系统函 数完成网络传输。Winsock 2 体系结构如下图 2.4 所示: 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 10 图图 2.42.4 WinsockWinsock 2 2 体系结构体系结构 根据 Winsock 2 体系结构,SPI 由其中的两个部分组成,即传输服务提供者 (Transport Service Provider)和命名空间服务提供者(Name Space Provider) ,它允许用户开发这两种类型的服务提供者。这两个服务提供者的功 能不同,传输服务提供者能够提供建立通信、传输数据、流量控制和错误控制 等服务;名字空间服务提供者把一个网络协议的地址属性和一个或多个用户友 好名称关联起来,这样就可以启用与协议无关的名字解析方案。 2.2.2 传输服务提供者传输服务提供者 Winsock 2 中使用的传输服务提供者有两类:基础服务提供者和分层服务 提供者。基础服务提供者执行网络传输协议(比如 TCP/IP)的具体细节其中包 括在网络上收发数据之类的核心网络协议功能。分层服务提供者只负责执行高 级的自定义通信功能,并依靠下面基础服务提供者,在网络上进行真正的数据 交换。图 2.5 展示了如何在一个 Ws2_32.dll 和一个基础提供者之间安装一个或 多个分层式提供者。 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 11 图 2.5 分层提供者架构 基础服务提供者和分层服务提供者都开放相同的 SPI 接口,不同的是基础 服务提供者位于提供者的最底层。所以编写基础服务提供者和分层服务提供者 基本相同,但安装的时候却需要将基础服务提供者安装在服务提供者加载顺序 链的最低端,而分层服务提供者则根据需求分布在顺序链的中间。 用户使用的是基础服务提供者还是分层服务提供者是由 WSAPROTOCOL_INFOW 结构中的 WSAPROTOCOLCHAIN 结构的 ChainLen 成员变量决 定的。ChainLen 值的含义如下表 2.1 所示: 表表 2.12.1 ChainLenChainLen 变量值的含义变量值的含义 ChainLen 含义 0 分层服务提供者 1 基础服务提供者 1 分层服务提供者在协议链中的顺序编号 传输服务提供者的 WSAPROTOCOL_INFOW 结构信息保存在注册表的 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWinsock2Paramet ersProtocol_Catalog9Catalog_Entries 分支下。这个分支下,每个类型的 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 12 服务提供者都会有一个子分支,子分支的 PackedCatalogItem 键保存的内容为 传输服务提供者的路径、文件名及 WSAPROTOCOL_INFOW 结构。 WSPStartup Winsock 2 传输服务提供者随标准的 Windows 动态链接库模块一起执行, 用户必须把 DllMain 函数导入这个动态链接库模块中。除此以外,还必须导入 一个名为 WSPStartup 的单一函数条目。在调用者(如 SPI 客户机)调用 WSPStartup 时,便通过一个被当作参数投送的函数派遣表打开另外的 30 个 SPI 函数,传输服务提供者便由这 30 个函数组成,用户的服务提供者必须提供对 WSPStartup 函数和其他 30 个函数的支持。函数派遣表参见表 2.2。 表表 2.22.2 传输服务提供者提供函数传输服务提供者提供函数 API 函数对应的 SPI 函数 WSAAccept(可间接映射成WSPAccept) WSPAccept WSAAddressToString WSPAddressToString WSAAsyncSelect WSPAsyncSelect Bind WSPBind WSACancelBlockingCall WSPCancelBlockingCall WSACleanup WSPCleanup Closesocket WSPCloseSocket WSAConnect(可间接映射成WSPConnect) WSPConnect WSADuplicateSocket WSPDuplicateSocket WSAEnumNetworkEvents WSPEnumNetworkEvents WSAEventSelect WSPEventSelect WSAGetOverlappedResult WSPGetOverlappedResult getpeername WSPGetPeerName getsockname WSPGetSockName getsockopt WSPGetSockOpt WSAGetQOSByName WSPGetQOSByName WSAIoctl WSPIoctl 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 13 WSAJoinLeaf WSPJoinLeaf listen WSPListen WSARecv(可间接映射成WSPRecv) WSPRecv WSARecvDisconnect WSPRecvDisconnect WSARecvFrom(可映射成WSPRecvFrom) WSPRecvFrom select WSPSelect WSASend(可间接映射成WSPSend) WSPSend WSASendDisconnect WSPSendDisconnect WSASendTo(可间接映射成WSPSendTo) WSPSendTo setsockopt WSPSetSockOpt sbutdown WSPSbutdown WSASocket(可间接映射成WSPSocket) WSPSocket WSAStringToAddress WSPStringToAddress 参数 在初始化传输服务提供者时,关键的函数便是 WSPStartup。它的定义如下: int WSPStartup( WORDwVersionRequested, LPWSPDATAWlpWSPData, LPWSAPROTOCOL_INFOW lpProtocolInfo, WSPUPCALLTABLEUpcallTable, LPWSPPROC_TABLElpProcTable ); wVersionRequested 参数,用于取得调用者能够使用的 Windows Sockets SPI 支持函数的最新版本。用户的服务提供者应该对这个值进行检查,以便得 知它是否支持所请求的版本。 lpWSPData 参数,返回关于它自己版本的信息。 lpProtocolInfo 参数,是一个指向一个 WSAPROTOCOL_INFOW 结构的指针, 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 14 该结构中包含了和提供者有关的特征信息。WSAPROTOCOL_INFOW 结构中的信息 是 Ws2_32.dll 从 Winsock 2 服务提供者目录中检索得来的,这个目录中包含了 服务提供者的属性信息。在开发分层式服务提供者时,需要以一种独特的方式 来处理 lpProtocolInfo 这个参数,因为它包含的信息关系到用户的服务提供者 在 Ws2_32.dll 和基础服务提供者之间,是怎样分布的。这个参数用于决定用户 的服务提供者之下的那个服务提供者。从某个角度来说,用户的提供者必须通 过加载下一个提供者的 DLL 模块和调用它的 WSPStartup 函数这一方式,来加载 下一个提供者。 UpcallTable 参数,取得 Ws2_32.dll 的 SPI 上调派遣表,表中包含了指向 许多支持函数的指针,用户的提供者可利用这些函数来管理提供者自身和 Winsock 2 之间的 I/O 操作。 lpProcTable 参数,代表一个表,表内有 30 个 SPI 函数指针,用户的服务 提供者必须能够提供对这些函数的支持。这 30 个函数在上面的表 2.2 中已列出。 实例计数 在 Winsock 规格中,应用程序调用 WSAStartup 和 WSACleanup 函数的次数 是没有限制的。用户的服务提供者的 WSPStartup 和 WSPCleanup 函数也将和它 们对应的 API 函数一样,调用的次数相当。如此一来,用户的服务提供者就应 该保留一个实例计数,以便了解 WSPStrtup 函数被调用了多少次,又相应地调 用 WSPCleanup 多少次,以便抵消 WSPStartup 被调用的次数。保留实例次数的 目的在于:允许用户的服务提供者的启用和清除过程合乎情理。 传输服务提供者的安装 要安装传输服务提供者,应开发一个简单的应用程序,使其将一个分层或 基础服务提供者插入服务提供者的 Winsock 2 目录。传输服务提供者的安装方 式决定了它是一个分层服务提供者,还是一个基础服务提供者。安装程序只在 Winsock 2 系统配置数据库中,配置了传输服务提供者。这个系统配置数据库 是一个目录,系统上已安装的服务提供者都在这个目录中。配置数据库让 Winsock 2 得知服务提供者已存在,并定义了提供的服务类型。Winsock 应用程 序建立套接字时,Winsock 2 便利用这个数据库判断需要加载哪些传输服务提 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 15 供者。Ws2_32.dll 在数据库中搜索第一个与 socket 和 WSASocket API 调用的 套接字输入参数匹配的提供者。一旦找到与之匹配的条目,Ws2_32.dll 便加载 相应的服务提供者的 DLL(动态数据链接库),这个 DLL 是定义在该目录中的。 基础服务提供者的安装:安装基础服务提供者的原理是从注册表中找到需 要替换的系统基础服务提供者,将路径信息替换成自已的路径并保存原来的路 径信息。这样操作后,当有 Winsock 调用发生时,系统会首先找到自已安装的 程序路径并执行,然后自已的程序会根据保存原来的路径信息加载系统服务提 供者,同时得到它的 30 个服务函数指针,以完成转发。 分层服务提供者的安装与基础服务提供者有所不同。基础服务提供者安装 时仅仅需要将原来的路径保存然后替换成自己服务提供者的路径。而分层服务 提供者需要插入一层,这就意味着需要在注册表中增加新的分层服务提供者, 所以必须要了解注册表的相关键值。 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWinSock2Paramet ersProtocol_Catalog9 分支下包含 3 个键,其定义如下表 2.3 所示: 表表 2.32.3 三个注册表键的解释三个注册表键的解释 注册表键含义 Next_Catalog_Entry_ID 如果要建立新的服务提供者,这个键值就是为新建服 务提供者准备的 dwCatalogEntryId。新建后也必须 相应地修改这个键值,让它始终保持是一个新的 ID 号,不能与原来的重复 Num_Catalog_Entries 当前服务提供者的总数目,新建后也要相应地修改这 个键值 Serial_Access_Num 序列访问次数,这是一个递增变量,一般每进行一次 服务提供者的增减就为这个值加 1 添加服务提供者还需注意添加的服务提供者在注册表中的顺序。一般最新 安装的放在最上面,并且最上面的总优先得到执行。 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统 16 其实 Winsock 2 提供了一组用来安装服务提供者的标准 API 函数,它在 Sporder.h 头文件中定义,库文件为 Sporder.lib,程序运行时需要 Sporder.dll 的支持。这些函数以 WSC 开头,分层服务提供者的安装主要用到 以下几个函数,如表 2.4 所示: 表表 2.42.4 安装用到的几个安装用到的几个 APIAPI 函数函数 函 数功 能 WSCEnumProtocols 把一个或全部服务提供者的 WSAPROTOCOL_INFOW 结构 信息读取到缓冲区中 WSCGetProviderPath 根据 ProviderId 得到提供者的路径 WSCInstallProvider 安装一个服务提供者 WSCWriteProviderOrder 安装一组服务提供者 WSCDeinstallProvider 根据 ProviderId 删除服务提供者 厦门大学本科毕业论文 基于 Wind

温馨提示

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

最新文档

评论

0/150

提交评论