目录
1.P2P架构
2.P2P Discovery简述
3.P2P Discovery流程
什么是P2P?
P2P全称P2P网贷,是个人对个人的意思,是互联网金融的一种,P2P就是利用互联网平台,把一部分人的小额闲散资金,直接出借给急需要用钱的个人。。。
咦?好像跑偏了~
WIFI P2P是有Wi-FI联盟推出的一项技术规范,该规范可以允许WiFi设备在没有AP的情况下实现连接。该项技术可以实现视频数据的传输,例如Miracast技术就是基于P2P实现的。
P2P架构中定义了三个组件,分别为:
P2P Device:它是一个实体角色,可以把它认为成一个WIFI设备。
P2P Group Owner:Group Owner简称GO,是一个虚拟角色(会实际对应某个P2P Device),它类似于Infrastructure BSS中的AP。
P2P Client:与GO相对的一种虚拟角色,它类似于Infrastructure BSS中的STA。
P2P设备之间通过P2P协商后,可以协商出某个设备为GO,另外一个设备为GC。
一个常见的P2P Group拓扑结构如下图:
和一个Infrastructure BSS类似,一个P2P Group中只能有一个GO。一个GO可以支持1个或多个(即图中的1:n)Clients连接。
由于GO的功能类似于AP,所以周围那些不支持P2P功能的STA也能发现并关联到GO。这些STA被称之为Legacy Clients。
P2P Discovery是实现多个P2P Device能够相互发现并构建一个Group。根据P2P规范,它包含如下四个主要技术项:
Device Discovery:用于P2P设备发现周围的其他P2P设备。
Service Discovery:该技术项是可选的,是建立在Device Discovery的基础上的,用于搜索指定的服务。
Group Formation:用于协商出两个P2P Device谁来做GO,谁来做GC。
P2P Invitation:用于激活一个Persistent Group,或者用于邀请一个Device加入到当前的Group。
P2P Device Discovery利用Probe Request和Probe Respone帧来搜索周围的P2P设备。
Device Discovery定义了两个阶段和两个状态。
两个阶段分别为:
Scan Phase:扫描阶段。在该阶段,P2P Device会在各个频段上发送Probe Request帧(主动扫描)。P2P Device在这一阶段中不会处理来自其他设备的Probe Request帧。这一阶段过后,P2P Device将进入下一个阶段,即Find Phase。
Find Phase:在这一阶段中,P2P Device将在Search State和Listen State之间来回切换。Search State中,P2P Device将发送Probe Request帧,而Listen State中,它将接收其他设备的Probe Request帧并回复Probe Response帧。
两个状态分别为:
Search State:在此状态下,P2P Device将在2.4GHZ的1/6/11频段上分别发送Probe Request帧。为了与非P2P的Probe Requst帧进行区分,P2P的Probe Request帧中会包含P2P IE。
Listen State:在该状态下,P2P Device将随机选择在1/6/11频段中的一个频段来监听Probe Request帧并回复Probe Request帧。选定的频段被称为Listen Channel,在整个Discovery阶段都不会更改。
下图是一个P2P Device Discovery的流程示意图,我们以该图为例再来看一下流程。
(1)Discovery流程启动后,设备先进入Scan Phase阶段,在该阶段,P2P设备在其所支持的频段上发送Probe Request帧。
(2)Scan阶段完成后,Device进入Find Phase,在该阶段中,设备将在Listen和Search阶段之间进行切换。每个设备的Listen Channel在Discovery阶段是固定不变,例如本例,Device 1的Listen Channel为1,Device 2的Listen Channel是6。
处于Listen State的时间是不固定的,但是需要满足100TU的整数倍,这样做个目的是为了防止设备进入所谓的Lock-Step怪圈,即避免两个设备同时进入Listen State,等待相同的时间后又同时进入Search State。例如本例中,Device 1在Listen State阶段待了1个100TU,Device 2待在Listen State阶段待了3个100TU。
(3)P2P Device 1在进入Search时,先在ch1上发送Probe Request包,而此时的P2P Device 2虽然恰好进入了Listen State,但是其在ch1上接收数据包,所以设备之间无法进行互发现。
(4)而当Device 1在ch6上发送Probe Request包时,P2P Device 2可能会接收到该包,接收到了就知道了周围存在一个Device 1,然后就可以在ch6回复一个Probe Request,设备P2P Device 1接收到了Response包后就知道了Device 2的存在了。
持续关注本博客内容,请微信关注个人公众号:万物互联技术~