2014-02-27 17 views
2

有沒有一種方法可以在用戶空間中獲取有關在802.11中第2層丟棄包的通知。第2層丟包通知

根據我的理解會發生什麼,當一個數據包在介質上發出時,如果傳送正確,就會收到第2層的ACK(如果沒有,它會重傳並最終丟棄數據包if幾次重試後未交付..)

我想能夠訪問此通知(在用戶空間中)並更改數據包傳輸的行爲。

我希望能夠從FIB發送數據包到另一臺主機,而不是丟棄數據包。

我看過的libpcap庫和netfilter的鉤子,讓我來捕捉數據包並注入他們回到網絡堆棧上..

但我無法找到掛鉤(如果有的話,無線堆棧)幫助我捕獲Layer-2中的數據包通知。

如果我沒有正確理解某些東西,請糾正我。此外,任何單挑或鏈接閱讀將是偉大的。

+0

當然,無線驅動程序知道幀丟失,也許mac80211也知道。問題是_這個信息到達發送應用程序的路上怎麼回傳?_如何發送/注入幀/數據包? (普通IP,原始IP套接字,原始數據包套接字,libpcap,...) – dasup

+0

@dasup我想我要麼使用任何不同的選項注入它(我也通過libnet,它用於數據包注入。 。還沒有嘗試過它的一個例子..我還沒有研究過它.. 你是否有任何鉤子或API的知識接收幀丟失通知? – Akshay

回答

1

不,您不可以,至少不要使用標準化的插座接口。 802.11是一個鏈路層,並且插座 API嚴格地說是鏈路層不可知的:除非它要在所有鏈路層上工作,它不在插座中。這是有充分的理由的:你所設想的那種跨層交互已經被多次嘗試過了,而且總會遇到更多麻煩而不是價值。

您沒有給我們提供關於應用程序的任何細節 - 但最好的解決方案很可能是更改您的應用程序層協議以發送顯式確認,並在您未能收到ACK時通過回退路由發送數據。