您的当前位置:首页正文

WiFi P2P协议学习

2021-03-07 来源:客趣旅游网
基本功能与服务1. P2P设备不能使用11b的速率传输数据和管理帧,除非 Probe Request帧要同时发送给P2P设备和非P2P设备2. P2P设备不能响应显示只支持11b速率的Probe Request帧P2P设备应该支持如下一些操作:1. P2P Discovery2. P2P Group Operation3. P2P Power Management 省电相关4. Managed P2P Device Operation 在IT部门限制下使用P2P功能P2P设备寻址每个P2P设备都有一个P2P设备地址,用于唯一引用该设备。在P2P发现阶段,设备地址都是作为帧的发送地址和接收地址。当一个P2P设备处于一个P2P组中时,要么是GO或GC。GO和GC之间使用接口地址进行数据通信,接口地址不是全局的。主要功能描述及过程1. P2P discovery主要包含如下几个主要部分:过程描述Device Discovery两个P2P设备在同一个信道上交换信息Service Discovery一个可选的Feature,允许在建立P2P连接前,发现可用的更高层服务Group Formation确认P2P设备当作GO还是GCP2P Invitation触发一个Persistent P2P组,或者邀请一个P2P设备加入一个存在的P2P组中。2. Device Discovery Procedure基本机制Device Discovery使用Probe Request和Probe Response帧来交换设备信息。除了如下情况,一个P2P设备不应该响应Probe Reqeust帧: 1. 它是一个GO 2. 它处于Listen状态 3. 它与AP关联, 并在Probe Request帧发送的信道上在与AP进行数据通信,如果它此时还不是一个P2P组成员,则可以响应Probe Request帧。 只有GO才能传输Beacon帧。Listen State P2P设备在指定的社会信道(2.4G中的1,6,11信道)上监听Probe Request帧。A P2P Deviceshould be available in the Listen State for at least a contiguous period of 500ms every 5s in order toenable other P2P Devices to discover it.Scan Phase 1. The P2P Device in the Scan Phase shall not reply to Probe Request frames. 2. 一个P2P设备可以描述特定类型的设备或某个P2P设备。Find Phase 在此阶段,一个P2P设备交替地在Listen和Search两种状态之间切换。 A P2P Device in the Search State shall not reply to Probe Request frames. 发现处于一个P2P组中的设备 要发现一个P2P组中的设备,必须通过GO。 如果一个设备想加入一个P2P组,则需要: 1. 获得GO的允许 2. 如果P2P被provisioned,则连接到P2P组。 如果一个P2P设备想邀请另一个P2P设备组成一个新的组,则可以执行如下 的一些操作 1. 发送一个P2P Invitation Request邀请对方加入。

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帧

因篇幅问题不能全部显示,请点此查看更多更全内容