发布时间:2025-12-10 11:17:08 浏览次数:8
Wi-Fi认证的Wi-Fi Direct程序允许在一种新型的Wi-Fi网络中直接将设备相互连接,而无需加入传统的家庭、办公室或热点网络。
Wi-Fi Direct可以以现有的Wi-Fi速度连接,还可以广播设备可用性并寻找其他Wi-Fi Direct设备。
Wi-Fi Direct可实现与蓝牙相同的设备连接,但范围和速度与用户使用现有Wi-Fi连接和功能的体验相当:
支持WPA2(Wi-Fi保护访问2)和AES加密,以实现更安全的连接
支持2.4 GHz和5 GHz
Wi-Fi Direct定义了一种体系结构和一组协议:
Wi-Fi设备到设备的连接
向后兼容现有的Wi-Fi认证设备
P2P设备同时支持P2P组所有者(GO)和P2P客户端角色:
P2P GO角色具有
1类似AP的功能
2.支持Wi-Fi保护的设置(WPS)内部注册器角色
3.客户端之间的通信
P2P客户端角色
1.非AP STA功能
2. WPS注册功能
下面看几张图,
第一张是显示了P2P组件和拓扑结构
第二张显示对于n=1的P2P 1:n拓扑的子集
第三张是显示了P2P并发设备,可以是一个或两个并发设备
2.2.1 非自主GO方法
1. 在两个对等点上启动wpa_li,启动p2p0 端口
2. 在对等端上运行find命令
3. 对等设备信息一旦被发现就会显示,例如,查找对等设备MAC地址和设备名称:
<3>CTRL-EVENT-SCAN-STARTED<3>P2P-DEVICE-FOUND 22:4c:69:67:11:93 p2p_dev_addr=22:4c:69:67:11:93 pri_dev_type=10-0050F204-5 name='U6080AA' config_methods=0x188 dev_capab=0x25 group_capab=0x0 vendor_elems=1 new=0<3>P2P-DEVICE-FOUND 76:12:b3:c3:9a:ba p2p_dev_addr=76:12:b3:c3:9a:ba pri_dev_type=3-0050F204-1 name='DIRECT-ba-HP M232 LaserJet' config_methods=0x88 dev_capab=0x0 group_capab=0x1 vendor_elems=1 new=0<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED<3>CTRL-EVENT-SCAN-STARTED4. 成功找到设备后,在Go/Client端运行stop命令:
# p2p_stop_find5. 在Go/Client端运行connect命令
# p2p_connect <Mac Address of Peer> pbc非自治GO方法状态消息看起来类似于以下内容:
2.2.1 自主GO方法
1. 在两个对等点上启动wpa_li,启动p2p0 端口
2. 启动自主GO:
p2p_group_add3. 在对等端上运行find命令
对等设备信息一旦被发现就会显示,例如,查找对等设备MAC地址和设备名称:
<3>P2P-DEVICE-FOUND 00:0a:f5:89:89:8a p2p_dev_addr=00:0a:f5:89:89:8a pri_dev_typ e=1-0050F204-1 name='P2P@123' config_methods=0x188 dev_capab=0x23 group_capab=0x04. 成功找到设备后,在Go/Client端运行stop命令:
# p2p_stop_find5 .在GO端运行wps_pbc命令
# wps_pbc6. 在客户端运行connect命令:
# p2p_connect <Mac Address of Peer> pbc joinGO侧的自主GO方法消息类似于以下内容:
客户端上的消息类似于以下内容:
p2p_connect 00:0a:f5:89:89:8a pbc join <3>CTRL-EVENT-STATE-CHANGE id=-1 state=3 BSSID=00:00:00:00:00:00 <3>CTRL-EVENT-SCAN-RESULTS <3>WPS-AP-AVAILABLE-PBC <3>Trying to associate with 00:0a:f5:89:89:8a (SSID='DIRECT-Wi' freq=2462 MHz) <3>CTRL-EVENT-STATE-CHANGE id=-1 state=5 BSSID=00:0a:f5:89:89:8a <3>CTRL-EVENT-STATE-CHANGE id=0 state=6 BSSID=00:0a:f5:89:89:8a <3>Associated with 00:0a:f5:89:89:8a <3>CTRL-EVENT-EAP-STARTED EAP authentication started <3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=1 <3>CTRL-EVENT-EAP-METHOD EAP vendor 14122 method 1 (WSC) selected <3>WPS-CRED-RECEIVED <3>WPS-SUCCESS <3>P2P-GROUP-FORMATION-SUCCESS <3>CTRL-EVENT-EAP-FAILURE EAP authentication failed <3>CTRL-EVENT-STATE-CHANGE id=0 state=0 BSSID=00:00:00:00:00:00 <3>CTRL-EVENT-STATE-CHANGE id=-1 state=3 BSSID=00:00:00:00:00:00 <3>CTRL-EVENT-DISCONNECTED bssid=00:00:00:00:00:00 reason=0 <3>CTRL-EVENT-STATE-CHANGE id=-1 state=0 BSSID=00:00:00:00:00:00 <3>CTRL-EVENT-SCAN-RESULTS <3>WPS-AP-AVAILABLE <3>Trying to associate with 00:0a:f5:89:89:8a (SSID='DIRECT-Wi' freq=2462 MHz) <3>CTRL-EVENT-STATE-CHANGE id=-1 state=5 BSSID=00:0a:f5:89:89:8a <3>CTRL-EVENT-STATE-CHANGE id=0 state=6 BSSID=00:0a:f5:89:89:8a <3>Associated with 00:0a:f5:89:89:8a <3>CTRL-EVENT-STATE-CHANGE id=0 state=7 BSSID=00:00:00:00:00:00 <3>CTRL-EVENT-STATE-CHANGE id=0 state=8 BSSID=00:00:00:00:00:00<3>WPA: Key negotiation completed with 00:0a:f5:89:89:8a [PTK=CCMP GTK=CCMP] <3>CTRL-EVENT-CONNECTED - Connection to 00:0a:f5:89:89:8a completed (auth) [id=0 id_str=] <3>P2P-GROUP-STARTED wlan0 client ssid="DIRECT-Wi" freq=0 psk=c98fada6c23b597732 760aaef536d7a4ad8df97ff727482f17388db5498e30da go_dev_addr=00:0a:f5:89:89:8aP2P Android 架构
P2P接口架构显示
Scan:全信道的扫描
Find:search和listen的循环,在一个3个channel(1,6,11)上扫描,在1个channel(1,6,11中的一个)上听。
Formation:包括了go neg (协商谁是go)过程和provison(协商使双方具有相同的配置)过程。
Operation: auth,assoc,4-way handshake(协商单播key),2-way handshake(协商组播key)。
Wifi p2p的连接有很多场景
下面只针对第1种情况做详细分析,其它的场景分析方法相同。其中第1种情况分go与gc两端讲述。