深度剖析WinPcap之(一)——WinPcap简介

WinPcap是Windows平台下访问网络数据链路层的开源库,该库已达到工业标准的应用要求。WinPcap允许应用程序绕开网络协议栈来捕获与传递网络数据包,并具有额外的有用特性,包括内核层的数据包过滤、一个网络统计引擎与支持远程数据包捕获。

 

1.1.   什么是WinPcap

大多数网络应用程序通过被广泛使用的操作系统原语来访问网络,诸如sockets。操作系统已经处理了底层的细节问题(如协议处理,数据包的封装等),并提供与读写文件类似的、熟悉的接口,这使得用该方法可以很容易的访问网络中的数据。

然而有些时候,这种“简单的方式”并不能满足任务要求,因为有些应用程序需要直接访问网络中的数据包。也就是说,应用程序需要访问网络中的“原始”数据包,即没有被操作系统使用网络协议进行处理过的数据包。

WinPcap的目的就是为Win32应用程序提供这种访问方式。WinPcap提供下列功能:

  • 捕获原始数据包,无论是发送到运行WinPcap机器上的数据包,还是在其它主机(共享媒体)上进行交换的数据包
  • 在数据包分派给应用程序前,根据用户指定的规则过滤数据包
  • 将原始数据包发送到网络
  • 收集网络流量的统计信息

1.2.   WinPcap的优点

1)       自由 WinPcap遵循BSD open source licence发布。这意味着你的应用程序拥有全部自由来修改与使用它,即使应用程序是商业化的。

2)       高性能 WinPcap实现了有关数据包捕获文献中描述的所有典型的优化方法(比如内核级的过滤与缓冲,减少上下文交换,数据包部分内容复制),加上一些原创的优化方法,如JIT过滤器编辑(JIT filter compilation)与内核级的统计过程。因为这些原因,WinPcap胜过其它可比的方法。

3)       普及 WinPcap被许多工具作为网络接口使用——无论是自由软件还是商业软件。包括网络协议分析器、网络监视器、网络入侵检测系统、网络嗅探器、网络流量生成器、网络测试器等等。如WiresharkNmapSnortWinDumpntop这些工具,在网络社群中是众所周知的。WinPcap每天被下载上千次。

4)       测试充分与可信赖 许多用户对WinPcap在广泛的平台上的测试与发现最难以发现的缺陷做出了经年的贡献。WinPcap的开发者是富有经验的Windows驱动程序编写者,同时他们软件开发方法的重点就是强调固若顽石(rock-solid)的稳定性。记住:一个多缺陷的驱动程序意味着蓝屏(Windows操作系统在崩溃后,屏蔽该系统所有处理器的所有中断后,将显示器切换到低分辨率的VGA图形模式下,绘制一个蓝色背景,然后显示停止码,后面紧跟着一些文本信息来建议用户应该怎么办的画面)。

5)       最终用户易于使用 WinPcap作为单个小的可执行文件发布,可运行在每个所支持的操作系统上。开始使用这个可执行文件后,Windows就能捕获与发送原始数据包。不可能再有更简单的操作了。

6)       程序员易于使用 每个版本的WinPcap带有一个开发者包(developer's pack),包括文档、库与include文件,是你立即开发应用程序所必需的。开发者包还包含一个示例程序集,可用Visual Studio或Cygnus编译,用来作为一个极好的起点。

7)       多平台 WinPcap在Windows NT、Windows 2000、Windows XP与Windows Server 2003平台上被积极地维护。WinPcap也能工作在Windows 95、Windows 98 与Windows ME平台上,但在这些操作系统上将不再维护。对Windows Vista具有初步的支持,但有一些特性并不具备。

8)       可移植 WinPcap与libpcap具有完全的兼容性。这意味着能够使用它移植已在Unix或Linux下存在的工具到Windows下。这也意味着Windows应用程序可以很容易的移植到Unix下使用。

9)       良好的文档 WinPcap手册用一种容易理解的超文本链接方式描述,对API与内部进行了文档化。该文档包含一个指南,让你一步一步地熟悉WinPcap的所有特性。

10)    商业化支持 如果你对专业的WinPcap支持感兴趣、或当一些事情出错时你需要一个电话号码寻求帮助,或者在开发底层网络代码时需要帮助,CACE Technologies(http://www.cacetech.com/support)可以帮助你

1.3.   哪类程序使用了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)

1.4.   什么是WinPcap不能做的

WinPcap独立于诸如TCP-IP协议的主机协议来发送和接收网络数据包。这意味着WinPcap不能阻塞、过滤或操纵同一机器上其它应用程序的通信。它只是简单地"嗅探"网络上所传输的数据包,因此WinPcap不能提供诸如网络流量控制、服务质量调度和个人防火墙之类的功能支持。

你可能感兴趣的:(网络嗅探)