WIFI Direct/WIFI P2P

article/2025/10/21 9:09:30

技术交流有兴趣请加:
 音视频技术交流群:308601278
 无线投屏技术交流群:582349005
 
 本文可在找到相关详细内容 必捷网络|因必捷而简单
 商务合作请至邮件marketing@bijienetworks.com 

 

上节说过了网卡的选型,之所以网卡的选型如此重要,主要是因为Miracast网卡相比较于普通的网卡多了个P2P功能,底层可靠了,才能很好的进行接下来的上层开发,如果我们已经有了可靠的P2P网卡以及网卡驱动,那我们接下来就可以先进行P2P部分上层代码的开发啦。

1.P2P的模型

 

图1 p2p的基本模型

P2P Group Owner: 类似AP功能,控制Wi-Fi P2P组,能让支持P2P的设备连接上。
P2P Client:连接GO的设备。

 

2一对一时候的流程

  • scan阶段:两个设备均对外发送Probe Req请求帧,搜集周围所有设备或网络信息,但是设备不会响应Probe Req请求帧。
  • find阶段:主要把包括listen和search两种,listen的时候p2p设备选择一个随机的间隔(默认值分别是1和3次100TU)。p2p设备再用这个随机的间隔在social频段上监听。接收匹配参数的Probe Req,并发送一个Probe res。
  • search态的时候:搜索social频段,在social频段发送probe req信息,此信息包含要search的Requested设备类型,设备ID。
  • group formation阶段按:GO协商:p2p设备初始化group formation或者响应来自另一个p2p设备的go协商req,GO向GC发送beacon帧,authentication,association,以及WSC和4次握手。

 

 

图2 p2p一对一流程

 

 

 

两个P2P设备互相discover,最终频率锁定在ch6上,在device1的listen段进行group形成。

图2所示为两个P2P Device的Discovery流程,其中:

 

  • Discovery启动后,Device首先进入Scan Phase。在这一阶段,P2P设备在其支持的所有频段上都会发送Probe Request帧。
  • Scan Phase完成后,Device进入Find Phase。在这一阶段中,Device将在Listen和Search State中切换。根据前面的介绍,每一个设备的Listen Channel在Discovery开始前就已确定。中Device 1的Listen Channel是1,而Device 2的Listen Channel是6。
  • 在Find Phase中,P2P规范对Device处于Listen State的时间也有所规定,其时间是100TU的整数倍,倍数值是一个随机数,位于minDiscoverableInterval和maxDiscoverableInterval之间。这两个值默认为1和3,而厂商可以修改。选择随机倍数的原因是为了防止两个Device进入所谓的Lock-Step怪圈,即两个Device同时进入Listen State,等待相同的时间后又同时进入Search State。如此,双方都无法处理对方的Probe Request信息(Search State中,Device只发送Probe Request)。图中,Device 1第一次在Listen State中待了2个100TU,而第二次在Listen State中待了1个100TU。
  • 当Device处于Find Phase中的Search State时,它将在1,6,11频段上发送Probe Request帧。注意,只有当两个设备处于同一频段时,一方发送的帧才能被对方接收到。
  • GO协商
  • 发现对方后,下一步就点击进行连接,而连接的第一步就是确认各自的角色,谁做GO,谁做GC,WiFi direct通过增加ACTION帧的交互来达到此目的。

 

 

图3 WFD的GO协商过程

 

 

 

GO协商共包含三个类型的Action帧:GO Req、GO Resp、GO Confirm。GO Req和GO Resp包含GO Intent的IE,是一个0到15的整数值,通过这两个值的大小来确定GO,具体方法如下图。如果Intent不相等时,谁大谁做GO;如果相等时且小于15时,根据GO Req的随机数Tie Breaker来决定,Tie Break为1就自己做GO,否则对方做GO;如果相等且等于15,GO协商失败,这种情况说明A和B都必须成为GO,谁也不能妥协,那么只能以失败告终。

 

图4 GO的选择流程

事实上,一般情况下GO协商会有5个帧交互,P2P流程图已经清晰的展现出来了,一开始会让人比较迷惑,下面举例说明。假设有两个P2P设备A(Listen信道为1)和B(Listen信道为11),在A的P2P界面点击B进行连接,这时A首先会在11信道发送GO Req,发送需要持续一段时间,因为B可能会处于Search状态,所以持续的时间至少要大于B的Search时间;直到B切换为Listen状态,才能收到 GO Req,收到后立即在11信道回复GO Resp并给上层应用发送对应消息,应用提示用户是否同意A的连接。注意B刚刚回复的GO Resp包含的状态是fail:information is unavailable,A收到这个消息后不做任何动作,继续等待。直到用户点击B的同意后,B会再发起GO Req,由于A是连接发起方,他不用再去提醒用户同意,直接响应成功的GO Resp。最后B通过GO Confirm确认GO协商结束。


3.WPS流程
Wi-Fi Direct采用WPS PBC方式来协商密钥,我们知道当手机和AP进行WPS连接时,需要先按一下AP上的WPS按钮,再点击手机上的WPS按键,两者会自动建立连接。其实按AP的WPS按钮的作用是让他在后续两分钟的Beacon帧WPS IE里置上一个PBC标志,手机端WPS按键用于启动WPS连接流程,如果扫描到的Beacon帧有PBC标志就开始连接和WPS密钥协商。
Wi-Fi Direct省去了WPS按键流程,协商为GO的P2P设备转换为GO状态时自动在Beacon帧里增加PBC标志,GC也自动启动WPS连接流程。这里隐藏着一个问题,如果当前环境有AP刚好处于PBC状态或者当前有多组P2P设备在连接,那么很有可能GC扫描到的AP列表里有一个以上的AP包含PBC标志,引起PBC Overlap异常,导致P2P连接失败。这个问题概率很小,但使用WPS方式的设备都会存在,需要引起重视,当然P2P可以根据之前GO协商的MAC地址进行区分来避免。

 

4.4次握手
WPS流程只是协商出一个公共的Key,这个Key还不能用于数据加密。4次握手的作用是以公共Key为参数协商出PTK和GTK,之后进行加密数据传输。
P2P流程图连接流程执行了两个auth和associa,在WPS结束后GC发起的deauth没有在流程图表现出来。为什么不继续4次握手来减少交互次数呢,这样做的目的是最大程度的兼容原有的Wi-Fi连接流程,投入较少的改动来实现P2P功能。

 

5.一对多时候的流程
一对多流程与一对一部分的流程比较相似,不做过多介绍了。

 

对DLNA/Airplay/Miracast/Widi感兴趣的同学可进QQ群 582349005交流。

 

 


http://chatgpt.dhexx.cn/article/3HIrtBTi.shtml

相关文章

华为A1路由器设置虚拟服务器,华为a1路由器wifi定时加速功能的详细操作设置方法...

华为a1路由器怎么设置wifi定时加速功能呀。 很多新手不知道这款华为a1路由器不仅可以设置wifi限速,还能在“华为智能家居”APP上下载应用设置wifi按时加速,下面能哈小编将华为a1路由器wifi定时加速功能的详细操作设置方法分享一下,一起来看看…

全球WIFI功率(信号)最强的国家清单,无线WIFI调优

经常玩Merlin梅林或华硕路由器的朋友都知道,无线路由器有个国家地区选项,中文互联网中都在传说澳大利亚地区的无线信号最好,除了华硕这些全球品牌路由器厂商,还有网建Netgear、领势Linksys这些品牌也有调整路由器地区的功能&#…

提升Wi-Fi速率的方法有哪些

“ 上一篇文章以实例梳理和介绍了Wi-Fi的速率的情况,对比说明了真实速率和宣称速率的差别,这一篇文章将从技术的角度分析实际影响Wi-Fi传输速率的因素,以及对应的优化方法。” PHY(物理层)速率是一个理论极限速率&…

win10提高wifi速度

第一步:窗口键R打开 运行窗口 第二步:在窗口输入gpedit.msc ​ 如果没有打开,提示gpedit.msc找不到,按照以下做法;如果能打开直接继续第三步。 2.1:新建一个记事本, 2.2:然后在记事本…

vivo信号无服务器,vivo创新推出双WiFi网络加速功能,是否实用,聊胜于无!

原标题:vivo创新推出双WiFi网络加速功能,是否实用,聊胜于无! “极客谈科技”,全新视角、全新思路,伴你遨游神奇的科技世界。 近期,vivo公布了一项较为特殊的技术,双WiFi网络加速功能…

Badboy下载安装超详细教程

一、下载安装包 Badboy安装包已经上传到百度云,有需要的同学可以关注微信公众号获取百度云密码,自行下载。 微信搜索公众号名称“那些美好深埋于心”或扫描文章结尾处二维码即可关注。 回复“Badboy”即可获得资源链接及密码。 二、Badboy安装 1.双…

BadBoy下载安装

1、简介 BadBoy是一款免费WEB自动化测试工具,其实就是一个浏览器模拟工具,具有录制和回放功能,支持对录制出来的脚本进行调试。同时支持捕获表单数据的功能,所以能够进行自动化测试。但目前用的多的是用来进行脚本录制&#xff0…

badboy无法录制 浏览器版本过低请下载最新的Badboy

badboy无法录制 浏览器版本过低请下载最新的Badboy 要参加软件测试大赛,性能测试需要badboy录制脚本。结果打开网页说我浏览器版本过低请下载最新的Chrome。我:???我默认浏览器可是Chrome啊怎么可能低。去网上查了下&a…

Jmeter+badboy自动化测试——Badboy基础操作

上接“Jmeterbadboy自动化测试——环境准备” 1. 启动 开Badboy,页面如下,录制按钮默认为开启,此时把badboy当做浏览器,进行的各种操作都会被badboy记录下载。 2. 记录 举个栗子,我在导航栏输入www.baidu.com&…

Badboy测试工具的使用教程

参考链接:https://blog.csdn.net/qq_28582847/article/details/80742054 https://www.cnblogs.com/UncleYong/p/10742653.html#_label0 https://blog.csdn.net/gantao754246624/article/details/79080025 Badboy工具介绍 Badboy是一个强大的工具,被设计…

Badboy

badboy 文章目录 badboy一、Badboy是什么二、Badboy能做什么三、Badboy怎么用(1)安装badboy(2)录制脚本(3)导出脚本(4)设置检查点(5)设置参数化-文本 报告 提…

测试入门-badboy(1)

刚刚学习测试没有多久,因为工作需要接触学习badboy。那就一起聊聊badboy! PS:此文作为学习笔记,有许多不严谨,还能包涵。 一、下载安装 1.官网地址:http://www.badboy.com.au/ 2.点击download 3.点击安装 二、界面及功能 1)菜单栏 1、file:新建、打开、保存…

badboy使用手册

badboy使用手册 Bbadboy作用很多,但是大部分是作为脚本录制工具来使用。 本篇中为模拟浏览器操作,记录操作脚本。badboy具有录制和回放的功能,能够添加断言,对脚本进行调试。 在使用jmeter自动录制脚本时会产生很多无用的请求&…

安装Badboy

一、安装badboy 找到对应的安装包,直接安装即可没有什么难度。注意:安装的路径不要有中文不要有空格 二、页面信息 左边一栏显示的就是访问的信息 ​​​​​​​ ​​​​​​​ ​​​​​​​ 在右边的操作在右边都会进行一个…

jmeter 录制回放工具badboy 下载安装步骤

1.badboy 下载安装 下载路径:http://www.badboy.com.au/ 下载详解: (1) (2) (3) 2.badboy 安装 双击打开下载 的 badboy.exe (1) (2&#x…

badboy使用简介

本篇中为模拟浏览器操作,记录操作脚本。badboy具有录制和回放的功能,能够添加断言,对脚本进行调试。 在使用jmeter自动录制脚本时会产生很多无用的请求,所以推荐使用badboy录制脚本之后保存为jmx文件,在jmeter中打开使…

Badboy安装教程(含下载地址)

性能测试过程中发现很多业务场景用Loadrunner测非常复杂,用JMeter测试比较容易实现。JMeter测试时简单的页面请求可以自己设置脚本,但对于复杂的业务自己编写脚本失败率很高,所以研究了一下可以专门录制测试脚本的工具--Badboy,Ba…

BadBoy安装与使用

文章目录 Badboy介绍安装badboy脚本软件开启badboy软件badboy脚本录制添加验证点将检查点设置参数化badboy参数化导出Jmeter脚本验证测试Jmeter导入badboy生成的脚本生成后运行badboy测试报告Badboy介绍 Badboy是 Badboy Software创建的免费且 功能强大的 Web 开发应用程序。 它…

badbody下_BadboyInstaller下载-录制脚本工具Badboy下载2.2.5 官方最新版-西西软件下载...

Badboy是专门录制测试脚本的工具,Badboy录制脚本的方法比较方便易懂,Badboy-2.2.5是最新版可以配合Jmeter使用,快速录制脚本且可以保存为JMeter支持的脚本。badboy测试工具是一个强大WEB测试工具,badboy测试工具通过协议包进行数据…

badboy linux 版本,jmeter/Badboy安装教程

1. 安装jmeter: 官网下载:http://jmeter.apache.org/download_jmeter.cgi 网盘下载:https://pan.baidu.com/s/1ZbsYER_gAcj1h60fGRpgdw windows的下.zip linux的下.tgz 下载完成后解压, 别急着打开 2. 配置JDK.这里下的12版本 官网下载: https://www.oracle.com/technetwor…