2012-08-06 146 views
11

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

另外,如果我使用的是JmDNS或Bonjour,则有serviceFoundserviceResolved的回叫。如果我只是对发布特定服务的设备的IP地址感兴趣,那么获取地址的方式是否比通过serviceFoundserviceResolved这两种方法获得更快速/更高效的方式?

由于

回答

23

DNS-SD使用多播DNS(MDNS),其工作原理是在UDP上发送DNS数据包发送到某个组播地址。网络中所有支持mdns的主机也会监听这个地址。它使用UDP,因此开销很低。此外,通过使用大量缓存,客户端的设计方式可以将网络上的聊天数量保持在最低限度。

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

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

+0

请帮忙这个查询http://stackoverflow.com/questions/40662608/service-discovery-using-dns-sd – Daemon 2016-11-20 20:44:29