2022年WinPcap的体系架构 .pdf
《2022年WinPcap的体系架构 .pdf》由会员分享,可在线阅读,更多相关《2022年WinPcap的体系架构 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、深度剖析 WinPcap之(四)WinPcap的体系架构(1)WinPcap 是 Win32 平台下用于数据包捕获与网络分析的一个架构。它包含一个内核层数据包过滤器,一个底层动态链接库(packet.dll),与一个高层并独立于系统的库(wpcap.dll)。1.1 WinPcap 的主要组成WinPcap 的各个主要组成部分如图2-1 所示。图 2-1 WinPcap的主要组成首先,为了访问网络上传输的原始数据,一个捕获系统需要绕过操作系统的协议栈。这需要一部分程序运行于操作系统的内核中,来与网络接口驱动直接交互。该部分与操作系统密切相关,WinPcap的解决方案是实现一个叫做Netgrou
2、p Packet Filter(NPF)的设备驱动程序,并对Windows 95、Windows 98、Windows ME、Windows NT 4、Windows 2000 与 Windows XP等不同操作系统提供不同版本的驱动程序。这些驱动程序提供了数据包捕获与发送的基本特性,同时也提供诸如一个可编程的过滤系统与一个监控引擎之类的更高级特性。第一个特性可用于限制一个捕获会话,只捕获特定的网络数据包(比如,可以只捕获一个特定主机生成的 ftp数据包)。第二个特性提供了一个强大但简单的方式,来获取网络流量的统计信息(比如,可以获取网络负载或两个主机间所交换数据的数量)。其次,捕获系统必须导
3、出一个接口,使得用户层应用程序可使用内核驱动所提供的特性。WinPcap 提供两个不同的库:packet.dll与 wpcap.dll。第一个库提供一个底层的API,可用来直接访问驱动程序的函数,提供一个独立于微软的不同操作系统的编程接口。第二个库名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 8 页 -导出了更强大的、更高层的捕获函数接口,并提供与UNIX 捕获库 libpcap的兼容性。这些函数使得数据包的捕获能独立于底层网络硬件与操作系统。1.2 数据包捕获的基本过程WinPcap 从网络上捕获一个数据包,然后递送给应用程序,所调用的组件如图2-2,图 2-3所示。图 2-
4、2 NPF 结构1.2.1 网卡与 NIC 设备驱动现代 NIC 板载内存的数量通常限制为几千字节。在不依赖主机工作站的能力下,这些内存在全连接速度(full link speed)下需要满足数据包的接收与发送。此外,NIC 在数据包被存储在板载内存中时,就执行一些初步的的检查,诸如 CRC错误、短以太网帧,因此无效帧可以立即被丢弃。在一个有效数据包被NIC 接收后,将对总线控制器产生一个总线数据传输请求。此时,NIC控制了总线,传输数据包到工作站主内存中的NIC 缓冲区中(参见图2-3),释放总线,产生一个硬件中断给高级可编程中断控制器(Advanced Programmable Inter
5、rupt Controller,APIC)芯片。该芯片叫醒操作系统的中断处理例程(OS interrupt handling routine),其触发 NIC 设备驱动程序的中断服务程序(ISR)。一个写的好的设备驱动程序的ISR 只做很少的事情。最基本的事情,它要检查该中断是否是它自己要处理的的(在x86 机器中一个中断可被多个设备共享),并做出应答。接着,ISR名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 8 页 -调度一个较低优先级的函数(称作延迟过程调用,DPC),该函数稍后处理硬件请求与告知上层驱动程序(如协议层的驱动程序,数据包捕获驱动程序)一个数据包被接收了。当没
6、有中断被挂起时CPU将处理 DPC例程。当 NIC 设备驱动程序正在执行处理时,来自 NIC 的中断被禁用,因为在处理下一个服务前一个数据包的处理必须完成。此外,既然中断的产生是一个耗费很大的操作,现代 NIC 允许多个数据包被送入一个中断的上下文中,因此上层驱动程序每次激活是要能够处理多个数据包的。图 2-3 从 NIC 到应用程序的路径1.2.2 数据包捕获驱动数据包捕获组件通常对其它的软件模块(如协议栈)是透明的,并不对标准的系统行为带来影响。它们仅仅在系统中插入一个钩子通常使用一个回调函数tap()只要一个新的数据包从网络上到来,它们就能够被告知。tap()函数所作的第一步就是对数据包
7、执行过滤。在 Win32 平台下数据包捕获组件通常作为一个网络协议驱动程序被实现。1.2.3 用户层的接口支持必须导出一个接口,使得用户层应用程序可使用数据包捕获组件所提供的功能,一般通过给用户提供易于使用的库来实现。WinPcap 提供 packet.dll与 wpcap.dll两个库,这些库使得应用程序对数据包捕获功能的使用能独立于底层网络硬件与操作系统。1.3 WinPcap 驱动内部说明WinPcap 的结构如图2-4 所示,NPF是 WinPcap的组件,用来处理网络上传输的数据包,并对用户层导出数据包捕获、发送与分析的能力。下面将描述NPF与操作系统与其基础结构体的交互。名师资料总
8、结-精品资料欢迎下载-名师精心整理-第 3 页,共 8 页 -图 2-4 NPF 的结构1.3.1 NPF与 NDIS 网络驱动程序接口规范(NDIS)标准,定义了网络适配器(或者,更好的说法是管理网络适配器的驱动程序)与协议驱动程序(如TCP/IP 就为一个实现实例)之间的通信。NDIS的主要目的是扮演一个包装层,允许协议驱动程序不依赖特定适配器或特定Win32 操作系统来发送和接收网络(LAN或 WAN)上的数据包。NDIS支持三种类型的网络驱动程序:1)网络接口卡或NIC 驱动程序NIC 驱动直接管理网络接口卡(network interface cards,NIC)。NIC 驱动程序在
9、其下面直接与硬件打交道,在其上面提供一个接口,允许高层(驱动)在网络上发送数据包,处理中断,复位网卡,停止 NIC,请求与设置驱动的操作特性。NIC驱动即可为微端口(miniports),也可为遗留的全NIC 驱动。微端口驱动程序微端口驱动程序仅实现特定的硬件操作来管理NIC,包括发送与接收NIC 上的数据。对所有底层 NIC 驱动程序通用的操作,诸如同步管理,是由 DICS提供的。微端口不直接调用操作系统的例行程序;它们与操作系统的接口是NDIS.微端口不保持绑定的跟踪。它仅把数据包向上传递给NIDIS,并由 NDIS确定这些数据包传递给合适的协议。名师资料总结-精品资料欢迎下载-名师精心整
10、理-第 4 页,共 8 页 -全 NIC 驱动程序全 NIC 驱动程序被编制为即执行特定硬件操作,也执行所有同步与排队这些通常由NDIS完成的操作。全NIC 驱动程序,例如,需要维护它们自己的绑定信息以标识所接收的数据。2)中间层驱动程序中间层驱动程序是一个上层驱动程序(诸如协议驱动程序)与微端口驱动程序之间的接口。对上层驱动程序而言,一个中间层驱动程序看起来像一个微端口驱动程序。对一个微端口驱动程序而言,一个中间层驱动程序看起来像一个协议驱动程序。一个中间层协议驱动程序可以位于另一个中间层驱动程序的顶部,尽管这样的分层对系统性能有负面影响。开发中间层驱动程序的典型原因,是在一个已有的遗留协议
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年WinPcap的体系架构 2022 WinPcap 体系 架构
限制150内