一晃13年过去了,苹果的Airdrop依然很坚挺。

撰稿 | 张大圣

苹果Airdrop三部曲

https://mp.weixin.qq.com/s/23DTl05QWj-pRoGJxxPNvQhttp://苹果这些年,AWDL 一代神兵,技术详细拆解https://mp.weixin.qq.com/s/C8QZSSxwrL2gUul6KmoO7ghttp://一晃13年过去了,苹果的Airdrop依然很坚挺。https://mp.weixin.qq.com/s/b3_mSvk4rl2PV-8EG8YawAhttp://苹果转向:Wifi Aware优势在哪里?原理解析

先看技术时间线

  • 2010.6.30 BLE随着core4.0发布

  • 2012年 三星S Beam(NFC)

  • 2013年 Airdrop跟随IOS 7发布

  • 2016年 华为 HUAWEI分享

  • 2020年 三星快速分享

Airdrop是苹果开发的短距通信功能,比如分享视频,照片等等。体验确实无比丝滑,发现附近设备没有明显延迟。

手机间分享文件,蓝牙吞吐率太低,一张3MB照片需要几分钟;用wifi Direct设备确实快,但设备连接过程复杂,可以劝退绝大多数用户。

逆向工程的完美揭开Airdrop的真面目,协议框架非常精致。

Airdrop的整个传输过程分为三个阶段

  • 设备发现BLE+AWDL

  • 身份验证Authentication

  • 数据传输Data Transfer

功能启动:双方都需要启动Airdrop功能,同时其依赖的蓝牙和wifi功能也需要打开。开启Airdrop后会在后台开启ble的广播和扫描动作。

设备发现过程:以用户信息为参数计算Hash值,ble广播的有效字段填充这个Hash值以及截短的设备名字,设备收到广播并解析Hash后,对照自己存储的历史用户列表,匹配成功就直接显示对方的头像等详细信息,否则只有截断的名字。

采用BLE主要两个原因:首先,ble的广播是在37、38和39广播信道,发现过程非常快,最快十几ms就可以完成发现过程;其次,ble的功耗极低,而且还可以配合ble的背景扫描功能,controller可以过滤特定字段的广播,避免频繁和host通信。

随后,进入设备发现第二步AWDL设备发现,Apple Wireless Direct Link,苹果无线直连属于私有协议,工作在二层的数据链路层,基于这一层的多播通信发现AWDL设备。要比mDNS等应用层基于ip地址的多播快很多。

AWDL创造了一个虚拟的、所有苹果设备共用的BSSID (抓包显示:00:25:00:ff:94:73),所有AWDL设备都将自己的网卡"逻辑上"关联到这个BSSID,从而监听发往该地址的帧。

但随后致命的问题又出现了!每个设备占用自己的wifi物理频段,不仅影响本机的wifi通信,而且不同信道的设备也无法直接通信。AWDL进入设备发现后,会强制切换到共同的频段,通常是44信道;并且会在局域网中协商出来一个master,其主要的作用是提供时钟,兼顾普通wifi和AWDL之间的通信。

这也正是苹果电脑平时要关闭AWDL功能的原因,否则wifi网络会收到明显影响。苹果论坛中有用户反馈的数据,ping网络出现非常高的时延,甚至联通失败。

大神提供了关闭AWDL的命令脚本:每秒监测一次,当awdl网卡启动后,就直接将网卡干掉。

AWDL是苹果这些年非常亮眼的成果之一,基于它实现的功能很多:Airdrop文件传输协议、Airplay投屏协议、通用控制"一套键鼠控制多台Mac/iPad",以及快速连接iPhone热点。

AWDL通信识别对方是Airdrop设备后,会创建awdl0网络节点,同时操作系统会自动为其配置链路本地IPv6地址(如 fe80:: 开头的地址),然后通过Bonjour / mDNS启动应用层的多播服务,为真正的传输交互数据。

开启awdl后,系统中会看到awdl0名称的网卡。

在用户真正点击对方头像"分享"后,进入用户认证阶段,对方手机会出现图片的缩略图,以及接受和拒绝的按钮。请求用户许可。这个阶段对应建立TLS安全链路,并携带用户信息。

当用户认证完成后,就可以看到对方的头像缩略图信息。

最后,数据传输阶段依然是建立TLS安全链路,http协议传输用户数据。

iphone中Airdrop功能有多种模式:所有人可见,仅限联系人,接收关闭,平时基本不使用其传输文件的,建议默认关闭。

设置路径:

  • iPhone/iPad:前往 设置 > 通用 > 隔空投送;或在控制中心长按网络设置块后点击隔空投送图标进行快速切换。

  • Mac:前往 系统设置 > 通用 > 隔空投送与接力

创作不易,关注一哈,谢谢

未来侦察班

科技圈的这点事儿,挺有意思

108篇原创内容

公众号

往期文章

蓝牙那些事,BLE低功耗蓝牙Host主机GATT

蓝牙那些事,蓝牙Host主机L2CAP层

蓝牙那些事,BLE低功耗蓝牙Host主机ATT

蓝牙那些事,BLE低功耗蓝牙controller

蓝牙那些事,BR/EDR经典蓝牙HCI主机控制器接口

蓝牙那些事,BR/EDR经典蓝牙controller

蓝牙那些事,前传一文讲完

一言不合,上蓝牙资料60+

不废话,上wifi资料包98+

wifi的"斩杀线" CCA机制

wifi7失去6GHz频段,还有竞争力吗?看看实测数据(文末领报告)

参考:

https://jiapan.me/2023/AWDL-Mac-disconnected/

https://discussionschinese.apple.com/thread/255369050?sortBy=best

相关推荐
2501_9160088938 分钟前
怎么用 Godot 导出 iOS 应用并上架 App Store?签名字段该填什么?
android·ios·小程序·https·uni-app·iphone·webview
2501_9159184112 小时前
iOS编程用什么软件好?主流工具Xcode、AppCode、CodeRunner与新兴快蝎对比
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
终端安全笔记21 小时前
iOS 27 之后「策略空转」:设备升级不报错,但旧策略不再管它
android·网络·安全·ios·智能手机
9765033351 天前
iOS 上架 4.3a 被拒【uniapp专讲】
flutter·ios·objective-c·uniapp·swift
黑化旺仔2 天前
【OC】KVO
macos·ios·objective-c·cocoa
HouWan2 天前
SwiftUI 小技巧:如何读取 SwiftUI Font 的详细信息
ios·swiftui·apple
李游Leo2 天前
HarmonyOS 7 实战开发 05:把页面做到可上线状态
ios·harmonyos
终端安全笔记2 天前
描述文件、企业证书、MDM 不是三个名字,是三层
android·ios·智能手机
传奇开心果编程2 天前
【SwiftUI入门练中学】第1课 从零开始
学习·ui·ios·swiftui·swift
Liekkas Kono2 天前
macOS 27 安装 VMware Fusion 和 Win11 经验
macos·win11·vmware