libpcap+PF_RING源码分析---前言(一)
2017-03-20 20:46
751 查看
http://blog.csdn.net/smilestone_322/article/details/8451604
Libpcap是Linux下用来捕获数据包的抓包库,它主要是基于socket的,和winpcap的本质的不同是,winpcap是和tcp/ip协议同层的,而libpcap是应用层的库,在tcp/ip层上对socket的又一次封装,所以从网卡得到的数据包需要经过多次拷贝才能达到应用程序,在千兆网的条件下,捕获包的性能较差,为了提高libpcap的包捕获性能,采用PF_RING对libpcap进行改进,改进后的libpcap采用环状缓冲区从网卡接收数据包,然后通过mmap映射到应用程序,减少内存拷贝的次数。为了更好的理解libpcap,pfring,libpfring等库函数,所以对这些源码进行分析,其中pfring是内核的源码,而libpfring是对pfring的封装,供应用程序调用,其实不采用libpcap,直接采用libpring也能捕获数据包,因为目前大部分的sniff工具都是建立在libpcap之上的,所以还是采用libpcap的接口,在底层采用pfring修改socket的实现过程。
Winpcap和libpcap捕获数据包的不同之处在于winpcap是与tcp/ip同层的协议,而libpcap是应用层的开发包,libpcap+pf_ring补丁后,和winpcap就有点类似了,都是采用环状的内核缓冲区,内核缓冲区的大小都可以设置。而winpcap和libpcap另外一个不同之处在于,它可以设定mintocopysize,即当内核缓冲区有这么多数据的时候,就将数据拷贝到应用程序缓冲区,而libpcap是没有这种功能的。Libpcap主要是基于网卡中断或轮询往上层传替数据的。
Libpcap是Linux下用来捕获数据包的抓包库,它主要是基于socket的,和winpcap的本质的不同是,winpcap是和tcp/ip协议同层的,而libpcap是应用层的库,在tcp/ip层上对socket的又一次封装,所以从网卡得到的数据包需要经过多次拷贝才能达到应用程序,在千兆网的条件下,捕获包的性能较差,为了提高libpcap的包捕获性能,采用PF_RING对libpcap进行改进,改进后的libpcap采用环状缓冲区从网卡接收数据包,然后通过mmap映射到应用程序,减少内存拷贝的次数。为了更好的理解libpcap,pfring,libpfring等库函数,所以对这些源码进行分析,其中pfring是内核的源码,而libpfring是对pfring的封装,供应用程序调用,其实不采用libpcap,直接采用libpring也能捕获数据包,因为目前大部分的sniff工具都是建立在libpcap之上的,所以还是采用libpcap的接口,在底层采用pfring修改socket的实现过程。
Winpcap和libpcap捕获数据包的不同之处在于winpcap是与tcp/ip同层的协议,而libpcap是应用层的开发包,libpcap+pf_ring补丁后,和winpcap就有点类似了,都是采用环状的内核缓冲区,内核缓冲区的大小都可以设置。而winpcap和libpcap另外一个不同之处在于,它可以设定mintocopysize,即当内核缓冲区有这么多数据的时候,就将数据拷贝到应用程序缓冲区,而libpcap是没有这种功能的。Libpcap主要是基于网卡中断或轮询往上层传替数据的。
相关文章推荐
- libpcap+PF_RING源码分析---前言(一)
- libpcap+PF_RING源码分析一、二
- pf_ring 5.4.0源码分析
- linux fedora 14(内核2.6.35.6) PF_RING+libpcap 极速捕获千兆网数据包,不丢包
- Linux ubuntu PF_RING+libpcap 极速捕获千兆网数据包,不丢包
- libdvbpsi源码分析(前言)
- linux fedora 14(内核2.6.35.6) PF_RING+libpcap 极速捕获千兆网数据包,不丢包
- Linux ubuntu PF_RING+libpcap 极速捕获千兆网数据包,不丢包
- PF_RING 内核源码(四)
- Python之美[从菜鸟到高手]--httplib源码分析及IncompleteRead异常解决方案
- libdvbpsi源码分析(四)PAT表解析/重建
- OpenStack Swift源码分析(5)----swift-ring-builder源代码解析之二
- libpcap丢包原理分析及Fedora 9 内核2.6.25.14下安装PF-RING的详细过
- libhdfs源码分析(3)
- [原创]Backbone源码分析-前言开光-框架>=本质
- mosquitto-0.15-lib-mosquitto.c源码分析
- libhdfs源码分析(5)
- lib文件格式分析,以及从lib文件提取obj的思路和源码
- Wireshark的Pcap文件格式分析及解析源码【转】
- jrtplib 源码分析 (三) SOCKET