目录
1. WiFi P2P 的工作原理
2. WiFi P2P discovery阶段
2.1 介绍
2.2 Device Discovery过程
2.3 Service Discovery过程
3. Group Formation过程
1. WiFi P2P 的工作原理
1. 设备发现:WiFi P2P设备会定期广播自己的存在信息,并监听其他设备的广播,以发现可连接的设备。
2. 服务发现:在设备发现的基础上,WiFi P2P还支持服务发现,设备可以查询和提供特定的服务,如文件共享、媒体播放等。
3. 连接建立:一旦发现目标设备,用户可以发起连接请求。连接建立后,两个设备之间会建立一个P2P组(P2P Group),其中一个设备会成为组所有者(Group Owner),相当于小型的WiFi接入点。
4. 数据传输:连接建立后,设备之间可以进行高速的数据传输,利用WiFi的高带宽优势。
2. WiFi P2P discovery阶段
2.1 介绍
P2P discovery阶段让P2P设备快速查找周围的其他P2P设备,并建立连接。P2P discovery主要由以下几个部分组成:
- Device Discovery: 让两个设备到达相同的信道并交换彼此的设备信息(例如设备名称和设备类型)。在P2P协议规范中,Device Discovery在1,6,11信道进行。
- Service Discovery:是一个可选特性,允许P2P设备在形成连接之前发现可用的上层服务
- Group Formation:用于确定哪台设备时GO,并形成一个新的P2P Group。
- P2P Invitation:用于调用一个存在P2P Group或者邀请一个P2P设备加入这个Group。
2.2 Device Discovery过程
基本原理:P2P设备进行主动扫描从而发现附近的其他设备,设备使用probe request和probe response帧去发现彼此。P2P Group形成之后,GO会发送beacon帧去发现设备。
P2P Device不会回复probe request帧,除非它是GO或者处于Listen State。
P2P Device不会发送beacon帧,除非它是GO。
设备发现流程利用了IEEE 802.11标准中的Probe Request和Probe Response帧来搜索周围的P2P设备,并且要求Probe Request帧中的数据必须包含P2P IE信息,否则不会响应。
下面这张图展示了Discovery的过程:
Scan阶段:扫描阶段使用IEEE Std 802.11-2012中定义的扫描过程。P2P设备可以在这个阶段查找其他的P2P设备或者P2P Group,并选择最佳的信道去建立P2P Group。在Scan阶段,设备扫描自己支持的所有信道(可以是Channel 1,6,11,也可以是全新到扫描)去寻找周围的其他设备。在Scan阶段的P2P设备不会回复Probe Request帧。
Listen状态:不属于P2P Group中的设备如果处于Listen状态可以被其他的设备发现。Listen状态会给定一个信道,叫Listen Channel监听信道。这是从Social Channels中选择的一个信道,2.4GHz频段中Channel 1,6,11被作为Social Channels。
Listen Channel应在设备Discovery之初选择,并应保持不变,直到P2P Discovery阶段完成。
处于Listen状态的P2P设备只能对Probe Request探测请求帧进行应答,探测请求帧包含P2P IE、P2P通配符SSID元素、一个通配符BSSID和一个目的地址(广播地址或其P2P设备地址)。
每个P2P 设备都会选择一个随机数,随机数的上限和下限分别是maxDiscoverableInterval和minDiscoverableInterval,默认情况分别为3和1。如果随机数为1,那么设备会处于Listen状态的时间为100TU,如果随机数为3,那么设备处于Listen状态的时间为3*100TU。随机数的机制主要是为了避免两个设备Listen和Search的时间同步,导致互相搜索不到彼此。
Search状态:P2P device会在social channel上发送一个或多个Probe Request帧。这些Probe Request帧包含以下信息。
- P2P IE
- WSC IE,以及Device Name,Primary Device Type和Device Password ID等。
- SSID,用来设置P2P Wildcard SSID
- BSSID,用来设置Wildcard BSSID
总结:
一个P2P device处于Scan阶段,它有可能会发现另外一个处于Search状态 Listen状态的P2P device。Find阶段主要用于保证两个P2P device能够处于相同的channel相互发现,并交换设备信息。一个P2P device进行connect可能会出现下面三种情况:
- 进行Group Owner Negotiation,从而建立一个新的P2P Group
- 发送P2P Invitation Request frame去调用一个先前建立好的Persistent P2P Group
- 发送P2P Invitation Request frame以请求目标P2P Device加入已经建立好的P2P Group。
2.3 Service Discovery过程
服务发现流程可在设备成功发现后的任何时间被执行,例如在成功发现设备后且在组形成之前。服务发现流程利用的是 Generic Advertisement Service(GAS)帧,类似与Probe Request和Probe Response帧,它也是IEEE 802.11定义的。这个协议具有很高的扩展性和灵活性,可发现不同的高层服务协议类型,比如Bonjour和UPnP协议。
3. Group Formation过程
这里主要有三种方式可以进行Group Formation。它们分别是:
- P2P Negotiation Method (Standard Method)
- P2P Autonomous Group Formation.
- P2P Persistent Group Formation.
P2P Negotiation Method (Standard Method)包含以下阶段
- P2P Device discovery,P2P Device的discovery阶段。
- Optional Service Discovery,可选的Service discovery阶段。
- Group Owner Negotiation,GO协商阶段。
- Phase1 and Phase 2 of WPS Provisioning,WPS配置阶段。