我编写了一个自定义无线系统/驱动程序,它在带有数据包注入的 wifi 卡上工作,并且处于监控模式。我的程序基于 libpcap,用于pcap_inject
通过无线设备发送数据包。
它适用于任何数量的传入流量和每秒 1-2 个数据包的传出(ICMP ping)。然而,问题在于,当我开始尝试以更快的速度传输(TCP,更有用的协议,每秒 25 个以上的数据包)时,我似乎很快就耗尽了缓冲区,并且我的程序错误以Failed to inject packet: send: Resource temporarily unavailable
.
这对我来说没有任何意义。我知道我的无线网卡可以传输足够快的速度以超过 500Mb/s 的速率处理 TCP(因此它不会使设备的 TX 环形缓冲区饱和),所以我认为问题出在其他地方。数据包注入在驱动程序/固件中是否以某种方式不太优化?libpcap 是否只是回避某种重要的缓冲区并尝试自行传输?