2.4 WinPcap的体系架构

WinPcap是Windows平台上用于数据包捕获与网络分析的一个架构。它包含一个内核空间数据包过滤器(Netgroup Packet Filter,NPF)、一个底层动态链接库(Packet.dll)和一个高层并独立于操作系统的动态链接库(wpcap.dll)。

2.4.1 WinPcap的主要组成

为了能够访问网络上传输的原始数据,数据包捕获系统需要绕过操作系统的协议栈。这就需要有一部分程序运行在操作系统的内核中,只有这样才能与网络接口驱动直接交互。在WinPcap中,与操作系统密切相关的是一个名为NPF(Netgroup Packet Filter)的设备驱动程序,同时WinPcap还对Windows 95、Windows 98、Windows ME、Windows NT4、Windows 2000与Windows XP等不同的操作系统提供了不同版本的驱动程序。这些驱动程序提供了数据包捕获与发送的基本功能,同时提供了某些更高级的功能,诸如一个可编程的数据包过滤系统、一个网络监视引擎等。数据包过滤系统可用于限制一个捕获会话,从而只捕获特定的网络数据包(比如,可以只捕获一个特定主机生成的FTP数据包)。网络监视引擎以一种强大且简单的方式来获取网络流量的统计信息(比如,可以获取网络负载或两台主机间所交换数据的数量)。

为了让用户层应用程序能够使用内核驱动所提供的功能,数据包捕获系统必须导出相关的接口。对此,WinPcap提供两个不同层次的动态链接库:Packet.dll与wpcap.dll。Packet.dll库提供底层的API,用来直接访问驱动程序的函数,以便提供独立于微软公司不同操作系统的编程接口。wpcap.dll库导出了更强大的、更高层的捕获函数接口,并具有与UNIX捕获库libpcap的兼容性。这两个库可使数据包的捕获独立于底层网络硬件与操作系统。

WinPcap在系统各层面上的主要组成部分如图2-1所示。

2.4 WinPcap的体系架构 - 图1

图 2-1 WinPcap在操作系统各层面的主要组成部件