wpa_supplicant2

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_supplicant2_第1张图片

        

你可能感兴趣的:(wpa_supplicant)