设备应用跨平台点对点P2P连接传输通讯技术调研
- 发表于
- 网络安全
钻研背景
- 多个设施/备连贯同一局域网不同频率的网络后,两端可能呈现不能失常通信的问题。
- 如果通过Socket进行本地局域网通信,不在一个网络会呈现找不到设施IP,无奈连贯的问题,外网走服务器会呈现提早、数据同步不精确的问题。
- 在混合网络场景中,在连贯AP时,既能同时在两端点对点通信,并且两端也能别离进行外网拜访。
- 新技术方向必要条件:须要同时反对Android和iOS两端或更多跨平台电视TV、手环、感温器、基站、macOS、WINDOWS、Linux、WEB等实现。
现状
- iOS:在iOS7中,引入了一个全新的框架——Multipeer Connectivity(多点连接)。利用Multipeer Connectivity框架,即使在没有连接到WiFi(WLAN)或移动网络(xG)的情况下,距离较近的Apple设备(iMac/iPad/iPhone)之间可基于蓝牙和WiFi(P2P WiFi)技术进行发现和连接实现近场通信。
- Android:Wi-Fi peer-to-peer(P2P,对等网络),它允许具备相应硬件的Android 4.0(API level 14)或者更高版本的设备可以直接通过wifi而不需要其它中间中转节点就能直接通信(Android的Wi-Fi P2P框架符合Wi-Fi联盟的Wi-Fi Direct™直连认证标志)。使用这些API,你可以搜索并连接其它同样支持Wi-Fi P2P的设备,然后再通过一个高速的连接进行互相通信,并且这个连接的有效距离要比蓝牙连接的有效距离要长的多。这对于需要在用户之间共享数据的应用程序非常有用,例如多玩家游戏或者照片分享之类应用。
- 展望(UWB):小范围试验测试中,未来可能扩大市场范围
但是iOS的MC框架与Android的Wifi Direct不兼容,需要单独适配。
Andorid端:WiFi-P2P
Wifi P2P (peer to peer):定义为 Wifi 点对点,也叫 Wifi 直连(Wifi Direct),它是 Wifi Display(投屏) 应用的技术基础。
官方定义
使用 WLAN 直连 (P2P) 技术,可以让具备相应硬件的 Android 4.0(API 级别 14)或更高版本设备在没有中间接入点的情况下,通过 WLAN 进行直接互联。使用这些 API,您可以实现支持 WLAN P2P 的设备间相互发现和连接,从而获得比蓝牙连接更远距离的高速连接通信效果。对于多人游戏或照片共享等需要在用户之间共享数据的应用而言,这一技术非常有用。
其他定义
WiFi Direct是指允许无线网络中的设备无需通过无线路由器即可相互连接。其原理与蓝牙技术类似,这种标准允许无线设备以点对点形式互连。而更为重要的是,WiFi Direct技术允许一个WiFi设备同时建立多个无线连接,这是目前很多新形态WiFi应用最关键的技术。
WiFi Direct是一种P2P的无线互联技术,它所建立的网络是一种改进型的adhoc网络,采用无线通讯模式。
WiFi两种网络模式:Infrastructure Mode 和Ad Hoc Mode.
WiFi Direct主要解决了物理层的连接问题,包括设备发现和服务发现等。相关技术有NFC和DLNA。
WiFi Direct其他特性:
- 不需要AP或者路由器,设备内置“soft AP”
- 对等连接的双方只需一方支持WiFi Direct即可实现无线互联
- 同时支持基础设施网络和P2P网络。
- 可以以一对一或者一对多的方式形成设备互联
- 至少符合802.11g协议才可以通过WiFi Direct CERTIFIED验证
- 最大传输距离可达到200米,最大传输速度为250Mbps,使用2.4GHz与5GHz两种频段频段,并它支持一对一,以及一对多模式。
重要特性
- Wifi P2P 技术并不会访问网络,但由于会使用到 Java Socket,所以需要申请网络权限。
- 只需要打开 Wifi 即可,不需要加入任何网络或 AP,即可实现对等点连接通讯。(注:在后文的demo中有验证)
- 支持服务器给群里设备发送消息。
- Wifi Direct实现的只是设备间的配对,配对后的文件传输操作还是需要开发者自己来做的。
扩展
Miracast依赖的Wi-Fi技术项有:
- Wi-Fi Direct,也就是Wi-Fi P2P。它支持在没有AP(Access Point)的情况下,两个Wi-Fi设备直连并通信。
- Wi-Fi Protected Setup:用于帮助用户自动配置Wi-Fi网络、添加Wi-Fi设备等。
- 11n/WMM/WPA2:其中,11n就是802.11n协议,它将11a和11g提供的Wi-Fi传输速率从56Mbps提升到300甚至600Mbps。WMM是Wi-Fi Multimedia的缩写,是一种针对实时视音频数据的QoS服务。而WPA2意为Wi-Fi Protected Acess第二版,主要用来给传输的数据进行加密保护。
上述的Wi-Fi技术中,绝大部分功能由硬件厂商实现。而在Android中,对Miracast来说最重要的是两个基础技术:
- Wi-Fi Direct:该功能由Android中的WifiP2pService来管理和控制。
- Wi-Fi Multimedia:为了支持Miracast,Android 4.2对MultiMedia系统也进行了修改。
使用场景
- 手机连接到某AP上网,运行youtube客户端看视频;手机同时通过Wi-Fi Direct连接到电视,将视频通过Wi-Fi Direct Display投射到大银幕上.
- 可实现通过 Wifi 连接,同时使用数据网络的场景,比如:手机遥控无人机的同时,无人机需要访问远程服务器上传数据。
- 目前在市场上,Client形式(客户、用户使用的)的WiFi产品(无论是USB接口、SDIO接口还是UART接口)都支持WiFi Direct,只是这项技术的用户感知不强。市面上其实已经有很多用WiFi Direct底层技术的App,例如快牙、瓦力快传等利用智能手机自身的WiFi模块自建网络并传送文件。
共享传输方式
- 蓝牙
- WLAN(wifi)
- 1、Wifi-直连(p2p)
- 2、手机wifi热点
- 3、通过连接到同一WIFI路由器
- 1、socket直接传输(启用Android网络发现服务获取IP地址和端口)
- 2、http协议搭建网站服务)
Demo研究
Android端
说明:根据官方的demo,整理成Andorid Studio中可编译的项目,并添加测试用例。
代码及测试apk请点击:WiFiDirectDemo
官方文档:WLAN 直连(对等连接或 P2P)概览
官方源码链接:WiFiDirectDemo
测试安装包:
在apk目录下,文件名为:wifidirectDemo.apk
。
测试用例:
测试之前,记得首先打开手机WiFi,否则部分手机可能出现闪退的问题。
设备支持必要条件:开启WiFI并允许获取定位权限。
以下为五种测试场景:
- 同一局域网场景:
两个手机连接WLAN热点:如Smart(2.4G/5G)
,在同一个网络下。
运行结果:两个手机能正常通信,能正常收发图片。
- 同一局域网分离出两个路由:
一个手机连接WLAN热点:如Smart-Slim(5G)
,另一个手机连接Smart(2.4G/5G)
。
运行结果:两个手机能正常通信,能正常收发图片。
- AP隔离场景:
一个手机连接4G网络虚拟的人个热点
,一个手机连接Smart(2.4G/5G)
。
运行结果:两个手机能正常通信,能正常收发图片。
- 两个手机只需要打开WiFi,不需要连接任何网络。
运行结果:两个手机能正常通信,能正常收发图片。
- 开发板的测试场景同上述四种测试场景。
小结:只要两端都打开wifi,无论连的是否同一个网络,都可以连接上并收发图片。
异常情况:
有时候会出现搜索不到的情况,需要多试几次才能搜索成功。另外需要Rom取消发送邀请、确认配对连接弹窗。
iOS端
Multipeer connectivity是一个使附近设备通过Wi-Fi网络、P2P Wi-Fi以及蓝牙个人局域网进行通信的框架。最新Nearby Interactions,有了新的UWB发现框架,可能会改变一些情况。
互相链接的节点可以安全地传递信息、流或是其他文件资源,而不用通过网络服务。
此框架是在iOS7以后推出,旨在替代GameKit下的GKPeerPickerController通信。
通过此框架我们可以直接连接同一网络下的设备,让其直接进行类似微信,qq那样的即时通讯效果。
使用场景:
如何在iPhone移动设备上使用Wi-Fi Direct功能
第三方开源跨平台研究
- AllJoyn
alljoyn(目前只找到Android 项目services-simulators
,iOS端没有找到 )
AllJoyn,由高通公司主导的高通创新中心(Qualcomm Innovation Center)所开发的开放源代码专案,主要用于近距离无线传输,透过Wifi或蓝牙技术,进行定位与点对点档案传输。
- FireChat
(Android端和iOS端都有相应的App。未找到开源的项目)
FireChat,是一个专门用于手机的APP,由开放花园公司开发。它能使智能手机在没有网络存取时,经由无线网状网络的蓝牙、Wi-Fi,或苹果公司的多点连线(Multipeer Connectivity)对等网络架构连线。
- udark (Android和iOS端都有开源项目,Android端底层未用到WiFi-P2P接口,以蓝牙和NSD为主,两端文档接口不完善)
Mobile peer-to-peer mesh networking library.Integrates into iOS and Android apps and works over Wi-Fi and Bluetooth.
重点对udark进行Demo验证,验证后发现存在以下问题:
Android 端:
可以看到底层源码(只能通过implementation 'io.underdark:underdark:1.0.12'
查看jar包),底层代码初步判断是基于蓝牙和WiFI(NSD)混合模式实现。但是连接成功或是失败,寻找原因时,由于没有文档接口说明不好定位问题。
iOS端: 真机存在适配系统版本13及以上的适配问题,目前只能在iOS模拟器上跑通Demo。代码不开源,无法看到连接原理,无法定位问题。
文档:
两端没有接口文档说明,开源作者也无法进一步联系。
结论:
该开源项目暂时不能在项目中运用,需要考虑其他方向。
下一步方向
- MQTT
- 蓝牙套接字
- UWB
- ……
UWB定位系统与蓝牙技术的对比
UWB室内人员定位系统具有高定位精度的特点,在恶劣环境下也能满足企业需求的精度;蓝牙AOA不仅精度不错,生态也很成熟,但是更适用于简单的办公室环境或者商场环境,更倾向于实际室内定位导航。下面我们来具体客观的对两种技术进行分析对比。
UWB vs 蓝牙
1、定位精度
理想状态下,UWB定位与蓝牙定位均能达到厘米级精度,在实际场景当中,UWB穿透障碍物的能力更强于蓝牙;且UWB的有效传输距离在10m以上,是蓝牙定位的两倍左右。
2、功耗
以相同场景下的基站为例,目前UWB基站需要有源供电、太阳能供电的方式,而蓝牙一块电池就可工作很久,在运营维护上具有明显的优势。
3、成本
受制于信号传播距离,蓝牙基站相邻两点距离在6米左右,UWB基站相邻两点在20-50米左右,取决于遮挡情况,设备量上蓝牙需要更多的设备,但UWB单体成本更高,随着UWB技术的不断进步完善,两者间成本的差距会越来越小。
4、应用场景
蓝牙定位在民用场景下如医院、商超、停车场等更适用,此类场景以用户为核心,更注重用户在场景内的体验,如寻车、寻位置等。UWB定位在企业场景下更契合,如工厂、化工、电厂等,此类场景以企业为核心,更注重人员的安全与管理,在定位精度的要求上更高,故UWB比蓝牙更适合。
通讯技术对比
如上图所示是4种协议的基本性能对比,其中需要注意的是距离对比参数,固然早期相对低速率的蓝牙和Zigbee协议的通讯距离基本定位在10m左右,但是实质上,低功耗的这两种通讯方式都在增强其覆盖面。据最近的蓝牙联盟培训获悉,蓝牙4.0也在布局室内定位方案,同时明年可能公布支持300m以上的中距离蓝牙协议。至于Zigbee协议,已经有大量的硬件支持远距离通讯,有些甚至能让传感网络建立到1.5公里之外。需要注意,Zigbee、蓝牙及WIFI都有2.4Ghz的工作频道,顾同时使用下的信号干扰在所难免。这也是近期比较多的WIFI双频类产品的价值所在。
典型系统参数
功耗对比
通过典型系统参数及功耗对比图,大家可以非常直观的看出这几种协议及方案造就的硬件差异。总的来说,蓝牙、Zigbee适用于有限能源的低数据量传输的应用,如移动设备、现在比较火的可穿戴式(可穿戴式现在普遍方案为蓝牙4.0 BLE,虽然功耗上Zigbee有优势,但是毕竟Zigbee不能直接与手机或平板等移动设备连接。)。此外智能家居的很多应用场景需要产品使用内置电源供电时,Zigbee也有广泛的应用空间。前一段时间,Zigbee联盟就公布了基于Zigbee灯光控制标准Zigbee light link(ZLL),基于Zigbee数据网络的楼宇控制系统也是屡见不鲜。
主要知识和信息来源于<A Comparative Study of Wireless Protocols:Bluetooth, UWB, ZigBee, and Wi-Fi> by Jin-Shyan Lee, Yu-Wei Su, and Chung-Chou Shen。附件是paper原稿全貌,有兴趣的小伙伴们可以深入了解下:
总结
技术方案皆有其优劣之处,只是把对的东西放到它被需要的地方。最后,如果你看到了此文,对Wifi P2P及UWB跨平台通信研究感兴趣,欢迎交流。
参考
Android 10.0相关权限的变更(使用WiFi Direct必须打开定位)
Android 实现无网络传输文件2(wifi热点)
WifiDirect (WIFIP2P) 最全最详细,应用于智能硬件(智能家居,车机,无人机)等
Android Wi-Fi Display(Miracast)介绍(其中的第四种Miracast拓扑图应用场景有用)
三种主流无线同屏技术介绍(Miracast、DLNA与AirPlay技术)
其他参考
The Sorry State of Peer to Peer iOS to Android connectivity
Peer to peer android and iOS with Wifi direct (multipeer connectivity?)
Is iOS 7 Multipeer Connectivity compatible with Android Wi-Fi Direct?
9 of the best apps for sharing files between devices and friends
原文连接
的情况下转载,若非则不得使用我方内容。