mDNS究竟如何解析地址?

ndc*_*057 12 mdns bonjour jmdns dns-sd

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

另外,如果我使用JmDNS或Bonjour有回调两个serviceFoundserviceResolved.如果我在设备发布某种服务的IP地址只是感兴趣,有没有获得比通过两个要去的地址更快/更有效的方式serviceFoundserviceResolved

谢谢

igo*_*orw 28

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

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

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