mDNS如何解析地址?

20

一旦通过DNS-SD发现了一个服务,那么这个主机的地址是如何被解析的?这个过程是否需要更多时间或开销?

此外,如果我使用JmDNS或Bonjour,则会有serviceFoundserviceResolved的回调。如果我只对发布某个服务的设备的IP地址感兴趣,是否有比同时进行serviceFoundserviceResolved更快/更有效的方法来获取地址?

谢谢

1个回答

39

DNS-SD 使用多播 DNS (MDNS),通过向特定的多播地址发送 DNS 数据包来工作。网络中所有支持 mdns 的主机也会监听此地址。它使用 UDP 协议,因此开销相对较低。此外,客户端的设计方式使得网络上的聊天量最小化,通过使用广泛的缓存。

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

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


请帮忙解决这个问题:http://stackoverflow.com/questions/40662608/service-discovery-using-dns-sd - Daemon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接