ZeroConf(零配置网络)与UPnP们的比较

之所以是UPnP们,是因为UPnP是一个组织,而并非专指某个协议。就如同说:我们正在实现RFC XXXX,而不是说:我们正在实现IETF。
ZeroConf是一个被精确定义的,三为一体的协议,即:Address Selection(地址选择),Name Resolution(域名解析)与Service Discovery(服务发现),用于降低网络配置的难度。例如,Apple的Bonjour服务即为ZeroConf的一个实现,如果在Windows上安装了Bonjour for Windows服务,可以很容易的找到并使用网络上支持ZeroConf的打印机。ZeroConf的目的就在于提高产品的可用性与可靠性,而不需要提供复杂的文档,及降低支持成本,提高客户满意度。
相比来说,UPnP是一个开放的设备相关的协议集。每一个新设备,UPnP Forum都成立一个新的工作组讨论此类设备该如何工作。问题在于,虽然有许多设备声称支持UPnP,但这些只是在名义上的声明。例如,Windows并未使用UPnP去发现,配置与使用一些网络上存在的打印机。

为什么不用ZeroConf替换UPnP呢?
这里存在误解:
第一,这里不存在选择的问题:没有道理在支持ZeroConf时,不支持UPnP,这在技术上完全可行。在本地地址选择这个层次上,ZeroConf和UPnP完全相同。
第二,ZeroConf与UPnP不是能够比较的概念。如前面提到的,ZeroConf是协议,UPnP是组织。
如果有人说:我们正在适配UPnP,估计有俩个意思:我们正在适配某个特定的UPnP协议,或这人根本就不懂他在说什么,他的意思是那些倒霉的网络配置问题已经交给底层的工程师去解决了。

结论
- 在地址选择问题上,ZeroConf与UPnP没有本质区别;
- ZeroConf提供了域名解析服务,而UPnP没有(明显的区别);
- 在服务发现的层次上,俩者各有实现,但不冲突。ZeroConf是mDNS-SD,而UPnP是SSDP。
如果你是新建一个产品,而不是在一个已经存在了的UPnP协议模型上工作的话,使用UPnP是没有意义的,UPnP只是在很窄的方向上针对一些问题的特定实现罢了。

你可能感兴趣的:(网络,配置,upnp)