基于libpcap的网络编程技术

基于libpcap的网络编程技术

ID:19608994

大小:167.50 KB

页数:14页

时间:2018-10-04

基于libpcap的网络编程技术_第1页
基于libpcap的网络编程技术_第2页
基于libpcap的网络编程技术_第3页
基于libpcap的网络编程技术_第4页
基于libpcap的网络编程技术_第5页
资源描述:

《基于libpcap的网络编程技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第五章基于libpcap的网络编程技术5.1常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软件或系统开发包捕获驱动程序提供的捕获机制。常见的包捕获机制如表5-1所示。其中最主要的是下列4种:üBPF(BerkeleyPacketFilter)üDLPI(DataLinkProviderInterface)üNIT(NetworkInterfaceTap)üSOC

2、K-PACKET类型套接口。BPF由基于BSD的Unix系统内核所实现。DLPI是Solaris(和其他SystemVUNIX)系统的内嵌子系统。NIT是SUNOS4系统的一部分,但在Solaris/SUNOS5中被DLPI所取代。Linux核心则实现了SOCK-PACKET的包捕获机制。从性能上看,BPF比DLPI和NIT好得多,SOCK-PACKET最弱。表5-1常用的包捕获机制包捕获机制系统平台备注BPFBSD系列BerkeleyPacketFilterDLPISolaris,HP-UXSCODataLinkP

3、roviderInterfaceNITSunOS3NetworkInterfaceTapSNOOPIRIX SNITSunOS4StreamsNITSOCK_PACKETLinux LSF>=Linux2.1.75LinuxSocketFilterDrainIRIX用于窃听系统丢弃的包由于现在很多局域网为NT网,其网络传输方式大多采用以太网标准,所以涉及的编程也是在Windows环境下实现的。Windows操作系统没有提供包捕获机制,只提供了数量很少并且功能有限的API调用。在Windows环境下由于其自身的封装性,

4、很难对其底层进行编程。本章将对BSD系列的libpcap进行深入地介绍。5.2Libpcap与BPF(1)libpcap概述libpcap(PacketCapturelibrary),即数据包捕获函数库。该库提供的C函数接口可用于捕获经过网络接口(只要经过该接口,目标地址不一定为本机)的数据包。它是由洛仑兹伯克利试验室的研究人员StevenMcCanne和VanJacobson于1993年在Usenix'93会议上正式提出的一种用于Unix内核数据包过滤体制。该函数库支持Linux、Solaris和BSD系统平台。采

5、用libpcap可以捕获本地网络数据链路层上的数据。libpcap库是基于BPF(BerkeleyPacketFilter:BSD包过滤器)系统的。BPF是BSD系统在的TCP/IP软件在实现的时候所提供的一个接口,通过这个接口,外部程序可以得到到达本机的数据链路层网络数据,同时也可以设置过滤器,嵌入到网络软件中,获得过滤后的数据包。(2)BPF结构及工作原理BPF或者BSDPacketFilter是一种由stevenMcCanne和VanJacobson提出的内核包捕获的体系结构,它使得UNIX下的应用程序通过一个

6、高度优化的方法读取流经网图5-1BPF工作原理络适配器的数据包。winpcap的核心网络驱动程序也是采用这种结构的。它主要由两部分组成:Networktap和PacketFilter。Networktap是一个回调函数(callbackfunction),并不是直接由BPF执行,当一个新的数据包到达时,由网络适配器的设备驱动程序激活,它从网络拷贝每个数据包,并且将它们分发到对应的应用程序。Packetfilter来决定一个数据包是否需要进行接收和拷贝到相应的应用程序,同时还提供一种很复杂的功能,可以确定需要进行拷贝的

7、数据的长度。BPF的工作原理如图5-1所示。由Networktap不断地从网络适配器获得数据包,通过packetfilter的判断后,拷贝数据到内核storebuffer,当storebuffer填满后,将和holdbuffer进行数据交换,再由holdbuffer将数据拷贝到处于用户层的userbuffer中。由于采用这种内核过滤、数据包双缓冲、数据包批拷贝的方式,减少了用户态进程调用内核的次数,极大地提高了数据包的处理能力。在系统实现的过程中可以充分利用BPF过滤模型的这种特性,通过根据不同的网络侦听的需求,如针

8、对特定的协议、特定的机器等,设置内核过滤器,减少捕获的数据的大小,同时增加内核缓冲区的大小,使系统能够获得一个很好的性能。BPF的结构如图5-2所示。libpcap在BPF的基础上提供了实用的接口函数供其它程序调用,既可以捕获网络上的数据,也可以打开tcpdump和tcpslice格式的数据,进行分析。同时也可以根据需要,设置过滤器,获得感兴趣

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。