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

相关推荐
coding4u6 小时前
Mac 外接显示器完全指南:从插上线到调好每个参数
macos·计算机外设·文件管理·显示器·策略模式·quick look扩展
zhyf1196 小时前
(Mac)Homebrew部署Obsidian+Claudian+Excalidraw
macos
chuan.bai6 小时前
Java RAG 实战(第 3 篇):从交互式聊天到多轮上下文
java·人工智能·macos·ai
Chennn__7 小时前
开源项目:Recorder — 本地离线 macOS 录音转文字(通用/课堂/雅思,可选 Ollama)
macos
AUV11078 小时前
录系统声音用什么 Mac 录屏软件:双音源到成片的五层验收
macos
2501_9159090610 小时前
iOS 证书创建与管理 类型限制 p12 密码与云备份实操
android·ios·小程序·https·uni-app·iphone·webview
向阳是我10 小时前
两台 Mac 远程共享屏幕最佳方案:Tailscale + macOS 原生屏幕共享
macos
00后程序员张10 小时前
有没有更轻量的 iOS 开发环境?快蝎kxapp轻量化路径与构成
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
楷哥爱开发11 小时前
如何在 Windows、macOS 和 Linux 上安装 scikit-learn (sklearn)
linux·windows·macos
ii_best11 小时前
iOS 投屏ios群控鹰眼中控系统安装指南|电脑端 + TestFlight + 开发者模式实操
ios·自动化·按键精灵