【发布时间】:2014-02-27 19:08:15
【问题描述】:
有没有办法在用户空间中获取有关在 802.11 的第 2 层丢弃数据包的通知。
根据我的理解,当一个数据包在介质上发送出去时,如果它被正确传递,就会收到第 2 层 ACK(如果没有,它会重新传输,如果没有,它最终会丢弃数据包多次重试后交付..)
我希望能够访问此通知(在用户空间中)并更改数据包传输的行为。
我希望能够将数据包从 FIB 发送到另一台主机,而不是丢弃数据包。
我已经阅读了有关 libpcap 库和 netfilter 钩子的信息,它们允许我捕获数据包并将它们注入回网络堆栈。..
但我找不到帮助我在第 2 层捕获数据包通知的钩子(如果有的话,用于无线堆栈)。
如果我没有正确理解某些内容,请纠正我。此外,任何提示或阅读链接都会很棒。
【问题讨论】:
-
无线驱动程序肯定知道帧丢失,也许mac80211也知道。那么问题是这些信息在返回到发送应用程序的途中返回多远?你如何发送/注入帧/数据包? (普通 IP、原始 IP 套接字、原始数据包套接字、libpcap、...)
-
@dasup 我想我会使用任何不同的选项来注入它(我还通过了 libnet,它用于数据包注入......还没有尝试过它的一个例子。 .我还没有调查过..你知道任何钩子或api接收帧丢失通知吗?
标签: sockets networking linux-kernel wifi data-link-layer