Apple 黑科技
HTTP Live Streaming(HLS, m3u8)
Release Date: May 2009
Low-Latency WiFi
Apple Wireless Direct Link (AWDL)
Release Date: July 2011
苹果的 AWDL(Apple Wireless Direct Link)协议会创建一个名为 awdl0 的虚拟网络接口,并自动为它分配一个 IPv6 地址。
awdl0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::50bb:ecff:fe86:eb54%awdl0 prefixlen 64 scopeid 0xd
虚拟接口
苹果设备(从 iPhone 4 起)的 Wi-Fi 芯片支持创建多个虚拟接口。一个接口(如 en0)用来连接你家的 Wi-Fi 路由器上网,另一个接口(就是 awdl0)则被系统单独用来进行设备间的直连通信。
BLE 为了省电,AWDL 不会一直处于活跃状态。像 AirDrop 这样的功能,通常会先通过低功耗的蓝牙 (BLE) 来“唤醒”AWDL,完成初步的设备发现后,再通过 AWDL 进行高速的数据传输。
重复地址检测 重复地址检测 (DAD, Duplicate Address Detection)。
-
生成“试验地址”:当一个 AWDL 接口启动时,它会根据自身的 MAC 地址等信息生成一个 IPv6 地址。在正式使用前,这个地址被称为试验地址 (Tentative Address)。
-
发起“探测”:设备会向这个试验地址发送一个邻居请求 (NS, Neighbor Solicitation) 消息,相当于在问:“这个地址有人用吗?”。
-
处理“回应”:
- 如果地址未被占用:设备没有收到任何邻居通告 (NA, Neighbor Advertisement) 回复,就会认为该地址是唯一的,将其正式分配给 awdl0 接口并启用。
- 如果地址已被占用:如果另一台设备正在使用该地址,它会回复一个 NA 消息。那么,发起探测的设备就会得知地址冲突,自动配置过程会停止,这个试验地址会被标记为 duplicated(重复)状态,不会被启用。设备可能会尝试使用随机化间隔等机制来生成一个新的地址。