没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
WinPcap 中文技术文档
4.0.1
作者:
The WinPcap Team
作者主页:
http://www.winpcap.org
模块
WinPcap 用户指南
o 定义
o 输出函数
o 过滤串表达式的语法
o 使用 WinPcap 编程
o WinPcap 教程: 循序渐进教您使用 WinPcap
获取设备列表
获取已安装设备的高级信息
打开适配器并捕获数据包
不用回调方法捕获数据包
过滤数据包
分析数据包
处理脱机堆文件
发送数据包
收集并统计网络流量
WinPcap 核心资料
o NPF 驱动核心指南
NPF 结构与定义
NPF 函数
o Packet.dll -- 数据包驱动 API
o 如何编译 WinPcap
远程捕获
o 输出结构与定义
o 外部函数. 对于提供远程捕获的函数引用, 请参阅 WinPcap 输出函数 章节的
"Windows-specific Extensions" .
o 核心数据结构与定义
介绍
本手册提供了 WinPcap 编程接口的描述及其源代码。它与详尽的 WinPcap 核心资料一起,为编程
人员提供了详细的函数与结构的描述,同时也提供了若干教程和程序范例。
您可以点击页面顶部的导航链接,或者使用页面左边的树形控件,来跳转到您感兴趣的内容。
本文档使用 the Doxygen documentation system 创建,您可以登录
http://www.doxygen.org 阅览相关内容。
什么是 WinPcap
WinPcap 是一个基于 Win32 平台的,用于捕获网络数据包并进行分析的开源库.
大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如 sockets。 这是一种简单的
实现方式,因为操作系统已经妥善处理了底层具体实现细节(比如协议处理,封装数据包等等),并
且提供了一个与读写文件类似的,令人熟悉的接口。
然而,有些时候,这种“简单的方式”并不能满足任务的需求,因为有些应用程序需要直接访问网络中
的数据包。也就是说,那些应用程序需要访问原始数据包,即没有被操作系统利用网络协议处理过的
数据包。
WinPcap 产生的目的,就是为 Win32 应用程序提供这种访问方式;
WinPcap 提供了以下功能
捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的
在数据包发送给某应用程序前,根据用户指定的规则过滤数据包
将原始数据包通过网络发送出去
收集并统计网络流量信息
以上这些功能需要借助安装在 Win32 内核中的网络设备驱动程序才能实现,再加上几个动态链接库
DLL。
所有这些功能都能通过一个强大的编程接口来表现出来,易于开发,并能在不同的操作系统上使用。
这本手册的主要目标是在一些程序范例的帮助下,叙述这些编程接口的使用。 如果您现在就想开
始摸索这些功能,您可以直接进入 WinPcap 用户手册.
哪些程序在使用 WinPcap
WinPcap 可以被用来制作许多类型的网络工具,比如具有分析,解决纷争,安全和监视功能的工具。
特别地,一些基于 WinPcap 的典型应用有:
网络与协议分析器 (network and protocol analyzers)
网络监视器 (network monitors)
网络流量记录器 (traffic loggers)
网络流量发生器 (traffic generators)
用户级网桥及路由 (user-level bridges and routers)
网络入侵检测系统 (network intrusion detection systems (NIDS))
网络扫描器 (network scanners)
安全工具 (security tools)
什么是 WinPcap 做不到的
WinPcap 能
独立地
通过主机协议发送和接受数据,如同 TCP-IP。这就意味着 WinPcap 不能阻止、
过滤或操纵同一机器上的其他应用程序的通讯:它仅仅能简单地"监视"在网络上传输的数据包。所以,
它不能提供类似网络流量控制、服务质量调度和个人防火墙之类的支持。
本手册的目标
本手册的目的是提供一个全面而简单的方法来让您浏览 WinPcap 的设计文档。你会找到两个主要部
分: WinPcap 用户指南 和 WinPcap 核心资料.
第一部分内容主要适合那些需要利用 WinPcap 开发应用程序的编程人员: 它包含了 WinPcap API
的所有函数和数据结构的信息, 说明部分解释了如何编写一个数据包过滤器,而另一个页面则解释
了如何将它包含到应用程序中。一个教程也提供了若干个程序范例,您可以使用它来循序渐进地学习
WinPcap API 的基本使用方法,不过有时候,它也会提供一些高级应用的代码片断。
第二部分内容主要为 WinPcap 的开发、维护人员,以及那些希望了解系统工作原理的人士而准备。
它描述了 WinPcap 的主要设计方法,并解释了它是如何工作的。另外,它阐述了完整的设备驱动的
数据结构及源代码,packet.dll 的接口以及底层的 WinPcap 的 API。如果您想了解 WinPcap 内部
发生了什么,或者您想去扩展它,那么请您阅读此部分内容。
附加文档
最新最及时的文档,请访问 http://www.winpcap.org/docs/
特别地,如果您对 WinPcap 的系统结构和核心内容感兴趣,我们建议您阅读下列内容
Fulvio Risso, Loris Degioanni, An Architecture for High Performance Network
Analysis, Proceedings of the 6
th
IEEE Symposium on Computers and
Communications (ISCC 2001), Hammamet, Tunisia, July 2001
Loris Degioanni, Mario Baldi, Fulvio Risso and Gianluca Varenni, Profiling and
Optimization of Software-Based Network-Analysis Applications, Proceedings
of the 15
th
IEEE Symposium on Computer Architecture and High Performance
Computing (SBAC-PAD 2003), Sao Paulo, Brasil, November 2003
Loris Degioanni, Development of an Architecture for Packet Capture and Network
Traffic Analysis, Graduation Thesis, Politecnico Di Torino (Turin, Italy, Mar.
2000)
术语
为了文献的一致性, 我们会使用术语
数据包
(packet) ,尽管用术语
帧
(frame) 会更加准
确,因为捕获过程是在数据链路层完成的,并且数据链路首部也包含在被捕获的数据中。
本文档中使用的术语 Win9x 表示与 Windows95 同一体系的微软操作系统,如 Windows
98 和 Windows ME。 术语 WinNTx 表示基于 NT 内核的操作系统,从 Windows NT 4
开始,包含了 Windows 2000,Windows XP,Windows Server 2003 等
附注
我们主要会致力于开发基于 Windows NT/2000/XP/2003 版本的 WinPcap 及其相关文档。这一选
择是基于这样一个事实,大多数 WinPcap 用户都工作在 NTx 系统上,而且 9x 技术已经被微软放弃。
此外,我们假定,使用 PC 机来完成类似网络分析这样高级任务的用户,都会安装高级的操作系统。
鉴于这个原因,本文档将参考 WinNTx 的驱动和 API。Win9x 版本在概念上很类似,不过有时在执
行上有些不同。在有些场合,Win9x 版本的 API 缺少一些高级功能。这本手册会给出一个完整的 API
描述,并会指出那些只有 WinNTx 才得到支持的函数。
Last Modified: Sunday, July 23, 2007
WinPcap 教程: 循序渐进教您使用 WinPcap
本节将向您展示如何使用 WinPcap API 的一些特性。 这部分教程细化成若干节课,以循序渐进的
方式介绍给读者,让读者从最基本的部分(获得设备列表)到最复杂的部分(控制发送队列并收集和统
计网络流量)来了解如何使用 WinPcap 进行程序开发。
有时,我们会给出一些简单使用的代码片断,但同时,我们提供完整程序的链接:所有的源代码包含
一些指向手册其他地方的链接,这可以让您很方便地通过点击鼠标来跳转到您想查看的函数和数据结
构的内容中去。
范例程序都是用纯 C 语言编写, 所以,掌握基本的 C 语言编程知识是必须的,而且,这是一部关于
处理原始网络数据包的教程,因为,我们希望读者拥有良好的网络及网络协议的知识。
获取设备列表
通常,编写基于 WinPcap 应用程序的第一件事情,就是
获得已连接的网络适配器列表。libpcap 和 WinPcap 都提供了 pcap_findalldevs_ex() 函数来
实现这个功能: 这个函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的
详细信息。值得注意的是,数据域 name 和 description 表示一个适配器名称和一个可以让人们
理解的描述。
下列代码能获取适配器列表,并在屏幕上显示出来,如果没有找到适配器,将打印错误信息。
#include "pcap.h"
main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
int i=0;
char errbuf[PCAP_ERRBUF_SIZE];
/* 获取本地机器设备列表 */
if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not
needed */, &alldevs, errbuf) == -1)
{
fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n",
errbuf);
剩余202页未读,继续阅读
资源评论
- wangjun7792016-04-21很有用的资料,感谢分享
- bluehighmountain2015-07-02很有用的资料,感谢分享
yansj_sc
- 粉丝: 10
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功