Как именно mDNS разрешает адреса?

Как только служба обнаруживается через DNS-SD, как точно решается адрес этого хоста, и требуется ли значительно больше времени/накладных расходов?

Кроме того, если я использую JmDNS или Bonjour есть вызов защитники для обоих serviceFound и serviceResolved. Если я просто заинтересован в IP - адресе устройства издательского определенную услугу, есть более быстрый/более эффективный способ получения адреса, чем происходит как через serviceFound и serviceResolved?

благодаря

Ответ 1

DNS-SD использует многоадресный DNS (MDNS), который работает, отправляя пакеты DNS через UDP на определенный многоадресный адрес. Все хосты, поддерживающие mdns в сети, также прослушивают этот адрес. Он использует UDP, так что это довольно низкие накладные расходы. Кроме того, клиенты сконструированы таким образом, что количество разговоров в сети сведено к минимуму, используя обширное кэширование.

Обнаружение службы - это двухэтапный процесс. Первым шагом является поиск имен всех хостов, предоставляющих определенную услугу (например, печать). Это еще не даст вам ip-адрес, вместо этого он дает вам имя mdns (заканчивающееся на .local). Это связано с тем, что ip может измениться, тогда как имя не будет.

Второй шаг в обнаружении службы - разрешить .local имя хоста по mdns. Вы спрашиваете через multicast, кто foo.local, foo.local увидит этот пакет и ответит через широковещательную рассылку своим IP-адресом, номером порта и другой информацией.