WEB开发网
开发学院操作系统windows 2008 深度剖析WinPcap之(四)——WinPcap的体系架构 阅读

深度剖析WinPcap之(四)——WinPcap的体系架构

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: 1.2 数据包捕获的基本过程 WinPcap从网络上捕获一个数据包,然后递送给应用程序,深度剖析WinPcap之(四)——WinPcap的体系架构(2),所调用的组件如图2-2,图2-3所示,既然中断的产生是一个耗费很大的操作,现代NIC允许多个数据包被送入一个中断的上下文中,图2-2 NPF结

1.2 数据包捕获的基本过程

WinPcap从网络上捕获一个数据包,然后递送给应用程序,所调用的组件如图2-2,图2-3所示。

深度剖析WinPcap之(四)——WinPcap的体系架构

图2-2 NPF结构

1.2.1 网卡与NIC设备驱动

现代NIC板载内存的数量通常限制为几千字节。在不依赖主机工作站的能力下,这些内存在全连接速度(full link speed)下需要满足数据包的接收与发送。此外,NIC在数据包被存储在板载内存中时,就执行一些初步的的检查,诸如CRC错误、短以太网帧,因此无效帧可以立即被丢弃。

在一个有效数据包被NIC接收后,将对总线控制器产生一个总线数据传输请求。此时,NIC控制了总线,传输数据包到工作站主内存中的NIC缓冲区中(参见图2-3),释放总线,产生一个硬件中断给高级可编程中断控制器(Advanced Programmable Interrupt Controller,APIC)芯片。该芯片叫醒操作系统的中断处理例程(OS interrupt handling routine),其触发NIC设备驱动程序的中断服务程序(ISR)。

一个写的好的设备驱动程序的ISR 只做很少的事情。最基本的事情,它要检查该中断是否是它自己要处理的的(在x86机器中一个中断可被多个设备共享),并做出应答。接着,ISR调度一个较低优先级的函数(称作延迟过程调用,DPC),该函数稍后处理硬件请求与告知上层驱动程序(如协议层的驱动程序,数据包捕获驱动程序)一个数据包被接收了。当没有中断被挂起时CPU将处理DPC例程。当NIC设备驱动程序正在执行处理时,来自NIC的中断被禁用,因为在处理下一个服务前一个数据包的处理必须完成。此外,既然中断的产生是一个耗费很大的操作,现代NIC允许多个数据包被送入一个中断的上下文中,因此上层驱动程序每次激活是要能够处理多个数据包的。

上一页  1 2 3 4 5 6 7  下一页

Tags:深度 剖析 WinPcap

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接