Winpcap 原理详细介绍
-
捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报;
-
在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;
-
在网络上发送原始的数据报;
-
收集网络通信过程中的统计信息。
winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据报。也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据包。因此,它不能用于QoS调度程序或个人防火墙。
目前,winpcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用winpcap的用户中只有一小部分是仅使用windows 95/98/Me,并且M$也已经放弃了对win9x的开发。因此本文相关的程序T-ARP也是面向NT/2000/XP用户的。其实winpcap中的面向9x系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说9x只支持ANSI编码,而NT系统则提倡使用Unicode编码。
Wincap有三部分组成:一个数据包监听设备驱动程序,一个低级的动态连接库和一个高级的静态连接库。数据包监听设备驱动程序直接从数据链路层取得网络数据包不加修改地传递给运行在用户层的应用程序,他在不同的WINDOWS系统下是不同。数据包监听设备驱动程序支持BPF过滤机制,可以灵活地设置过滤规则。低级的动态链接库运行在用户层,他把应用程序和数据包监听设备驱动程序隔离开来,使得应用程序可以不加修改地在不同的WINDOWS系统上运行。高级的静态链接库和应用程序编译在一起,他使用低级动态链接库提供的服务,向应用程序提供完善的监听接口。