1、本 科 毕 业 论 文基于 Windows的个人防火墙系统Windows-Based Personal Firewall System姓 名: 学 号:学 院:软件学院系:软件工程专 业:软件工程年 级:指导教师: 年 月厦门大学本科毕业论文 基于 Windows 的个人防火墙系统I摘 要互联网发展至今,其应用迅速地扩展到人类社会的各个领域。人们的生活、学习乃至工作对于网络的依赖也越来越多,个人用户俨然成为互联网上的主流群体。然而,由于网络的开放性,个人用户同时也成为互联网上最容易受攻击的群体,于是很自然的就出现了供个人用户使用的个人防火墙。个人防火墙技术是由最初的防火墙技术发展起来,建立在现
2、代通信网络技术和信息安全技术基础上的应用性安全技术,是个人用户进行网络行为时的安全保障。在网络犯罪日益猖獗的今天,个人防火墙作为个人用户网络安全的第一道屏障,对保护网络用户信息安全有着重要的意义。本次毕业设计就是基于这一实际应用,以 VC+ 6.0 为开发平台,在windows 平台上开发一款个人防火墙系统。本系统核心采用 Winsock 2 SPI 技术,利用传输服务提供者实现网络封包的拦截,并对封包内容进行分析,根据用户设置的控管规则对封包进行的合法性进行检查和过滤;同时提供简洁明快的界面程序,包括封包监视,应用规则设置,日志查询及系统设置,实现对当前网络数据的实时监视,应用程序访网的控制
3、,历史操作记录的查询,以及系统参数的设置和改变,以供用户及时地对可疑的数据流和不安全的访网进程做有效的处理。关键词:个人防火墙;封包过滤;Winsock 2 SPI厦门大学本科毕业论文 基于 Windows 的个人防火墙系统IIAbstractWith 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
4、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
5、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 fire
6、wall 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
7、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 F
8、iltering;Winsock 2 SPI厦门大学本科毕业论文 基于 Windows 的个人防火墙系统III目录第一章 引言 .11.1个人防火墙的研究背景和意义 11.1.1 防火墙的发展历史 .11.1.2 防火墙的发展趋势 .21.1.3 几款流行的防火墙简介 .31.2本文的研究内容 41.3本文的组织结构 5第二章 基本概念介绍 .62.1 WINDOWS网络协议架构 62.1.1 Windows 系统的总体架构 .62.1.2 Windows 操作系统中的 OSI 模型 .72.1.3 Windows 操作系统中的 TCP/IP 协议 82.2 WINSOCK服务提供者接口(SP
9、I) .92.2.1 SPI 概述 .92.2.2 传输服务提供者 10第三章 系统详细设计 173.1系统的开发目的和设计目标 .173.2系统总体设计 .183.2.1 核心功 能 183.2.2 工作流程及功能用例 193.3开发前的准备 .223.3.1 管控文件结构定义 223.3.2 日志文件结构定义 253.4核心模块 XMOGU.DLL详细设计 .273.4.1 封包截获 273.4.2 访问控制 303.4.3 封包分析 383.4.4 与 Xmogu.exe 的交互 413.4.5 工具类 433.4.6 Xmogu.dll 生成和安装 433.5主模块 XMOGU.EXE
10、详细设计 .453.5.l 文件操作 463.5.2 主程序类 CPropertyApp .523.5.3 隐藏的接口窗口 CMainFrame .563.5.4 主窗口 CMainSheet .59厦门大学本科毕业论文 基于 Windows 的个人防火墙系统IV3.5.5 封包监视窗口 CPacketMonitor .603.5.6 管控规则窗口 CAcl .623.5.7 日志查询窗口 CLogQuery 643.5.8 系统设置窗口 CSystemSet .663.5.9 任务栏图标 CSystemTray67第四章 系统实现结果 694.1安装 .694.2封包监视 .704.3控管规
11、则 .714.4日志查询 .724.5系统设置 .724.6关于 .73第五章 结束语 745.1存在的问题及解决方法 .745.1.1 存在的问题 745.1.2 解决方法 745.2自我总结 .74参考文献. 75致谢.76厦门大学本科毕业论文 基于 Windows 的个人防火墙系统VContentsCHAPTER 1 INTRODUCTION.11.1 THE SIGNIFICANCE AND RESEARCH BACKGROUND OF FIREWALL 11.1.1 The history of firewall systems 11.1.2 The trend of the fir
12、ewall technique 21.1.3 The introduction of some popular firewall systems .31.2 THE RESEARCH CONTENT OF THIS PAPER41.3 THE ORGANIZATION OF THIS PAPER 4CHAPTER 2 BASIC CONCEPTS62.1 WINDOWS NETWORK PROTOCOL ARCHITECTURE.62.1.1 The overall structure of Windows62.1.2 The OSI mode in Windows72.1.3 TCP/IP
13、protocol in Windows .82.2 WINSOCK SERVICE PROVIDER INTERFACE (SPI)92.2.1 An overview of SPI92.2.2 Transport service providers10CHAPTER 3 SYSTEM DESIGN173.1 THE PURPOSE OF SYSTEMS DEVELOPMENT AND DESIGN GOALS .173.2 THE SYSTEM OVERALL DESIGN.183.2.1 Core function183.2.2 Work processes and functions o
14、f use case .193.3 PREPARATION FOR DEVELOPMENT .223.3.1 The definition of control file structure .223.3.2 The definition of the log file structure .253.4 THE DESIGN FOR CORE MODULES XMOGU.DLL.273.4.1 Packet interception .273.4.2 Access Control .303.4.3 Packet analysis .383.4.4 Interaction with Xmogu.
15、exe.413.4.5 Tools Classes433.4.6 The generation and installation 433.5 THE DETAILED DESIGN OF THE MAIN MODULE XMOGU.EXE453.5.l File operations.463.5.2 Main Class CPropertyApp .523.5.3 Hiden interface Window CMainFrame 563.5.4 Main Window CMainSheet59厦门大学本科毕业论文 基于 Windows 的个人防火墙系统VI3.5.5 Packet monit
16、or window CPacketMonitor 603.5.6 Control rules window CAcl623.5.7 Query Log window CLogQuery 643.5.8 System setting window CSystemSet 663.5.9 Taskbar icon CSystemTray 67CHAPTER 4 THE FINAL SYSTEM .694.1 INSTALLATION 694.2 PACKET MONITOR 704.3 CONTROL RULES.714.4 LOG QUERY 724.5 SYSTEM SETTINGS 724.6
17、 ABOUT .73CHAPTER 5 CONCLUDING REMARKS .745.1PROBLEMS AND SOLUTIONS745.1.1 Problems.745.1.2 Solutions.745.2 SELF-SUMMARY 74REFERENCES .75THANKS .76厦门大学本科毕业论文 基于 Windows 的个人防火墙系统1第一章 引言网络安全问题自有网络的那天起就存在了,只是由于当时的局限性,人们并没有给予重视。随着网络发展,人们对网络的依赖日益明显,网络安全问题也变得越来越严重,而个人防火墙则是个人计算机在网络上的安全保障。个人防火墙通常直接切入个人用户的操作
18、系统,并接管用户操作系统对网络的控制,使得运行在系统上的网络应用软件在访问网络的时候,都必须经过防火墙的过滤,从而达到控制用户计算机和网络之间连接的目的。本章首先介绍了防火墙的研究背景,从中可以了解到防火墙的发展历史、未来发展趋势以及现在市面上流行的几款防火墙;然后简要叙述本论文的主要研究内容;最后指出全文的组织结构。1.1 个人防火墙的研究背景和意义1.1.1 防火墙的发展历史对于防火墙的发展历史,基于功能划分,可分为如下五个阶段:20 世纪 80 年代,最早的防火墙几乎与路由器同时出现,第一代防火墙主要基于包过滤(Packet filter)技术,是依附于路由器的包过滤功能实现的防火墙;随
19、着网络安全重要性和性能要求的提高,防火墙渐渐发展为一个独立结构的、有专门功能的设备。到 1989 年,贝尔实验室的 Dave Presotto 和 Howard Trickey 最早推出了第二代防火墙,即电路层防火墙;到 20 世纪 90 年代初,开始推出第三代防火墙,即应用层防火墙(或者叫做代理防火墙) ;到 1992 年,USC 信息科学院的 BobBraden 开发出了基于动态包过滤(Dynamic packet filter)技术的,后来演变为目前所说的状态监视(Stateful inspection)技术。1994 年,市面上出现了第四代防火墙,即以色列的 CheckPoint 公司
20、推出的基于这种状态监视技术的商业化产品;厦门大学本科毕业论文 基于 Windows 的个人防火墙系统2到了 1998 年,NAI 公司推出了一种自适应代理(Adaptive proxy)技术,并在其产品 Gauntlet Firewall for NT 中得以实现,给代理类型的防火墙赋予了全新的意义,可以称之为第五代防火墙。此外,如果基于实现方式划分,可分为如下四个阶段: 第一代防火墙:基于路由器的防火墙,由于多数路由器中本身就包含有分组过滤功能,故网络访问控制可通过路由控制来实现,从而使具有分组过滤功能的路由器成为第一代防火墙产品。 第二代防火墙:用户化的防火墙,将过滤功能从路由器中独立出来
21、,并加上审计和报警功能。针对用户需求,提供模块化的软件包,是纯软件产品。 第三代防火墙:建立在通用操作系统上的防火墙,近年来在市场上广泛使用的就是这一代产品。包括分组过滤和代理功能。第三代防火墙有以纯软件实现的,也有以硬件方式实现的。 第四代防火墙:具有安全操作系统的防火墙:具有安全操作系统的防火墙本身就是一个操作系统,因而在安全性上得到提高。1.1.2 防火墙的发展趋势传统的防火墙通常是基于访问控制列表(ACL)进行包过滤的,位于在内部专用网的入口处,所以也俗称“边界防火墙“。随着防火墙技术的发展,出现了一些新的防火墙技术,如电路级网关技术、应用网关技术和动态包过滤技术。在实际运用中,这些技
22、术差别非常大,有的工作在 OSI 参考模式的网络层,有的工作在传输层,还有的工作在应用层。随着新的网络攻击的出现,防火墙技术也有一些新的发展趋势。这主要可以从包过滤技术、防火墙体系结构和防火墙系统管理三方面来体现。a. 防火墙包过滤技术发展趋势在包过滤技术方面,一些防火墙把在 AAA 系统上运用的用户认证及其服务扩展到防火墙中,使其拥有可以支持基于用户角色的安全策略功能;一些防火墙针对目前已有防火墙的不足,采用多级过滤技术,每种过滤技术对应于不同的网络层,分层过滤,以弥补单独过滤技术的不足;还有一些防火墙使自身具有病毒防护功能,可以防止病毒在网络中传播,比等待攻击的发生更加积极。厦门大学本科毕
23、业论文 基于 Windows 的个人防火墙系统3b.防火墙的体系结构发展趋势随着网络应用的增加,对网络带宽提出了更高的要求。这意味着防火墙要能够以非常高的速率处理数据。另外,在以后几年里,多媒体应用将会越来越普遍,它要求数据穿过防火墙所带来的延迟要足够小。为了满足这种需要,一些防火墙制造商开发了基于 ASIC 的防火墙和基于网络处理器的防火墙。从执行速度的角度看来,基于网络处理器的防火墙也是基于软件的解决方案,它需要在很大程度上依赖于软件的性能,但是由于这类防火墙中有一些专门用于处理数据层面任务的引擎,从而减轻了 CPU 的负担,该类防火墙的性能要比传统防火墙的性能好许多。而基于 ASIC 的
24、防火墙使用专门的硬件处理网络数据流,比起前两种类型的防火墙具有更好的性能。但是纯硬件的 ASIC 防火墙缺乏可编程性,这就使得它缺乏灵活性,从而跟不上防火墙功能的快速发展。c.防火墙的系统管理发展趋势防火墙的系统管理也有一些发展趋势,主要体现在集中式管理,分布式和分层的安全结构,强大的审计功能,自动日志分析功能以及网络安全产品系统化等方面。另外,分布式防火墙技术逐渐兴起,并因其优越的安全防护体系,符合未来的发展趋势,在一出现便得到了许多用户的认可和接受。1.1.3 几款流行的防火墙简介如今市面上的防火墙产品数不胜数,那么,究竟那些产品功能强大,能真正提高计算机在网络中的安全系数呢?在 2008
25、 年 Toptenreviews 发布的世界顶级防火墙排名中,位列三甲产品如下:第一名 ZoneAlarm Pro (Zone Labs 公司出品的网络防火墙)这是一款优秀的网络防火墙软件,使用很简单,界面易于浏览,具有很强的反探测和预防网络入侵的工具。只要在安装时填入用户的资料,安装完后重新开机,ZoneAlarm 就会自动启动,帮您执行任务。其主要功能模块包括定义信任和不信任的网络和区域,定制高级防火墙规则,应用程序控制,反间谍,反病毒软件监控,邮件保护,隐私保护,ID 锁,警报和日志。第二名 Outpost Firewall Pro 防火墙厦门大学本科毕业论文 基于 Windows 的个
26、人防火墙系统4这是一款短小精悍的网络防火墙软件,包括了广告和图片过滤、内容过滤、DNS 缓存等功能。它能够预防来自 Cookies、广告、电子邮件病毒、后门、窃密软件、解密高手、广告软件和其它 Internet 危险的威胁。尤为值得一提的是,这是市场上第一个支持插件的防火墙,这样它的功能可以很容易地进行扩展。该软件资源占用也很小。第三名 Norton Personal Firewall中文简称诺顿个人防火墙,大名鼎鼎的 symantec 公司出品,是一款智能型防火墙,可确保电脑的安全,提供多层防御机制,可以自动拦截入侵行为,控制所有传入和传出的联网通信,避免黑客和隐私威胁,保护个人资讯安全。1
27、.2 本文的研究内容计算机刚走进家庭的时候,对于个人用户来说,只要安装具有实时监控功能的病毒防护软件就可以高枕无忧了。但很快情况就发生变化了,随着网络的普及以及网络应用的急速扩展,个人用户使用计算机的大部分时间都依赖于网络,个人计算机系统除了受病毒的威胁外,还要面临无处不在,无时不有的网络攻击。因此,为了保障通信及个人信息安全,在计算机上安装个人防火墙系统是很有必要的。而目前市面上,虽然苹果的 MAC OS 系统和各个版本的 LINUX 系统渐渐为用户认识和接受,但无疑微软的 Windows 依然占据着霸主地位。因此,基于 Windows 平台的个人防火墙系统有着广阔的市场前景,而学习和掌握w
28、indows 平台上开发防火墙系统的技术将是大有可为的。本文设计的个人防火墙系统采用 Visual C+ 6.0 作为开发平台,核心使用Winsock 2 SPI 技术,利用在服务提供者中挂接一层自已的操作实现应用层的网络封包拦截,并根据应用规则对封包进行合法性检查和过滤。同时,本系统提供友好的用户操作界面,采用经典的标签式分页窗口,简洁明了,实现了网络封包实时监视,应用规则控管以及日志查询等主要功能本文从最初的框架设计到最终打包成安装程序,详细地介绍了此个人防火墙系统的完整实现过程。厦门大学本科毕业论文 基于 Windows 的个人防火墙系统51.3 本文的组织结构本文的章节按排如下:第一章
29、 引言,首先介绍了防火墙的研究背景和意义,然后指出本文的研究内容,最后说明本文的组织结构。第二章 基本概念介绍,对 Windows 网络架构,Winsock 2 SPI 等关键技术做必要的说明。第三章 系统详细设计,首先说明了开发目的和目标,然后介绍系统的整体设计,接着分核心模块 Xmogu.exe 和主模块 Xmogu.exe 两部分详细阐述。第四章 系统实现结果,分别对安装过程,封包监视窗口,应用规则窗口,日志查询窗口,系统设置窗口以及关于窗口进行介绍。第五章 结束语,指出自已对系统的看法,总结开发过程中得到的经验和教训,并对系统的改进提出一些想法。厦门大学本科毕业论文 基于 Window
30、s 的个人防火墙系统6第二章 基本概念介绍2.1 Windows 网络协议架构2.1.1 Windows 系统的总体架构Windows 操作系统的总体架构分为两个层次,即上层的应用层和下层的核心层。其中应用层是可以直接接触到的,应用程序(.EXE)就工作在这一层;动态链接库(.DLL)也属于应用层的范围,动态链接库被应用程序调用时就成为应用程序的一部分,所以它们没有本质的区别。可以这样认为,EXE 和 DLL 是两种工作在不同方式下的应用程序,EXE 是一个独立且可以直接执行的模块,受 Windows 进程保护机制的保护,其他程序无权直接使用这个程序的模块和数据;而 DLL 则是一个共享的库,
31、它提供标准的接口供其他程序调用,本身却不能单独执行。各种用户界面都是应用程序运行的结果,工作在应用层。在应用层下面还有一层叫做核心层(Kernel) 。核心层的程序为上层应用程序提供底层的支持,程序扩展名为.sys,叫做驱动程序。举个简单的例子,两个应用程序间的通信如下图 2.1 所示:图 2.1 Windows 操作系统架构厦门大学本科毕业论文 基于 Windows 的个人防火墙系统7在上述过程中,应用程序提供了用户界面,供用户输入信息和显示接收的信息,核心层的驱动程序则完成数据封包的处理。2.1.2 Windows 操作系统中的 OSI 模型OSI 模型仅仅是一个理想的方案,几乎没有什么系
32、统能够完全实现它,它存在的作用是给人们一个设计网络体系的框架。机器上的每一层都假设它正在直接与另一机器的同一层通信,它们使用相同的协议,各层的目的是向更高的层提供服务,抽象低层的实现细节。OSI 模型在 Windows 中体现得非常明显,但是如果不对 Windows 核心作深入的了解,就很难完全明白 7 层协议的含义。下面将 OSI 模型映射到 Windows 操作系统,以得到一个直观的认识。如下图 2.2所示:图 2.2 OSI 模型在 Windows 结构中的映射如上图所示:物理层,很好理解,可以看作网卡。数据链路层,网卡驱动程序。NDIS 则是操作系统和网卡驱动建立关系的接口规范,同时
33、NDIS 也对协议驱动程序提供接口,即 NDIS 为整个网络驱动提供接口,所以横跨数据链路层和网络层、传输层。网络层,是 NDIS。虽然 NDIS 肩负 3 层接口工作,但是它的职能重心是提供网络层接口。它所传输的信息一方面是通过网卡驱动程序向网卡传达系统的信厦门大学本科毕业论文 基于 Windows 的个人防火墙系统8息和数据,另一方面将网卡驱动程序传来的信息传送到上层 TDI。传输层,是 TDI。TDI 是传输驱动接口,它不仅是一个简单的传送带,还要对信息进行检索、分类并重新组织。TCP 协议的封包处理就是在这一层进行的。会话层,是 SPI。SPI 是服务提供者接口,上面介绍的各层都处于核
34、心层,其程序都是驱动程序,表现为.sys。SPI 属于应用层范畴,它的程序为动态链接库(DLL)形式。SPI 负责连接核心层驱动程序和高层应用程序,SPI 的上级为 API。表示层,是 API。API 为应用程序提供接口,负责 SPI 与应用程序之间的数据传输。应用层,是应用程序。应用层为 7 层协议的最高层,应用程序是人机界面,它负责将数据传输结果显示给用户,并将用户下达的命令传送到下一层。2.1.3 Windows 操作系统中的 TCP/IP 协议TCP/IP 是一组完整的网络协议,它并不完全符合 OSI 的七层参考模型,采用了 4 层的层级结构,每一层都调用下一层所提供的服务来完成自已的
35、需求。Windows TCP/IP 协议与 OSI 模型的对应关系如下图 2.3 所示:图 2.3 OSI 模型与 Windows TCP/IP 协议的关系映射厦门大学本科毕业论文 基于 Windows 的个人防火墙系统9如上图所示: 应 用 层 : 应 用 程 序 间 沟 通 的 层 , 如 简 单 电 子 邮 件 传 输 ( SMTP) 、 文件 传 输 协 议 ( FTP) 、 网 络 远 程 访 问 协 议 ( Telnet) 等 。 传 输 层 : 在 此 层 中 , 它 提 供 了 节 点 间 的 数 据 传 送 服 务 , 如 传 输 控 制 协议 ( TCP) 、 用 户 数
36、据 报 协 议 ( UDP) 等 , TCP 和 UDP 给 数 据 包 加 入 传 输 数 据并 把 它 传 输 到 下 一 层 中 , 这 一 层 负 责 传 送 数 据 , 并 且 确 定 数 据 已 被 送 达 并 接收 。 互 连 网 络 层 : 负 责 提 供 基 本 的 数 据 封 包 传 送 功 能 , 让 每 一 块 数 据 包 都能 够 到 达 目 的 主 机 ( 但 不 检 查 是 否 被 正 确 接 收 ) , 如 网 际 协 议 ( IP) 。 网 络 接 口 层 : 对 实 际 的 网 络 媒 体 的 管 理 , 定 义 如 何 使 用 实 际 网 络 ( 如Eth
37、ernet、 Serial Line 等 ) 来 传 送 数 据 。2.2 Winsock 服务提供者接口 (SPI)Winsock 2 服务提供者接口( Service Provider Interface) ,简称 SPI,是 Winsock API 的补充。如名字所描述,SPI 是应用程序使用的服务,而它本身不是应用程序,它的作用是向加载这个服务的应用程序导出自己。2.2.1 SPI 概述Winsock 是为下层应用程序提供的一种标准网络接口。上层应用程序不用关心 Winsock 实现的细节,它为上层应用程序提供透明的服务。Winsock 2 引入的一个新功能就是打破服务提供者的透明,让
38、开发者可以编写自已的服务提供者接口程序,即 SPI 程序。SPI 以动态链接库(DLL)形式存在,它工作在应用层,为上层 API 调用提供接口函数。Winsock 2 是一个接口,而不是一个协议。作为接口,它只能发现和利用底层传输协议完成通信。用户编写的 SPI 程序安装到系统之后,所有的 Winsock 请求都会送到这个程序并由它完成网络调用。由于系统提供的 SPI 已经可以完成网络传输功能,所以用户编写的 SPI 没有必要重新编写这部分功能,一般可以直接调用系统函数完成网络传输。Winsock 2 体系结构如下图 2.4 所示: 厦门大学本科毕业论文 基于 Windows 的个人防火墙系统
39、10图 2.4 Winsock 2 体系结构根据 Winsock 2 体系结构,SPI 由其中的两个部分组成,即传输服务提供者(Transport Service Provider)和命名空间服务提供者( Name Space Provider) ,它允许用户开发这两种类型的服务提供者。这两个服务提供者的功能不同,传输服务提供者能够提供建立通信、传输数据、流量控制和错误控制等服务;名字空间服务提供者把一个网络协议的地址属性和一个或多个用户友好名称关联起来,这样就可以启用与协议无关的名字解析方案。2.2.2 传输服务提供者Winsock 2 中使用的传输服务提供者有两类:基础服务提供者和分层服务
40、提供者。基础服务提供者执行网络传输协议(比如 TCP/IP)的具体细节其中包括在网络上收发数据之类的核心网络协议功能。分层服务提供者只负责执行高级的自定义通信功能,并依靠下面基础服务提供者,在网络上进行真正的数据交换。图 2.5 展示了如何在一个 Ws2_32.dll 和一个基础提供者之间安装一个或多个分层式提供者。厦门大学本科毕业论文 基于 Windows 的个人防火墙系统11图 2.5 分层提供者架构基础服务提供者和分层服务提供者都开放相同的 SPI 接口,不同的是基础服务提供者位于提供者的最底层。所以编写基础服务提供者和分层服务提供者基本相同,但安装的时候却需要将基础服务提供者安装在服务
41、提供者加载顺序链的最低端,而分层服务提供者则根据需求分布在顺序链的中间。用户使用的是基础服务提供者还是分层服务提供者是由WSAPROTOCOL_INFOW 结构中的 WSAPROTOCOLCHAIN 结构的 ChainLen 成员变量决定的。ChainLen 值的含义如下表 2.1 所示:表 2.1 ChainLen 变量值的含义ChainLen 含义0 分层服务提供者1 基础服务提供者1 分层服务提供者在协议链中的顺序编号传输服务提供者的 WSAPROTOCOL_INFOW 结构信息保存在注册表的HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
42、sWinsock2ParametersProtocol_Catalog9Catalog_Entries 分支下。这个分支下,每个类型的厦门大学本科毕业论文 基于 Windows 的个人防火墙系统12服务提供者都会有一个子分支,子分支的 PackedCatalogItem 键保存的内容为传输服务提供者的路径、文件名及 WSAPROTOCOL_INFOW 结构。 WSPStartupWinsock 2 传输服务提供者随标准的 Windows 动态链接库模块一起执行,用户必须把 DllMain 函数导入这个动态链接库模块中。除此以外,还必须导入一个名为 WSPStartup 的单一函数条目。在调用者
43、(如 SPI 客户机)调用WSPStartup 时,便通过一个被当作参数投送的函数派遣表打开另外的 30 个 SPI函数,传输服务提供者便由这 30 个函数组成,用户的服务提供者必须提供对WSPStartup 函数和其他 30 个函数的支持。函数派遣表参见表 2.2。表 2.2 传输服务提供者提供函数API 函数 对应的 SPI 函数WSAAccept(可间接映射成WSPAccept) WSPAcceptWSAAddressToString WSPAddressToStringWSAAsyncSelect WSPAsyncSelectBind WSPBind WSACancelBlocking
44、Call WSPCancelBlockingCallWSACleanup WSPCleanupClosesocket WSPCloseSocketWSAConnect(可间接映射成WSPConnect) WSPConnectWSADuplicateSocket WSPDuplicateSocketWSAEnumNetworkEvents WSPEnumNetworkEventsWSAEventSelect WSPEventSelectWSAGetOverlappedResult WSPGetOverlappedResultgetpeername WSPGetPeerNamegetsocknam
45、e WSPGetSockNamegetsockopt WSPGetSockOptWSAGetQOSByName WSPGetQOSByNameWSAIoctl WSPIoctl厦门大学本科毕业论文 基于 Windows 的个人防火墙系统13WSAJoinLeaf WSPJoinLeaflisten WSPListenWSARecv(可间接映射成WSPRecv) WSPRecvWSARecvDisconnect WSPRecvDisconnectWSARecvFrom(可映射成WSPRecvFrom) WSPRecvFromselect WSPSelectWSASend(可间接映射成WSPSen
46、d) WSPSendWSASendDisconnect WSPSendDisconnectWSASendTo(可间接映射成WSPSendTo) WSPSendTosetsockopt WSPSetSockOptsbutdown WSPSbutdownWSASocket(可间接映射成WSPSocket) WSPSocketWSAStringToAddress WSPStringToAddress 参数在初始化传输服务提供者时,关键的函数便是 WSPStartup。它的定义如下:int WSPStartup(WORD wVersionRequested,LPWSPDATAW lpWSPData,L
47、PWSAPROTOCOL_INFOW lpProtocolInfo,WSPUPCALLTABLE UpcallTable,LPWSPPROC_TABLE lpProcTable);wVersionRequested 参数,用于取得调用者能够使用的 Windows Sockets SPI 支持函数的最新版本。用户的服务提供者应该对这个值进行检查,以便得知它是否支持所请求的版本。lpWSPData 参数,返回关于它自己版本的信息。lpProtocolInfo 参数,是一个指向一个 WSAPROTOCOL_INFOW 结构的指针,厦门大学本科毕业论文 基于 Windows 的个人防火墙系统14该结构中包含了和提供者有关的特征信息。WSAPROTOCOL_INFOW 结构中的信息是 Ws2_32.dll 从 Winsock 2 服务提供者目录中检索得来的,这个目录中包含了服务提供者的属性信息。在开发分层式服务提供者时,需要以一种独特的方式来处理 lpProtocolInfo 这个参数,因为它包含的信息关系到用户的服务提供者在 Ws2_32