WinPcap学习(十一)底层学习
来源:互联网 发布:帝国cms批量删除文章 编辑:程序博客网 时间:2024/05/22 10:31
WinPcap包含一个内核级的数据包过滤器,一个低层的动态链接库(packet.dll),一个高层的、依赖于系统的库(wpcap.dll)。
WinPcap的主要结构如上。
首先,捕获系统需要占用操作系统的协议栈,来访问通过网络的原始数据。这就需要有部分内容要运行在操作系统内核中,能直接访问网络接口驱动。这部分内容非常依赖于系统,在WinPcap的解决方案中,它被认为是设备驱动,称为NetGroup Packet Filter(NPF)。
其次,捕获系统必须输出一个端口,以便用户应用程序利用内核驱动所提供的特性。WinPcap提供了两个不同的库:packet.dll和wpcap.dll。第一个提供了低层的API,它可以直接访问驱动的函数,并且依赖于微软操作系统的可编程接口。第一个提供了更多强大的、高层的,和libpcap兼容的捕获原语。
NPF和NDIS
NDIS(Network Driver Interface Specification)是一个标准,定义了网络适配器(可适配器驱动程序)和协议驱动程序(如TCP、IP的实现)间的通信。NDIS的主要作用是封装,以使协议驱动在收发数据包时不需要考虑适配器和操作系统。
NDIS支持三种网络驱动:
(1)Network interface card or NIC drivers.
NIC驱动直接管理网卡,它直接操作硬件并向上一层提供接口用于发送数据、处理中断、复位NIC、停止NIC、查询和设置驱动的其它可操作属性。
(2)Intermediate drivers
中层驱动介于上层驱动(如协议驱动)和miniport之间,从上层驱动来看,中层驱动像是一个miniport。从miniport来看,中层驱动像是一个协议驱动。开发这类驱动的主要原因多是用于协议驱动和miniport间传输媒体。一个中层驱动不能与用户模式的应用交互,只能与其它的NDIS驱动交互。
(3)Transport drivers or protocol drivers
一个protocol driver实现了网络的协议如:IPX/SPX或TCP/IP,并向一个或多个网卡提供它的服务。
NPF作为协议驱动实现,与操作系统的交互是异步的,这意味着驱动提供了一组回调函数,当调用NPF时,NPF调用这些系统回调函数。
NPF structure basis
NPF可以运行一些不同的操作:捕获、监控、dump to disk、包注入。
(1)Packet Capture
NPF最重要的操作就是包捕获,驱动通过网络接口检测到数据包并把它传递给用户级应用程序。
这个捕获过程依赖两个主要的部分:
- 一个包过滤器,NFP采用的过滤系统源于BSD Packet Filter(BPF)。
- 一个环形缓存
- WinPcap学习(十一)底层学习
- winpcap学习(一)
- winpcap学习(二)
- winpcap学习(三)
- winpcap学习(四)
- winpcap学习(五)
- Winpcap学习
- Winpcap学习
- Winpcap学习
- Winpcap学习总结(三)
- 循序渐进学习使用WinPcap(一)
- 循序渐进学习使用WINPCAP(二)
- 循序渐进学习使用WINPCAP(三)
- 循序渐进学习使用WINPCAP(四)
- 循序渐进学习使用WINPCAP(五)
- 循序渐进学习使用WINPCAP(六)
- 循序渐进学习使用WINPCAP(七)
- 循序渐进学习使用WINPCAP(八)
- NSURLConnection 下载文件增强版
- android源码大放送啦(实战开发必备)
- Linux虚拟机用命令关机
- 真正用来学习微机原理及汇编的好书
- sgu160:Magic Multiplying Machine
- WinPcap学习(十一)底层学习
- [图论] LCA(最近公共祖先)Tarjan 离线算法
- Android 属性动画(Property Animation) 完全解析 (上)
- 光流法学习
- Xen虚拟化平台安装
- iOS用推送通知来做出聊天
- 线程同步
- IaaS, PaaS和SaaS公司都做些什么
- 阅读深入理解计算机系统(一)--------------- 函数优化