欢迎光临

木子屋

标题: winpcap驱动简介

作者: admin

日期: 2006-10-12 02:23 PM

分类: 网络技术

内容: 一．Winpcap简介
Winpcap是UNIX下的libpcap移植到windows下的产物,他是一个free and open source的项目。Winpcap工作于驱动(Driver)层，所以能以很高的效率进行网络操作。
Winpcap提供了以下强大的功能：
1．捕获原始的数据包
2．设置filter,只捕获自己敢兴趣的数据包
3．方便的把捕获的数据包输出到文件和从文件输入
4．发送原始的数据包
5．统计网络流量
6．…..(其它还有很多，我不知道了)
二．Winpcap的安装使用方法
1．到http://winpcap.polito.it下载winpcap的安装包，程序员开发包。
2．执行安装包，这样你的机子就能运行winpcap程序了
3．解压开发包，在VC的option的include和lib中加入winpcap的include和lib
4. 在你的程序中加入#include <pcap.h>, #include <remote-ext.h>.然后在工程的setting中加入预定义宏:WPCAP,HAVE_REMOTE.导入wpcap.lib库
5．就可以编写wpcap程序了
三．Winpcap的一些基本的功能的实现
一）捕获数据包
1. 枚举所有的可用的设备[pcap_findalldevs_ex]（可选）
2. 通过名字打开一个设备[pcap_open()]
在这里可以打开一个文件，只是在打开这个文件之前需要通过pcap_createsrcstr创建相应的name string
3. 设置Filter[pcap_compile, pcap_setfilter] (可选)
4. 捕获数据
有几种捕获数据的方法（捕获数据的数据都是最原始的数据包，即包含数据链路层的数据头）
a． 是以回调的方式[ pcap_loop,pcap_dispatch() ].
这两种方法基本相同，底层收集数据包，当满足一定的条件（timeout 或者缓冲区满），就会调用回调函数，把收集到的原始数据包s,交给用户。他们返回的数据缓冲区包含多个包
b. pcap_next_ex()的方式
每当一个包到到达以后，pcap_next_ex就会返回，返回的数据缓冲区里只包涵一个包。
二）发送包
Winpcap中有发送单个包和发送多个包的方法。这里只说说发送单个包
1． 通过名字打开一个设备[pcap_open]
2． 自己构造一个原始数据包（这个数据包会不经过任何处理就发送出去，所以必须把包中的各个字段设置好。另外这个数据包是包含数据链路层报头的）
3． 使用pcap_sendpacket()发送数据包
三）统计网络流量
1. 通过名字打开一个设备[pcap_open]，通过 read_timeout来设置统计的时间间隔
2. 设置filter[pcap_compile, pcap_setfilter] (可选)
3. 设置设备的为统计模式[ pcap_setmode(MODE_STAT);]
4. 开始统计，pcap_loop/pcap_dispatch()
5．在回调函数中的参数中就包含了统计信息
四．补充说明
winpcap的主要功能在于独立于主机协议（如TCP-IP)而发送和接收原始数据报。也就是说，winpcap不能阻塞，过滤或控制其他应用程序数据报的发收，它仅仅只是监听共享网络上传送的数据报。因此，它不能用于QoS调度程序或个人防火墙。
目前，winpcap开发的主要对象是windows NT/2000/XP，这主要是因为在使用winpcap的用户中只有一小部分是仅使用windows 95/98/Me，并且M$也已经放弃了对win9x的开发。

+ 查看当前日志评论 (1)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.141 ms

返回

标题: winpcap驱动简介

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.141 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.156 ms

返回