一、使用的函数库:libpcap(PacketCapturelibrary)即数据包捕获函数库。支持Linux系统,采用分组捕获机制的分组捕获函数库,用于访问数据链路层,在不同的平台上采用统一的编程接口,使用Libpcap编写的程序可自由的跨平台使用Libcap捕获数据包的方法流程二、Winpcap:是基于win32的捕获数据包和网络分析的体系结构,包括一个内核级的包过滤器,一个底层的动态链接库(Packet.dll)一个高层并且与系统无关的库(Wpcap.dll)它可以从网卡捕获或者放送原始数据,同时能够过滤并且存储数据包主要功能有以下四项:(1)捕获原始数据报,包括共享网络上各主机发送/接收的以及相互之间交换的数据报(2)在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉(3)在网络上发送原始的数据报(4)手机网络通信过程中的统计信息主要的优势:提供了一套标准的抓包接口,并且与libpcap兼容Wincap抓包流程:1.得到网络驱动列表,第一步就是要得到本地网卡列表2.打开网卡捕获数据报,将网卡设置为混杂模式(处于混杂模式下的网卡将接收所有流经它的数据报)3.数据流的过滤4.解析数据报5.处理脱机的堆文件(可以做到从指定接口上捕获数据包并将它们存储到一个指定的文件)6.收集并统计网络流量三、RawSocket方法套接字:源IP地址和目的ip地址以及源端口号和目的端口号的组合称为套接字,用于标示客户端请求的服务器和服务。RawSocket允许对较低层的协议直接访问,如IP,ICMP等。RawSocket可以自如地控制Windows下的多种协议,能够对网络底层的传输机制进行控制,所以可以通过原始套接字来操纵网络层和传输层的应用。(如通过RS来接收发向本机的ICMP,IGMP协议包。也可以用来发送一些自定包头或自定协议的IP包)