什么是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 6th 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 15th 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才得到支持的函数。 

wKioL1gPCQSDF0EtAAAgU_wFZNg662.png-wh_50

wKiom1gPCQXBkxz3AAEzYRDQhIE932.png-wh_50

wKioL1gPCQXz4ky5AAAwK8DPuaI089.png-wh_50