WIFI p2p连接总结

p2p 设备角色

go 为 group owner,类似 ap 的功能,控制 p2p 组,每个 group 只有一个 go

gc 是 client,为连接 go 的设备,是组成员

P2P 扫描

p2p discovery 利用 probe request 和 probe response 帧来搜索周围的 p2p 设备,probe request 必须包含 p2p 的 ie。

device discovery 定义了两个阶段和两个状态

1.Scan Phase:扫描阶段,P2P device 会在各个频段发送 probe request(主动扫描),p2p device 在进行该扫描的时候不会处理来自其他设备的 probe request 帧,这一阶段后,p2p device 会进入 下一阶段(Find Phase)

2.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 request 进行区分,p2p 的 probe request 帧会包含 p2p 的 ie,表示这是一个 p2p 的探测帧

listen state:p2p device 将随机选择在 1/6/11 频段中的一个频段来监听 probe request 帧,选定的信道成为 listen channel,整个 discovery 阶段都不会更改,listen 状态的持续时间 是 100TU 的随机整数倍(默认在 1 到 3 之间,厂商可以修改),随机是为了避免两个设备同时进入 listen 和 search 导致始终无法发现对方

Group Formation

设备发现后就可以进行 组协商了,主要作用是决定哪个设备当 GO,整个协商过程包括三次握手

Group Owner Intent 属性(成为 go 的渴望程度,最大值 为 15,15 表示该设备一定要成为 go)大的一方会成为 go,若相等的话,tie breaker bit 是 1 的成为 GO,若都是 15 则协商失败

第一次握手:设备 A 向设备 B 发送 GO Negotiation Request(包含了 Intent 属性值和 breaker 属性值),B 在收到后进行比较,此时 B 可以确定自己本次 P2P 连接时的角色了

第二次握手:设备 B 向 A 发送一个 GO Negotiation Response 帧,该帧包含了 B 的 Intent 属性值和 breaker 属性值,B 的 breaker 属性值为第一次握手时 A 的 breaker 属性值取反,因此不可能相同

第三次握手:设备 A 向 B 发送一个 GO Negotiation Comfirmation 帧,该 Confirmation 的作用之一时作为协商的确认,同时确定了后面 P2P 连接所使用的信道

在 Go 协商时设备 A 向设备 B 发送 GO Negotiation Request,如果 B 没有准备好的话,这时候 B 会先保存下 A 的协商信息,然后发送一个 GO Negotiation Response (包含 B 的协商信息)给 A,B 把状态设置为 P2P_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE,表示当前 P2P 连接不可用,A 在收到该 response 之后,保存 B 的协商信息,切换到 Listen state,等待 B 的 P2P 连接初始化完成,并等待 B 发送GO Negotiation Request,这种情况下第一次协商没有确定任何东西,第二次协商才是正常流程

wps 流程

协商一个公共的 key,wps 流程结束后 ,gc 会自动断开和 go 的关联,然后重新发起连接,再次关联完成后可以进行四路握手

四路握手

以前面的公共 key 作为参数协商处 PTK 和 GTK,之后进行加密数据传输

相关推荐
厦门辰迈智慧科技有限公司4 小时前
排水管网实时监测筑牢城市安全防线
网络·物联网·安全·自动化·监测
aiprtem6 小时前
LVGL + ESP-Brookesia 嵌入式模拟桌面应用开发
linux·c语言·物联网
爱吃小白兔的猫6 小时前
【基础篇三】WebSocket:实时通信的革命
网络·websocket·网络协议
老六ip加速器7 小时前
如何给电脑换个ip地址?电脑换ip几种方法
网络协议·tcp/ip·电脑
云畅新视界7 小时前
HOTDOG构建“IP×用户”共创生态,激活数字文化新势能
网络·网络协议·tcp/ip
深蓝海拓7 小时前
通信名词解释:I2C、USART、SPI、RS232、RS485、CAN、TCP/IP、SOCKET、modbus等
网络·网络协议·tcp/ip
wxy8888888 小时前
CIU32L051 DMA+Lwrb环形队列实现串口无阻塞性数据的收发 + 数据百分百不丢失的实现
驱动开发
未来之窗软件服务11 小时前
【智慧物联网平台】安装部署教程——仙盟创梦IDE
ide·物联网·仙盟创梦ide·东方仙盟
乌恩大侠11 小时前
卫星物联网:使用兼容 Arduino 的全新 Iridium Certus 9704 开发套件深入探索
单片机·嵌入式硬件·物联网
qq_3395548211 小时前
SD卡简介与驱动开发
驱动开发