深度剖析WinPcap之(四)——WinPcap的体系架构
2009-09-11 00:00:00 来源:WEB开发网核心提示: 1.3.2.3 网络监视 WinPcap提供一个内核层的可编程模块,能够对网络流量计算简单的统计信息,深度剖析WinPcap之(四)——WinPcap的体系架构(8),该模块背后的思想如图2-4所示:统计信息不需要复制数据包到应用程序就能被收集,从监视引擎获取统计结果简化了接收与显示,转储到磁盘
1.3.2.3 网络监视
WinPcap提供一个内核层的可编程模块,能够对网络流量计算简单的统计信息。该模块背后的思想如图2-4所示:统计信息不需要复制数据包到应用程序就能被收集,从监视引擎获取统计结果简化了接收与显示。这允许避免捕获的大部分工作耗费在内存与CPU时钟上。
监视引擎由一个分类器与紧接分类器的一个计数器所组成。数据包使用NPF的过滤引擎被分类,这提供了一种配置方式来选择一个网络流量的子集。经过过滤器的数据到计数器,计数器保存一些变量,如数据包的数目与过滤器接收到字节的数量,并根据网络所接收的数据包的数据来更新这些变量。这些变量在固定时间间隔时传递给用户层应用程序,用户可以配置时间间隔的周期。该模式下在内核与用户空间中没分配缓冲区。
1.3.2.4 转储到磁盘
WinPcap提供转储到磁盘的能力,可以在内核模式下把网络数据直接存储到磁盘。
图2-6 数据包捕获与内核层转储
在传统的系统中,图2-6中黑色箭头所表示的就是把数据包存储到磁盘的流程。每个数据包被复制几次,正常情况下,分配4个缓冲区:一个是捕获驱动程序的,一个是应用程序保持所捕获的数据,一个是应用程序写文件所用的stdio函数(或类似)使用的,最后一个是文件系统的。
当NPF的内核层网络流量记录特性(traffic logging feature)激活时,捕获驱动程序直接访问文件系统,这样红色虚线箭头所表示的就是把数据包直接存储到磁盘的流程。只有两个缓冲区与一次复制是必须的,系统调用的数目彻底减少,因此性能显著的更好。
当前,转储到磁盘的功能采用广泛使用的libpcap格式。为了选择存入磁盘的数据包,也提供了在网络流量转储过程前就被过滤的特性。
- ››深度解释攻击linux服务器的四种级别
- ››剖析java.util.concurrent锁
- ››剖析Android智能手机系统的更多功能
- ››深度分析地方社区网站的内容定位
- ››剖析Windows Azure Platform框架与组成
- ››剖析使用 ObjectOutputStream 可能引起的内存泄漏...
- ››剖析EWebEditor编辑器漏洞攻击案例
- ››剖析开源云:构建 Infrastructure as a Service 块...
- ››深度剖析 Android 和 iPhone OS
- ››深度分析:HTML5能否成为Flash终结者
- ››深度挖掘 更多Windows 7快捷模式
- ››深度挖掘 Windows 7快捷模式
更多精彩
赞助商链接