WiFi Direct 的协议是Wi-Fi联盟发展、支持与授予认证的一套软件协议,也被称为Wi-Fi点对点(Wi-Fi Peer-to-Peer,简称P2P)。
这套协议允许无线网络中的设备无需通过无线路由器即可相互连接,以点对点的方式直接与另一个 WiFi 设备连线,进行数据高速传输。
协议基础
-
架构基础:Wifi direct 架构再原有的 802.11a、802.11g、802.11n之上,但不支持 802.11b
-
支持模式:支持一对一以及一对多模式,理论上,只要支持 802.11g、n或者ac的设备都可以通过软件升级实现 WiFi direct 的基本功能。
功能与特性
-
连接方式:允许 WiFi 设备直接连接,无需通过 AP,从而简化连接流程,提高了数据传输的便捷性
-
传输性能:在传输速度与传输距离方面比蓝牙有大幅度提升,最大传输距离可达 200 米,最大传输速度为 250Mbps
-
加密机制:支持 WPA2 加密机制,确保数据传输的安全性
实现方式
-
软件实现:Wi-Fi Direct主要通过软件协议实现,不需要额外的硬件支持。但一些高级功能可能需要精细的定时管理和状态切换,这些可能会依赖于硬件的优化。
-
设备发现与连接:设备发现过程包括scan和find两个阶段,通过这两个阶段,设备能够找到并连接到其他支持Wi-Fi Direct的设备。连接过程中,设备会协商各自的角色(如GO和GC),并完成认证和密钥协商等步骤。
协商过程,GO怎么选出来的
Go Intent
GO Intent 是一个 0-15 的整数值,它代表了设备希望成为 GO 的医院强度。值越大,表示设备越希望成为 GO
协商过程
- 发送 GO req:
-
当设备 A 想要与另一个设备 B 建立 WIFI Direct 连接时,它会首先发送一个 GO Req 帧中给设备B
-
GO Req 帧中包含了设备 A 的 GO Intent 值
- 接收并响应 GO Req
-
设备B接收到GO Req帧后,会读取其中的GO Intent值,并生成自己的GO Resp帧进行响应
-
GO Resp帧中也包含了设备B的GO Intent值。
- 比较 GO Intent:
-
在双方都发送了GO Intent值之后,它们会根据以下规则来比较并确定GO的角色:
- 如果两个设备的GO Intent值不相等,那么值较大的设备将成为GO,值较小的设备成为Group Client(GC)。
- 如果两个设备的GO Intent值相等且小于15,那么会进一步比较GO Req帧中的随机数Tie Breaker。如果Tie Breaker为1,则发送该GO Req的设备成为GO;否则,接收方成为GO。
- 如果两个设备的GO Intent值都等于15,且Tie Breaker也无法决定,那么GO协商将失败。这通常表示两个设备都坚持要成为GO,无法达成共识。
- 发送 GO confirm
-
一旦确定了GO和GC的角色,负责成为GO的设备会发送一个GO Confirm帧来确认协商结果。
-
收到GO Confirm帧后,GC会确认协商成功,并开始后续的连接和通信过程。
wifi direct 能否与热点共存?
共存的可能性
技术层面:从技术角度来看,Wi-Fi Direct和热点都使用Wi-Fi技术,但它们工作的模式和目的不同。因此,在理论上,它们可以在同一设备上共存。
设备实现:然而,是否能在同一设备上同时启用Wi-Fi Direct和热点,还取决于设备的硬件和软件实现。一些设备可能支持这种共存,而另一些则可能不支持。
操作系统版本:Android操作系统的不同版本可能对这两种功能的支持有所不同。因此,设备的操作系统版本也可能影响Wi-Fi Direct和热点的共存能力。