一晃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

相关推荐
帅次5 小时前
Android 17 开发者实战:核心更新与应用场景落地指南
android·java·ios·android studio·iphone·android jetpack·webview
人月神话Lee6 小时前
【图像处理】Core Image 与 GPU 渲染管线——让滤镜飞起来
ios·ai编程·图像识别
m0_5358175510 小时前
macOS上Claude Code安装配置保姆级教程:国内直连API,从0到1跑通(附避坑指南)
gpt·macos·ai·node.js·claude·claudecode·88api
帅次13 小时前
讯飞与腾讯云:Android 实时语音识别服务对比选择
android·ios·微信小程序·小程序·android studio·android runtime
择势14 小时前
用一套View代码,同时支持RTL和LTR布局混合排版
ios
我有满天星辰15 小时前
Mac 安装 Redis + Spring Boot 整合 Redis(完整实战指南)
spring boot·redis·macos
游戏开发爱好者815 小时前
iOS开发工具推荐:Xcode、AppCode、SwiftLint使用心得与效率提升
ide·vscode·macos·ios·个人开发·xcode·敏捷流程
2501_9159090616 小时前
深入理解HTTPS中间人抓包技术原理与实战指南
网络协议·http·ios·小程序·https·uni-app·iphone
whyfail16 小时前
Codex 下载安装指南:Windows 和 macOS 官方版下载
windows·macos·codex
感谢地心引力16 小时前
在Claude Code里面使用Deepseek-v4,支持mac和Windows双系统
人工智能·windows·macos·ai·deepseek·claude code