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