2012-08-06 14 views
11

Po wykryciu usługi za pośrednictwem DNS-SD, jak dokładnie rozwiązany zostanie adres tego hosta i czy zajmuje on znacznie więcej czasu/narzut?W jaki sposób mDNS rozwiązuje adresy?

Ponadto, jeśli używam JmDNS lub Bonjour, są oddzwonienia dla obu serviceFound i serviceResolved. Jeśli interesuje mnie tylko adres IP urządzenia publikującego określoną usługę, czy istnieje szybszy/skuteczniejszy sposób uzyskania adresu niż przejście przez oba numery: serviceFound i serviceResolved?

Dzięki

Odpowiedz

23

DNS-SD używa Multicast DNS (mDNS), która polega na wysyłaniu pakietów DNS przez UDP do określonego adresu multiemisji. Wszystkie hosty obsługujące mdns w sieci również nasłuchują tego adresu. Używa UDP, więc jest dość niski narzut. Ponadto, klienci są zaprojektowani w taki sposób, że ilość rozmów w sieci jest ograniczona do minimum, dzięki rozległemu buforowaniu.

Wyszukiwanie usług to proces dwuetapowy. Pierwszym krokiem jest znalezienie nazw wszystkich hostów dostarczających określoną usługę (np. Drukowanie). To nie daje jeszcze adresu IP, zamiast tego podaje nazwę mdns (kończącą się na .local). Dzieje się tak dlatego, że IP może się zmienić, a nazwa nie.

Drugim krokiem w wykrywaniu usług jest rozpoznanie nazwy hosta nad mdns na .local. Pytasz przez multicast, który foo.local jest, foo.local zobaczy ten pakiet i odpowie przez transmisję z jego adresem IP, numerem portu i innymi informacjami.

+0

Proszę pomóc w tym zapytaniu http://stackoverflow.com/questions/40662608/service-discovery-using-dns-sd – Daemon

Powiązane problemy