libpcap

来源:互联网 发布:php隐藏域传值 编辑:程序博客网 时间:2024/05/16 12:44

libpcap丢包的严重性,在默认情况下,其丢包率可以达到97%以上。这个恐怖的数值使我们感到惊讶。
经过昨天对问题的分析,把解决问题的办法定位到了改变内核上。以改变libpcap的底层实现。Libpcap在底层也是通过socket来实现的。
解决问题的办法是往内核中添加一种名为PF_RING的socket,这种socket在底层实现了DMA的读取方式,从而大大提高了网卡的效率。因为造成libpcap丢包的问题在于网卡收到数据后会引起一个中断活锁。在中段中去处理从网卡内存写入的用户缓冲区的操作。而这段时间内发来的数据报就被丢失了。PF_RING就解决了这个问题。
但是同时需要修改网卡的工作模式,需要修改为混杂模式才能够监听设备。这是作为监听机必须得设置,明天需要把这个设置写到程序中。就不用用户手动去修改了。
添加PF_RING,编译内核的步骤如下可以参照http://www.cnblogs.com/bits/archive/2009/03/25/Linux-PF_RING.html中的介绍,非常详细。
3.重新编译内核之后,不行的事情却发生了。我们的无线网卡驱动丢了。用ifconfig命令查看网络连接,没有我们的无线网卡rausb0。为了添加上无线网卡。采用下边的步骤:
      a.   rmmod 所有rt73相关的module
        rmmod rt73
        rmmod rt73usb
        rmmod rt2x00usb
        rmmod rt2x00lib
        rmmod crc_int_cr
     b.   删除所有相关的.ko
          /lib/modules/2.6.21-1.3194.fc7/extra/rt73.ko
/lib/modules/2.6.21-1.3194.fc7/kernel/drivers/net/wireless/mac80211/rt2x00/rt73usb.ko
/lib/modules/2.6.21-1.3194.fc7/kernel/drivers/net/wireless/mac80211/rt2x00/rt2x00usb.ko
/lib/modules/2.6.21-1.3194.fc7/kernel/drivers/net/wireless/mac80211/rt2x00/rt2x00lib.ko
      c.执行安装步骤:
          wget http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt73- k2wrlz-3.0.2.tar.bz2
          tar -xjf rt73-k2wrlz-3.0.2.tar.bz2
           cd rt73-k2wrlz-3.0.2/Module
           make
           rmmod rt73
           make install
           modprobe rt73
安装成功,但是启动之后还是无法抓包
启动ariodump rausb0之后,抓包正常.

原创粉丝点击