Zeroconf全称为Zeroconfigurationnetworking,中文名则为零配置网络服务规范,是一种用于自动生成可用IP地址的网络技术,不需要额外的手动配置和专属的配置服务器。有点类似于mdns
“零配置网络服务”的目标,是让非专业用户也能便捷的连接各种网络设备,例如计算机,打印机等。整个搭建网络的过程都是通过程式自动化实现。如果没有

zeroconf,用户必须手动配置一些服务,例如DHCP、DNS,计算机网络的其他设置等。这些对非技术用户和新用户们来说是很难的事情。
使用例子来形象地说明:
用户拥有一台appletv和一台iPhone4s,那之只要都连入到同一个无线局域网内,iphone4s就会自动找出appletv,那么在播放音乐或者视频时候,用户只要点击推送,就可以讲音乐和视频推送到appletv上播放。
Zeroconf -zeroconf协议的实现
zeroconf是协议,因此对应的是各种产品的实现,现在最主要的实现是apple的Bonjour和开源的Avahi。
这两套实现在程序接口上是可以兼容的,因此可以对zeroconf技术依赖的产品,可以使用兼容的开发接口,而不需要考虑到底是使用了Bonjour还是avahi。
开源的zeroconf协议技术实现 – Avahi
Avahi是Zeroconf规范的开源实现,基本是使用在Linux和FreeBSD上。包含了一整套多播DNS(multicastDNS)/DNS-SD网络服务的实现,使用的发布授权是LGPL。
在程序接口上,它使用DNSD与apple的Bonjour进行兼容,方便原来使用Bonjour的产品进行迁移。
目前在绝大多数的Linux发行版本中,都讲avahi作为系统启动进程,并且大量的服务也依赖于avahi。
Avahi也是用纯C编写的,同样也可以使用诸如Java的语言去调用使用开发产品或者服务。
Apple的zeroconf协议技术实现 – Bonjour
Bonjour是由apple实现的zeroconf协议的技术产品,Bonjour来源于法语,意思为你好。
使用了zeroconf技术的产品和服务,在网络中自动传播它们自己的服务信息并聆听其它设备的服务信息,设备之间就象在打招呼,这也是命名为Bonjour(法语:你好)的原因。
Bonjour是一套跨平台的产品,可以使用在Mac,Linux和Winows,以及是兼容POSIX的操作系统上,并且apple已经將其开源,所以也可以方便应用于各个产品。
Bonjour是由纯C编写的,同时也提供了Java的接口,目前如python或者ruby语言也可以很方便地调用使用它。
嵌入式中的zeroconf – WiSe-Zeroconf
Wise-Zeroconf是Wise公司基于开源的Bonjour的基础上,提供给嵌入式产品的zeroconf技术实现。
由于是商业产品,详细资料不知,但是基本功能与Bonjour应该基本相同。
Zeroconf -zeroconf最基础原理
zerconf协议主要是定义了三个层次:
1.不需利用dhcpserver取得设备地址如IP的相关资料
RFC3927,DynamicConfigurationofIPv4Link-LocalAddresses
http://www.ietf.org/rfc/rfc3927.txt
2.不需要通过DNSserver就转换domainname和IP的关系
MulticastDNS
http://files.multicastdns.org/draft-cheshire-dnsext-multicastdns.txt
3.利用DNS-SD来取得设备服务,而不需通过directoryserver
DNS-basedServiceDiscovery,orDNS-SD.
http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt
Zeroconf -zeroconf的未来分析
虽然zeroconf协议名声不大,即使是计算机专业开发人员也知之甚少,但是其实由于这几年apple发展的强势,其应用已经越来越广。
比如在iOS4.2推出时候的airplay,以及airprint都是在这基础上实现的,甚至iOS5.0后的airmirroing技术,也是在zeroconf技术上实现的。
可以预想在未来,zeroconf和DLNA將会有激烈的竞争关系。
ps:XBMC中有AirplayServer的相关代码,值得好好看看!