Wi-Fi p2p & ap 共存
nl80211 接口
![](https://static001.geekbang.org/infoq/fe/fef1bae873476256b1cf20f773d9d000.png)
WiFi 模式:
AP(Access Point): 无线接入点
STA(Station): 站点
P2P: wifi-direct
WiFi 的共存模式:
station mode + station mode
station mode + ap mode
station mode + p2p mode
p2p mode + ap mode
ap mode
ap mode 通用应用在无线局域网成员设备(即客户端)的加入,即网络下行。它提供以无线方式组建无线局域网 WLAN,相当际 WLAN 的中心设备。
station mode
station mode 即工作站模式,可以理解为某个网格中的一个工作站即客户端。那当一个 WIFI 芯片提供这个功能时,它就可以连到另外的一个网络当中,如家用路由器。通常用于提供网络的数据上行服务
p2p mode
p2p mode 也为 Wi-Fi Direct
Wi-Fi Direct 是一种点对点连接技术,它可以在两台 station 之间直接建立 tcp/ip 链接,并不需要 AP 的参与;其中一台 station 会起到传统意义上的 AP 的作用,称为 Group Owner(GO),另外一台 station 则称为 Group Client(GC),像连接 AP 一样连接到 GO。GO 和 GC 不仅可以是一对一,也可以是一对多;比如,一台 GO 可以同时连接着多台 GC
wpa_supplicant
wpa_supplicant 是一个连接、配置 WIFI 的工具,它主要包含 wpa_supplicant 与 wpa_cli 两个程序. 可以通过 wpa_cli 来进行 WIFI 的配置与连接,前提要保证 wpa_supplicant 正常启动。
什么是 wpa_spplicant
wpa_supplicant 本是开源项目源码,被谷歌修改后加入 Android 移动平台,它主要是用来支持 WEP,WPA/WPA2 和 WAPI 无线协议和加密认证的,而实际上的工作内容是通过 socket(不管是 wpa_supplicant 与上层还是 wpa_supplicant 与驱动都采用 socket 通讯)与驱动交互上报数据给用户,而用户可以通过 socket 发送命令给 wpa_supplicant 调动驱动来对 WiFi 芯片操作。 简单的说,wpa_supplicant 就是 WiFi 驱动和用户的中转站外加对协议和加密认证的支持。
wpa_supplicant 无线网络配置
目前可以使用 wireless-tools 或 wpa_supplicant 工具来配置无线网络。请记住重要的一点是,对无线网络的配置是全局性的,而非针对具体的接口。
wpa_supplicant 是一个较好的选择,但缺点是它不支持所有的驱动。请浏览 wpa_supplicant 网站获得它所支持的驱动列表。另外,wpa_supplicant 目前只能连接到那些你已经配置好 ESSID 的无线网络。wireless-tools 支持几乎所有的无线网卡和驱动,但它不能连接到那些只支持 WPA 的 AP。
经过编译后的 wpa_supplicant 源程序可以看到两个主要的可执行工具:wpa_supplicant
和 wpa_cli
。wpa_supplicant
是核心程序,它和 `wpa_cli` 的关系就是服务和客户端的关系:后台运行 wpa_supplicant,使用 wpa_cli 来搜索、设置、和连接网络。
P2P architecture with Linux/mac80211/ath9k
![](https://static001.geekbang.org/infoq/90/90057d489a057290bc97495fefeab403.png)
P2P module
![](https://static001.geekbang.org/infoq/28/28d0e521caac37351ecf480489d4a112.png)
参考:
https://blog.csdn.net/wirelessdisplay/article/details/53365377
https://w1.fi/wpa_supplicant/devel/p2p.html
https://blog.csdn.net/ltm157/article/details/24810685
评论