深度剖析WinPcap之(四)——WinPcap的体系架构
2009-09-11 00:00:00 来源:WEB开发网核心提示: 3) 传输层驱动程序或协议驱动程序.一个协议驱动程序实现一个网络协议栈,诸如 IPX/SPX 或TCP/IP,深度剖析WinPcap之(四)——WinPcap的体系架构(5),它在一个或多个网络接口卡上提供服务,一个协议驱动程序对其上面应用程序层的客户提供服务,在一个捕获过程中,驱动程序利用一个
3) 传输层驱动程序或协议驱动程序.
一个协议驱动程序实现一个网络协议栈,诸如 IPX/SPX 或TCP/IP,它在一个或多个网络接口卡上提供服务。一个协议驱动程序对其上面应用程序层的客户提供服务,同时与一个或多个NIC驱动程序或其下面的中间层NDIS驱动程序连接。
NPF作为一个协议驱动程序实现。从性能的角度这可能并不是最好的选择,但是其允许与MAC层具有合理的独立,同时也能完全访问原始流量。
NPF在NDIS栈中的位置如图2-5所示。
图2-5 NDIS中的NPF
正常情况下与操作系统的交互为异步。这意味着驱动提供了一个回调函数集,在一些操作需要NPF处理时被系统调用。NPF为应用程序的所有I/O操作:open、 close、 read、write、 ioctl等导出对应的回调函数。
同样与NDIS的交互也是异步的。如一个新数据包到来的事件就通过一个回调函数(此时为Packet_tap())通知NPF。此外,NDIS与NIC驱动程序的交互总是依靠非阻塞函数发生:当NPF调用一个NDIS函数,该调用立即返回;当处理结束后,NDIS调用一个特定的NPF回调函数(也叫完成函数)来通告该函数已经完成。驱动程序为任何底层的操作,如发送数据包,对NIC设置或请求参数等,导出一个回调函数。
1.3.2 NPF的主要功能
NPF能够执行许多操作:捕获、监视、转储到磁盘、数据包发送。下面将简短的描述这些操作。
1.3.2.1 数据包捕获
NPF最重要的操作是数据包的捕获。在一个捕获过程中,驱动程序利用一个网络接口嗅探数据包,并把它们完整无缺的递送给用户层应用程序。
- ››深度解释攻击linux服务器的四种级别
- ››剖析java.util.concurrent锁
- ››剖析Android智能手机系统的更多功能
- ››深度分析地方社区网站的内容定位
- ››剖析Windows Azure Platform框架与组成
- ››剖析使用 ObjectOutputStream 可能引起的内存泄漏...
- ››剖析EWebEditor编辑器漏洞攻击案例
- ››剖析开源云:构建 Infrastructure as a Service 块...
- ››深度剖析 Android 和 iPhone OS
- ››深度分析:HTML5能否成为Flash终结者
- ››深度挖掘 更多Windows 7快捷模式
- ››深度挖掘 Windows 7快捷模式
更多精彩
赞助商链接