2012-08-06 28 views
11

Una vez que se descubre un servicio a través de DNS-SD, ¿cómo se resuelve exactamente la dirección de ese host, y toma mucho más tiempo/sobrecarga?¿Cómo resuelve exactamente el mDNS las direcciones?

Además, si estoy usando JmDNS o Bonjour, hay call-backs para serviceFound y serviceResolved. Si solo estoy interesado en la dirección IP del dispositivo que publica un determinado servicio, ¿existe una manera más rápida/más eficiente de obtener la dirección que pasar por serviceFound y serviceResolved?

Gracias

Respuesta

23

DNS-SD utiliza Multicast DNS (MDNS), que funciona mediante el envío de paquetes DNS a través de UDP a una dirección de multidifusión. Todos los hosts habilitados para mdns en la red también escuchan esta dirección. Utiliza UDP por lo que es bastante bajo. Además, los clientes están diseñados de manera que la cantidad de chatter en la red se mantenga al mínimo, mediante el uso de almacenamiento en caché completo.

El descubrimiento de servicios es un proceso de dos pasos. El primer paso es encontrar los nombres de todos los hosts que proporcionan un determinado servicio (por ejemplo, impresión). Esto aún no le dará la dirección IP, en su lugar le da el nombre mdns (que termina en .local). Esto se debe a que la ip podría posiblemente cambiar, mientras que el nombre no.

El segundo paso en el descubrimiento del servicio es resolver el nombre .local del host en mdns. Usted pregunta a través de multidifusión quién es foo.local, foo.local verá ese paquete y responderá a través de la difusión con su dirección IP, número de puerto y otra información.

+0

Por favor, ayuda con esta consulta http://stackoverflow.com/questions/40662608/service-discovery-using-dns-sd – Daemon

Cuestiones relacionadas