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之后,抓包正常.
- libpcap
- libpcap
- LIBPCAP
- libpcap
- libpcap
- libpcap
- Libpcap
- libpcap
- libpcap
- libpcap
- libpcap
- libpcap
- libpcap应用
- libpcap小议
- Libpcap函数库
- winpcap & libpcap
- libpcap编译
- libpcap原理
- 可重入函数、线程安全函数、异步信号安全函数
- c系语言中extern详解
- JOJ1197: Sum It Up
- JS简单语法:
- pku2948 Martian Mining
- libpcap
- 使用PHP做Linux/Unix守护进程
- 29岁之前不要在乎的十件事
- 面试提问环节
- 删除桌面“恶意”图标
- 如何成为优秀软件设计师
- JOJ 2360: Trading Transaction
- 【转】注意 ExecuteNonQuery() 返回值 问题
- Java内存模型