天天看點

wpa_supplicant整體通信架構wpa_supplicant整體通信架構wpa_supplicant整體通信架構

wpa_supplicant整體通信架構

wpa_supplicant的啟動flow目前網絡上已經有一堆了,就不列舉了,這裡主要說一下啟動時,interface有哪些,作用如何,以及整體上下的通信。

wpa_supplicant在啟動時,會初始化三個interface,用于跟上下層進行通信,其中有driver interface、L2 interface、 control interface。

三個interface的作用如下:

1, init driver interface:處理kernel與wpa_supplicant之間的cmd跟event

2, init L2 interface: 處理EAPOL Frame與kernel通信(密碼認證4次握手過程)

3, init control interface: 處理上層與wpa_supplicant cmd與event通信

以Android wpa_supplicant為例:

當啟動wpa_supplicant時,會建立3個socket,分别為:/data/system/wpa_supplicant/wlan0、/data/misc/wifi/sockets/wlan0、/data/misc/wifi/sockets/p2p0,其中/data/misc/wifi/sockets/wlan0與/data/misc/wifi/sockets/p2p0是同級關系,隻是功能不一樣,這裡隻說明一下wlan0即可。

此時,

control interface ---->> /data/system/wpa_supplicant/wlan0

L2\driver interface ---->> /data/misc/wifi/sockets/wlan0(/data/misc/wifi/sockets/p2p0)

當上層的WifiMonitor去連接配接到wpa_supplicant時,會建立/data/misc/wifi/sockets/wpa_xxx1與/data/misc/wifi/sockets/wpa_xxx2兩個sockets,這兩個socket都連接配接到/data/system/wpa_supplicant/wlan0。

其中一個用于上層往wpa_supplicant發送指令。另一個用于監聽wpa_supplicant發上來的events。

而内部則是建立兩個socket, L2 socket與 driver socket,連接配接到/data/misc/wifi/sockets/wlan0(/data/misc/wifi/sockets/p2p0),driver socket用于wpa_supplicant與kernel driver進行指令、消息的監聽,L2 socket用于ap連接配接的四次握手處理。

wpa_supplicant整體通信架構

wpa_supplicant整體通信架構wpa_supplicant整體通信架構wpa_supplicant整體通信架構

繼續閱讀