基本功能与服务

  1. P2P设备不能使用11b的速率传输数据和管理帧,除非
    Probe Request帧要同时发送给P2P设备和非P2P设备
  2. P2P设备不能响应显示只支持11b速率的Probe Request帧

P2P设备应该支持如下一些操作:

  1. P2P Discovery
  2. P2P Group Operation
  3. P2P Power Management 省电相关
  4. Managed P2P Device Operation 在IT部门限制下使用P2P功能

P2P设备寻址

每个P2P设备都有一个P2P设备地址,用于唯一引用该设备。在P2P发现阶段,设备地址都是作为帧的发送地址和接收地址。当一个P2P设备处于一个P2P组中时,要么是GO或GC。GO和GC之间使用接口地址进行数据通信,接口地址不是全局的。

主要功能描述及过程

1. P2P discovery

主要包含如下几个主要部分:

过程 描述
Device Discovery 两个P2P设备在同一个信道上交换信息
Service Discovery 一个可选的Feature,允许在建立P2P连接前,发现可用的更高层服务
Group Formation 确认P2P设备当作GO还是GC
P2P Invitation 触发一个Persistent P2P组,或者邀请一个P2P设备加入一个存在的P2P组中。

2. Device Discovery Procedure

基本机制

Device Discovery使用Probe Request和Probe Response帧来交换设备信息。除了如下情况,一个P2P设备不应该响应Probe Reqeust帧:
1. 它是一个GO
2. 它处于Listen状态
3. 它与AP关联, 并在Probe Request帧发送的信道上在与AP进行数据通信,如果它此时还不是一个P2P组成员,则可以响应Probe Request帧。
只有GO才能传输Beacon帧。

Listen State
P2P设备在指定的社会信道(2.4G中的1,6,11信道)上监听Probe Request帧。A P2P Device should be available in the Listen State for at least a contiguous period of 500ms every 5s in order to enable other P2P Devices to discover it.

Scan Phase
1. The P2P Device in the Scan Phase shall not reply to Probe Request frames.
2. 一个P2P设备可以描述特定类型的设备或某个P2P设备。

Find Phase
在此阶段,一个P2P设备交替地在Listen和Search两种状态之间切换。
A P2P Device in the Search State shall not reply to Probe Request frames.
发现处于一个P2P组中的设备
要发现一个P2P组中的设备,必须通过GO。
如果一个设备想加入一个P2P组,则需要
1. 获得GO的允许
2. 如果P2P被provisioned,则连接到P2P组。
如果一个P2P设备想邀请另一个P2P设备组成一个新的组,则可以执行如下 的一些操作
1. 发送一个P2P Invitation Request邀请对方加入。
2. 发送一个P2P Invitation Request调用一个之前建立过的P2P组,其中双方都曾经是这个组的成员,且其中之一是GO。
3. 初始化GO协商,建立一个全新的P2P组。

两个处于Discovery中的P2P设备
在Scan阶段的P2P设备可以发现处于Listen状态的另一个P2P设备,如果要建立连接,则可以
1. 初始化GO协商以便建立一个新的P2P组。
2. 发送一个P2P Invitation Request帧,调用之前建立过的一个P2P持久组,其中一个设备是组的GO。
3. 发送一个P2P Invitation Request帧请求另一个P2P设备加入当前设备处于的P2P组中,该设备是GO或GC。

针对GO的设备发现过程
已经作为GO的P2P设备会在Operating Channel等待其他设备发现它。GO也可能在其他信道上搜索想要通信的设备或服务。如果P2P GO离开了Operating Channel,则需要使用Notice of Absence机制通知其他设备。

P2P GO发现Legacy Client
Legacy Client只能发现P2P GO。当GO接收到Legacy Client发过来的Probe Request帧时,P2P 设备会传输一个Probe Response帧。Legacy Client可能使用收集的信息初始化一个WSC(Wi-Fi Simple Configuration)用于连接上这个P2P设备。不支持WSC的Legacy Client必须使用其他方法被provisioned,P2P GO应该产生用于Provisioning的Credentials。

P2P设备发现与AP关联的一个P2P设备
过程类似,与AP关联的P2P设备也需要进入Listen状态,以便于被其他设备发现。

3 Service Discovery procedures

optional

4. Group Formation procedure

完成Group Formation不能超过15秒。

4.1. GO Negotiation.
包含一个三路握手过程,用于协商谁是GO以及P2P组的一些特征。

Created with Raphaël 2.1.2P2P_Device1P2P_Device1P2P_Device2P2P_Device2GO Negotiation RequestGO Negotiation ResponseGO Negotiation Confirmation

这三路握手过程主要主要交换如下一些信息:
1. Group Owner Intent Value
2. Acceptable Operating Channel the Group may use
3. Credentials for the P2P Group
4. Group Duration: Temporary or Persistent
5. Group support for other devices and optional capabilities

当一个P2P设备发现GO Negotiation Request后,100m内没有接收到确认帧,则认为此次协商失败。GO Negotiation的一个主要目的就是交换GO Intent属性,以决定谁当GO。如果一个P2P设备只能当GO,则其GO Intent值必须设置为15。
第一个GO Negotiation Request帧的Tie Breaker位会被随机设置为0或1。在接下来的GO Negotiation Request帧中(该位会被置反,重传除外)。GO Negotiation Response帧的Tie breaker位将会根据相应的GO Negotiation Request帧的相应位置反。

4.2. Provisioning
To allow for P2P Device configuration, P2P Devices may delay starting the Provisioning phase until the expiration of the maximum of the P2P Group Owners GO Configuration Time and the P2P Clients Client Configuration Time from the respective Configuration Timeout attributes exchanged during Group Owner Negotiation.
The P2P client should connect to GO to obtain Credentials. They use WiFi Simple Configuration to exchange credentials. P2P Group session is established using appropriate credentials.

5. P2P Invitation procedure

此过程发生在如下一些情况:
1. GO邀请一个P2P设备成为GC。
2. 一个P2P GC邀请另一个P2P设备加入GC所在的P2P组(可能需要P2P设备的一些服务)
3. 请求调用一个持久P2P组,这两个设备之前都被授权过,且其中一个设备是GO。

P2P组操作
P2P组中的GO相当于AP的角色,而GC则相当于STA角色。每个P2P组都有一个唯一ID。ID包含GO的P2P设备地址,以确保唯一性。加入P2P组的设备需要获得证书,证书要求如下:
1. 认证类型:WPA2-PSK
2. 加密类型:AES
3. 使用64个十六进制字符的网络键值类型
4. 每个组都有不同的SSID。

每个SSID都以DIRECT-开始,包含ASCII字符”xy”,以及一些随机的大小写及数字的组合。
开启和维护一个P2P组会话
P2P GO会拥有一个P2P接口地址,将作为P2P组会话期间的MAC地址和BSSID。GO会选择一个Operating信道,在该信道发送Probe Response以响应Probe Request,并不停发送Beacon帧以广播 TSF(时间同步),所需要的操作参数,支持的能力,成员以及组内可提供的服务。
连接到一个P2P组
一个P2P设备通过设备发现程序来发现一个GO或另一个P2P设备。在连接到P2P组前,P2P设备会赋予一个P2P接口地址。当一个P2P设备加入一个已经存在的P2P组时,且没有保存该组的证书,则需要发送一个Provision Discovery Request帧给GO来表明希望注册到P2P组中,这个帧的发送地址是GO的设备地址。GO收到这个帧后,就知道有设备想加入P2P组,会回一个Provision Discovery Response帧给对端以表明失败还是成功。如果100ms内对端没有收到响应,则会认为失败。当成功会,则会获取证书,进入认证过程。此时,观察p2p0的状态,有如下一些变化过程:
11878:D/wpa_supplicant( 798): p2p0: State: DISCONNECTED -> SCANNING
12122:D/wpa_supplicant( 798): p2p0: State: SCANNING -> ASSOCIATING
12219:D/wpa_supplicant( 798): p2p0: State: ASSOCIATING -> ASSOCIATED
12780:D/wpa_supplicant( 798): p2p0: State: ASSOCIATED -> DISCONNECTED
12802:D/wpa_supplicant( 798): p2p0: State: DISCONNECTED -> DISCONNECTED
12819:D/wpa_supplicant( 798): p2p0: State: DISCONNECTED -> SCANNING
13020:D/wpa_supplicant( 798): p2p0: State: SCANNING -> ASSOCIATING
13113:D/wpa_supplicant( 798): p2p0: State: ASSOCIATING -> ASSOCIATED
13175:D/wpa_supplicant( 798): p2p0: State: ASSOCIATED -> 4WAY_HANDSHAKE
13229:D/wpa_supplicant( 798): p2p0: State: 4WAY_HANDSHAKE -> 4WAY_HANDSHAKE
13242:D/wpa_supplicant( 798): p2p0: State: 4WAY_HANDSHAKE -> GROUP_HANDSHAKE
13263:D/wpa_supplicant( 798): p2p0: State: GROUP_HANDSHAKE -> COMPLETED
断开P2P连接
发送Disassociation帧

WiFi P2P协议学习相关推荐

  1. WiFi Direct即P2P协议学习笔记

    文章目录 前言 一.P2P的模型 1.1 P2P的组成 1.2 P2P的拓扑 1.3 P2P并发模式 1.4 功能和服务 1.4.1 基本功能和服务 1.4.2 P2P的特殊功能和服务 1.4.3 P ...

  2. Android Wifi P2P 入门

    学习资料: Demo 下载地址:https://github.com/mengzhinan/WiFi_P2P_test GoogleAndroid Doc:https://developer.andr ...

  3. android wifi p2p / wifi direct

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/h784707460/article/details/81502574 一. wifi P2P协议相关 ...

  4. 谈谈对WiFi P2P的理解

    谈谈对WiFi P2P的理解 概述 P2P架构简介 P2P Discovery介绍 Device Discovery 流程 Service Discovery Group Formation P2P ...

  5. 创建WIFI Direct APP : android.net.wifi.p2p+android.net.wifi.p2p.nsd + Wi-Fi peer-to-peer overview 翻译

    一 ) Provides classes to create peer-to-peer (P2P) connections with Wi-Fi Direct. 提供用于使用Wi-Fi Direct创 ...

  6. Wi-Fi Display协议介绍

    Wi-Fi Display协议介绍 Wi-Fi Display协议介绍 1.WFD架构 2.Source/Sink端 3.AV数据流模型 4.Session模型 5.WFD连接拓扑结构 5.1 WiF ...

  7. android wifi p2p框架,7.2.1 P2P架构

    P2P架构中定义了三个组件,笔者将其称之为一个设备,两种角色.这三个组件分别是: * P2P Device:它是P2P架构中角色的实体,读者可把它当做一个Wi-Fi设备. * P2P Group Ow ...

  8. 深入理解Wi-Fi P2P

    第7章 深入理解Wi-Fi P2P 本章所涉及的源代码文件名及位置 ·W ifiP2pSettings.java packages/ apps/ Settings/ src/ com/ android ...

  9. 网络协议丨FTP协议和P2P协议

    现在不管是下载文件还是浏览内容,我们都是使用HTTP协议. 但是除了HTTP协议以外,也存在其他的协议. 比如文件下载,就有FTP协议,也就是文件传输协议.FTP 采用两个 TCP 连接来传输一个文件 ...

最新文章

  1. Windows自带certutil工具校验用法
  2. Luogu1574 超级数
  3. android 弹窗时间,Android使用WheelView自定义时间选择器弹窗
  4. 极光推送经验之谈-Java后台服务器实现极光推送的两种实现方式
  5. 命令点无效怎么处理_CAD执行修改命令,你试过重复选择对象吗?
  6. [html] 如何给页面添加追加右键菜单(原右键菜单功能保持不变)
  7. centos 6 安装zabbix 3.0
  8. mysql中字符串拼接函数_MySQL字符串连接函数
  9. AutoCompleteTextView 和 TextWatcher 详解
  10. Django关联数据库时报错TypeError: __init__() missing 1 required positional argument: 'on_delete'...
  11. jasperReport - 多Table的PDF中文导出
  12. 算法,PHP取数据库中百万条数据中随机20条记录
  13. define宏定义和const常量定义之间的区别
  14. 新能源汽车防撞预警系统FCW系统介绍
  15. android 玩pc游戏,如何在您的Android设备上玩经典PC游戏 | MOS86
  16. 渗透测试学习 二、Windows基础
  17. 美联航客机逃生门故障致乘客机舱过夜 承诺将赔偿
  18. 爬虫之 静态页面和动态页面
  19. 神经网络中的线性和非线性---学习笔记
  20. python语句的执行结果是_以下是 print( \nPython)语句运行结果的是().

热门文章

  1. 0x774B9E37 (KernelBase.dll)处(位于 LogonServer.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突解决
  2. 配置通过SSH登录设备
  3. mingw+cmake编译Assimp库遇到undefine问题
  4. MYSQL 查询重复数据
  5. 多个优秀的OCR算法解读
  6. 计算机考研自命题院校双非,双非三跨心理学:最难不是复习,而是前期抉择(跨考必看!!)...
  7. DeepDecision: A Mobile Deep Learning Framework for Edge Video Analytics
  8. [网络安全学习篇19]:NAT、动态路由及实验(千峰网络安全视频笔记 19 day)
  9. Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)
  10. centos上面谷歌浏览器安装