2012-08-06 164 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