zoukankan      html  css  js  c++  java
  • WIFI P2P GO与Clien的协商流程

    详见: P2P GO Client角色的协商

    示例环境:两个P2P device,一个作为Group owner(arm 板子), 一个作为p2p client(小米9),以pbc方式连接

      

    小结:

    1. p2p建立连接的过程中,有两个设备: P2P连接发起端/P2P连接接受端

        双方通过协商来确定谁是Go,谁是Client

        协商过程类似于三次握手,在双方都初始化好P2P后,读取对方的协商信息,来确定自己的角色。

        在P2P GO/Client协商完成后,作为GO角色的设备后面就把自己切换到AP模式,而作为Client角色的设备就去连接GO的AP。

    2. 在P2P连接接受端,当上层确认允许P2P连接时,会执行p2p_connect,此时会创建实际的P2P连接网口p2p-wlan0-x

    3. 不同的商家实现P2P wlan口的方式不一样,其中p2p-dev-wlan0为虚拟的网口,在P2P扫描,协商阶段都是使用该网口。

        在p2p_group_add创建组后,会创建p2p-wlan0-0,他才是内核实际注册网口,实际上P2P连接就是p2p-wlan0-0。

    4. 已保存群组时的协商

       在P2P连接完成后,若P2P连接断开后,再发起P2P连接,并不一定都需要P2P GO/Client的协商过程,这依赖双方是否都保存有P2P连接信息。

        作为GO时保存的信息如下:  p2p_supplicant.conf中网络节点内容

     1 network={
     2 ssid=”DIRECT-ZT-Android_7ab3”
     3 bssid=6e:fa:a7:dc:14:d6
     4 psk=”zT32EqmT”
     5 proto=RSN
     6 key_mgmt=WPA-PSK
     7 pairwise=CCMP
     8 auth_alg=OPEN
     9 mode=3
    10 disabled=2
    11 p2p_client_list=96:bd:db:15:b9:38
    12 }
    13 //ssid:GO的名称;
    14 //bssid:GO自己的mac地址;
    15 //psk:GO的密码;
    16 //p2p_client_list:所连接的Client的mac地址;

    作为Client时保存的信息如下:

     1 network={
     2 ssid=”DIRECT-H0-Android_dd11”
     3 bssid=96:bd:db:15:b9:38
     4 psk=03e45fa923d8fbaf
     5 proto=RSN
     6 key_mgmt=WPA-PSK
     7 pairwise=CCMP
     8 auth_alg=OPEN
     9 disabled=2
    10 }
    11 //ssid:所连接GO的名称;
    12 //bssid:所连接GO的mac地址;
    13 //psk:所连接GO的密码,已加密;

       Intent:作为GO的优先级

  • 相关阅读:
    P5136 sequence(矩阵快速幂)
    P5135 painting(组合数)
    CF888E Maximum Subsequence(meet in the middle)
    P4463 [国家集训队] calc(拉格朗日插值)
    CF364D Ghd(随机化)
    P3270 [JLOI2016]成绩比较(拉格朗日插值)
    bzoj3453: tyvj 1858 XLkxc(拉格朗日插值)
    P4593 [TJOI2018]教科书般的亵渎(拉格朗日插值)
    tomcat8版本实现虚拟主机
    NFS网络文件系统方案
  • 原文地址:https://www.cnblogs.com/y4247464/p/14116534.html
Copyright © 2011-2022 走看看