wifi 直连 wifi p2p

wifi direct 简介

2010年10月,Wi-Fi Alliance(wi-fi联盟)发布Wi-Fi Direct白皮书,白皮书中介绍了关于这种技术的基本信息、这种技术的特点和这种技术的功能,

Wi-Fi Direct标准是指允许无线网络中的设备无需通过无线路由器即可相互连接。

与蓝牙技术类似,这种标准允许无线设备以点对点形式互连,而且在传输速度与传输距离方面则比蓝牙有大幅提升。

安卓中 wifi direct 操作方式说明

在安卓4.0系统中已经有wifi direct的实现,在网上找了一些图,说明一下wifi direct的操作方式

1.首先看一下wifi direct功能的存在位置,见下图

2.如果打开了wifi ,wifi ap(热点功能),可能会看到下面的提示信息,见下图

(因为wifi direct 是作为wifi硬件设备的一种模式,暂时没发现几种模式共存的例子)

3.wifi direct 功能打开后,会看到附近的wifi direct设备,示例见下图

4.点击可用的网络,发起链接邀请,可以看到要链接的设备的硬件地址,设备名称,见下图

5.被链接的设备收到请求,弹出的确认链接选项,见下图

6.链接后状态查看,见下图

标准linux下解决方案说明

现在找到的解决方案是采用wpa_supplicant.

简单介绍一下wpa_supplicant,软件的目的是用来完成跟网络相关的wpa wpa2 验证,支持多种操作系统。

该软件实现了key的交换和认证,以及漫游、wlan驱动中IEEE 802.11认证/链接的控制

从使用角度来说,该软件分为两个部分,一个是wpa_supplicant daemon 程序,一个是控制程序(有图形和命令行两种)

wifi direct直连建立过程说明

采用设备说明

lenovo S10-3t

网卡支持情况判断方式说明

通过iw list 命令 查看 supported interface mode,

wifi direct 相关的模式为 P2P-CLIENT 以及 P2P-GO

(查看相关历史,可以看出 wif direct最初被称为 wifi p2p )

lenovo S10-3t 的内置无线网卡为Atheros AR9285,通过查询得知该网卡为最早通过

wifi direct认证的五款网卡之一,通过iw list 命令也可以看到其支持 上述wifi direct相关模式

wpa_supplicant 相关说明说明

ubuntu 系统默认安装的0.73版本暂时不支持p2p 相关功能

android 采用的wpa_supplicant 采用的版本为0.8,在社区找到的最新稳定版本为1.1

该版本已经支持了相关功能,但需要添加编译选项,才能真正支持起来,需要添加的编译选项如下(可能有的已经有了,请检查是否都包含,nl80211为联系小本使用的设备驱动)

CONFIG_DRIVER_NL80211=y

CONFIG_CTRL_IFACE=y

CONFIG_WPS=y

CONFIG_WPS2=y

CONFIG_P2P=y

CONFIG_AP=y

支持过程说明

使用wpa_supplicant包中相关指令说明

wpa_supplicant

wpa_supplicant 的主程序

一般使用方式:wpa_supplicant -Dnl82011 -iwlan0 -c /etc/p2p.conf -ddt

说明:

-D 指定使用的driver

-i 指定使用的端口

-c 指定运行wpa_supplicant需要的配置文件

-ddt 输出log信息到当前终端

-B 指定wpa_supplicant以daemon的形式运行在后台

wpa_cli

wpa_cli 为端口控制程序,使用方式分为两种模式,一种为交换式,一种为命令行方式。

一般使用方式 : wpa_cli 进入交互式控制方式;wpa_cli [command ] 这样为命令行模式

说明:

交换模式常用的指令分析

p2p_find 发送探测数据帧,查找设备周边跑直连设备

p2p_peers 获取搜索到的设备的mac地址

p2p_connect 跟直连设备建立链接

p2p_group_add 添加一个p2p group

wps_pin 设置wps 校验方式为pin码方式

wps_pbc 设置wps 校验方式为pbc(push button control)方式

p2p_flush 清除发现的设备列表,以及p2p状态操作

命令行模式常用参数分析

-a 指定action脚本(接收到相应事件做出何种响应的一个脚本)

-B 作为daemon后台运行

此外,交换模式的指令可以直接放在命令行模式使用(但有些返回数据无法看到,因此在下面的操作步骤中选择交换模式)

操作流程

wpa_supplicant建立数据链路层链接相关操作流程见下图:

说明:

  1. 完成上述步骤之后,就已经建立起数据链路层的链接
  2. 在步骤6设置wps的验证方式时,也可以使用pbc 模式,方式如下

为使上层能够正常使用需要为端口设置IP,设置方式分为两种:

静态IP

两设备要设置为同一网段,示例如下

ifconfig wlan0 192.168.1.3 netmask 255.255.255.0

ifconfig wlan0 192.168.1.4 netmask 255.255.255.0

动态分配IP

为使设备成功分配IP,下面将要列出的步骤要在建立数据链路层的步骤7之前完成

(设备2 p2p_connect 操作之前)。

可以采用的方式有两种:

  • wpa_supplicant本身支持的方式 ,具体如下

在两设备上同时运行如下指令 wpa_cli -a p2p-action.sh -B

p2p-action.sh 为wpa_supplicant 的action脚本,该脚本位于源码包examples文件夹下

该脚本可以直接使用,也可以修改其内部动态分配相关内容以指定使用的网段和IP。

  • 手动搭建DHCP服务器,以及dhclient,具体方式如下

在设备1 端搭建DHCP 服务器,具体内容可以参考wifi热点中该部分的描述wifi 热点

在设备2端要建立client 使用的指令如下

sudo dhclient -pf /var/run/dhclient-wlan0.pid -lf /var/run/dhclient.leases-wlan0 -nw wlan0

遗留问题

1.wps的模式中,pbc模式不是很稳定

2.和其它设备(lenovo手机,三星手机)的数据交互仍存在问题

(可以成功建立链接,但无法传递数据)

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值