2. 发送一个P2P Invitation Request调用一个之前建立过的P2P组,其中双方都曾经是这个组的成员,且其中之一是GO。
3. 初始化GO协商,建立一个全新的P2P组。两个处于Discovery中的P2P设备
在Scan阶段的P2P设备可以发现处于Listen状态的另一个P2P设备,如果要建立连接,则可以 1. 初始化GO协商以便建立一个新的P2P组。
2. 发送一个P2P Invitation Request帧,调用之前建立过的一个P2P持久组,其中一个设备是组的GO。
3. 发送一个P2P Invitation Request帧请求另一个P2P设备加入当前设备处于的P2P组中,该设备是GO或GC。
针对GO的设备发现过程
已经作为GO的P2P设备会在Operating Channel等待其他设备发现它。GO也可能在其他信道上搜索想要通信的设备或服务。如果P2P GO离开了Operating Channel,则需要使用Notice of Absence机制通知其他设备。
P2P GO发现Legacy Client
Legacy Client只能发现P2P GO。当GO接收到Legacy Client发过来的Probe Request帧时,P2P 设备会传输一个Probe Response帧。Legacy Client可能使用收集的信息初始化一个WSC(Wi-Fi SimpleConfiguration)用于连接上这个P2P设备。不支持WSC的Legacy Client必须使用其他方法被provisioned,P2P GO应该产生用于Provisioning的Credentials。P2P设备发现与AP关联的一个P2P设备
过程类似,与AP关联的P2P设备也需要进入Listen状态,以便于被其他设备发现。3 Service Discovery proceduresoptional
4. Group Formation procedure完成Group Formation不能超过15秒。
4.1. GO Negotiation.
包含一个三路握手过程,用于协商谁是GO以及P2P组的一些特征。
Created with Raphaël 2.1.2P2P_Device1P2P_Device1P2P_Device2P2P_Device2GO
Negotiation RequestGO Negotiation ResponseGO Negotiation Confirmation
这三路握手过程主要主要交换如下一些信息: 1. Group Owner Intent Value
2. Acceptable Operating Channel the Group may use 3. Credentials for the P2P Group
4. Group Duration: Temporary or Persistent
5. Group support for other devices and optional capabilities
当一个P2P设备发现GO Negotiation Request后,100m内没有接收到确认帧,则认为此次协商失败。GONegotiation的一个主要目的就是交换GO Intent属性,以决定谁当GO。如果一个P2P设备只能当GO,则其GOIntent值必须设置为15。
第一个GO Negotiation Request帧的Tie Breaker位会被随机设置为0或1。在接下来的GO Negotiation Request帧中(该位会被置反,重传除外)。GO Negotiation Response帧的Tie breaker位将会根据相应的GO NegotiationRequest帧的相应位置反。
4.2. Provisioning To allow for P2P Device configuration, P2P Devices may delay starting the Provisioning phase untilthe expiration of the maximum of the P2P Group Owners GO Configuration Time and the P2PClients Client Configuration Time from the respective Configuration Timeout attributes exchangedduring Group Owner Negotiation. The P2P client should connect to GO to obtain Credentials. They use WiFi Simple Configuration toexchange credentials. P2P Group session is established using appropriate credentials.5. P2P Invitation procedure此过程发生在如下一些情况: 1. GO邀请一个P2P设备成为GC。 2. 一个P2P GC邀请另一个P2P设备加入GC所在的P2P组(可能需要P2P设备的一些服务) 3. 请求调用一个持久P2P组,这两个设备之前都被授权过,且其中一个设备是GO。P2P组操作 P2P组中的GO相当于AP的角色,而GC则相当于STA角色。每个P2P组都有一个唯一ID。ID包含GO的P2P设备地址,以确保唯一性。加入P2P组的设备需要获得证书,证书要求如下: 1. 认证类型:WPA2-PSK 2. 加密类型:AES 3. 使用64个十六进制字符的网络键值类型 4. 每个组都有不同的SSID。每个SSID都以DIRECT-开始,包含ASCII字符”xy”,以及一些随机的大小写及数字的组合。 开启和维护一个P2P组会话 P2P GO会拥有一个P2P接口地址,将作为P2P组会话期间的MAC地址和BSSID。GO会选择一个Operating信道,在该信道发送Probe Response以响应Probe Request,并不停发送Beacon帧以广播 TSF(时间同步),所需要的操作参数,支持的能力,成员以及组内可提供的服务。 连接到一个P2P组 一个P2P设备通过设备发现程序来发现一个GO或另一个P2P设备。在连接到P2P组前,P2P设备会赋予一个P2P接口地址。当一个P2P设备加入一个已经存在的P2P组时,且没有保存该组的证书,则需要发送一个ProvisionDiscovery Request帧给GO来表明希望注册到P2P组中,这个帧的发送地址是GO的设备地址。GO收到这个帧后,就知道有设备想加入P2P组,会回一个Provision Discovery Response帧给对端以表明失败还是成功。如果100ms内对端没有收到响应,则会认为失败。当成功会,则会获取证书,进入认证过程。此时,观察p2p0的状态,有如下一些变化过程: 11878:D/wpa_supplicant( 798): p2p0: State: DISCONNECTED -> SCANNING 12122:D/wpa_supplicant( 798): p2p0: State: SCANNING -> ASSOCIATING 12219:D/wpa_supplicant( 798): p2p0: State: ASSOCIATING -> ASSOCIATED 12780:D/wpa_supplicant( 798): p2p0: State: ASSOCIATED -> DISCONNECTED 12802:D/wpa_supplicant( 798): p2p0: State: DISCONNECTED -> DISCONNECTED 12819:D/wpa_supplicant( 798): p2p0: State: DISCONNECTED -> SCANNING 13020:D/wpa_supplicant( 798): p2p0: State: SCANNING -> ASSOCIATING 13113:D/wpa_supplicant( 798): p2p0: State: ASSOCIATING -> ASSOCIATED 13175:D/wpa_supplicant( 798): p2p0: State: ASSOCIATED -> 4WAY_HANDSHAKE 13229:D/wpa_supplicant( 798): p2p0: State: 4WAY_HANDSHAKE -> 4WAY_HANDSHAKE 13242:D/wpa_supplicant( 798): p2p0: State: 4WAY_HANDSHAKE -> GROUP_HANDSHAKE 13263:D/wpa_supplicant( 798): p2p0: State: GROUP_HANDSHAKE -> COMPLETED 断开P2P连接 发送Disassociation帧
因篇幅问题不能全部显示,请点此查看更多更全内容