AirPlay 是苹果的一个私有标准,可以用来将 iDevice(iPhone、iPad、iPod) 上的音视频流或者镜像投射到 Apple TV 上。尽管 AirPlay 协议是私有的,但国内主流的机顶盒,如天猫魔盒、小米盒子等都对其提供了支持。
AirPlay 有一个很大的局限性:只能在 Apple TV(或者支持 AirPlay 的机顶盒)与 iDevice 处在同一子网内才能工作。之所以有这个限制,是因为 AirPlay 的服务发现部分基于 Bonjour。
Bonjour 是苹果开发的一种「零配置网络架构」,使得同一局域网内的主机能够相互发现彼此提供的服务,而不需要用户配置 IP 等信息。想象一下,将一台打印机接到局域网内,然后在电脑上就可以直接选择这台打印机。
Bonjour 为了实现「零配置」,做了三件微小的工作:
虽然是零配置网络,但实际主机之间的通信还是基于 TCP/IP,于是我们需要分配 IP 地址。传统的 IP 分配方式有两种:静态分配和 DHCP。
苹果增加了另外一种方式:在没有 DHCP 服务器时(如 Ad Hoc 网络),Bonjour 会为主机自动指定随机的一个 IP 地址,然后检测是否有冲突,如果有冲突就再随机指定一个。这样的好处是不依赖路由器,在去中心化的 Ad-hoc 网络中也能正常工作。
Bonjour 为服务(DNS service
)指定一个唯一的类似 foo._airplay._tcp.local.