mDNS究竟如何解析地址?

时间:2012-08-06 20:54:53

标签: bonjour jmdns mdns dns-sd

通过DNS-SD发现服务后,该主机的地址究竟是如何解决的,是否需要更多的时间/开销?

此外,如果我使用的是JmDNS或Bonjour,则serviceFoundserviceResolved都会有回拨。如果我只是对发布某项服务的设备的IP地址感兴趣,那么获取地址的方式是否比通过serviceFoundserviceResolved更快/更有效?

由于

1 个答案:

答案 0 :(得分:27)

DNS-SD使用多播DNS(MDNS),它通过将UDP数据包通过UDP发送到某个多播地址来工作。网络中所有支持mdns的主机也会收听此地址。它使用UDP,因此开销很低。此外,客户端的设计方式是通过使用广泛的缓存将网络上的聊天量保持在最低水平。

服务发现是一个两步过程。第一步是找到提供特定服务(例如打印)的所有主机的名称。这还没有给你ip地址,而是给你mdns名称(以.local结尾)。这是因为ip可能会改变,而名称则不会改变。

服务发现的第二步是通过mdns解析主机的.local名称。您通过多播询问foo.local是谁,foo.local将看到该数据包,并通过广播响应其IP地址,端口号和其他信息。

相关问题