我可以在用户空间获得有关在802.11中第2层丢弃数据包的通知。
根据我的理解,发生的情况是,当媒体上发送数据包时,如果传输正确,则会收到第2层ACK(如果没有,它会进行重传并最终丢弃数据包)几次重试后交付..)
我希望能够访问此通知(在用户空间中)并更改数据包传输的行为。
我希望能够将数据包从FIB发送到另一台主机,而不是丢弃数据包。
我已经阅读了libpcap库和netfilter钩子,它允许我捕获数据包并将它们注入网络堆栈。
但是我无法找到钩子(如果有的话,对于无线堆栈)来帮助我捕获第2层中的数据包通知。
如果我不正确理解,请纠正我。此外,任何单挑或阅读链接都会很棒。
答案 0 :(得分:1)
不,你不能,至少不使用标准化的套接字接口。 802.11是一个链路层,套接字 API严格地与链路层无关:除非它可以在所有链路层上工作,否则它不在套接字< / em>的。这有很好的理由:你想象的那种跨层互动经过多次尝试,而且它总是比它的价值更麻烦。
您没有向我们提供有关该应用程序的任何详细信息 - 但最佳解决方案很可能是更改您的应用程序层协议以发送显式确认,并在您未能收到回复路由时通过回退路由发送数据ACK。