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

След като дадена услуга бъде открита чрез DNS-SD, как точно се разрешава адресът на този хост и отнема ли значително повече време/режийни разходи?

Освен това, ако използвам JmDNS или Bonjour, има обратни повиквания както за serviceFound, така и за serviceResolved. Ако просто се интересувам от IP адреса на устройството, публикуващо определена услуга, има ли по-бърз/по-ефективен начин за получаване на адреса от преминаването през serviceFound и serviceResolved?

Благодаря


person ndc5057    schedule 06.08.2012    source източник


Отговори (1)


DNS-SD използва Multicast DNS (MDNS), който работи чрез изпращане на DNS пакети през UDP до определен multicast адрес. Всички поддържащи mdns хостове в мрежата също слушат този адрес. Той използва UDP, така че е доста нисък. Също така, клиентите са проектирани по начин, че количеството бърборене в мрежата е сведено до минимум, чрез използване на обширно кеширане.

Откриването на услуга е процес в две стъпки. Първата стъпка е намирането на имената на всички хостове, предоставящи определена услуга (напр. печат). Това все още няма да ви даде ip адреса, вместо това ви дава mdns името (завършващо с .local). Това е така, защото IP може да се промени, докато името не.

Втората стъпка в откриването на услуга е разрешаването на .local името на хоста през mdns. Вие питате чрез мултикаст кой е foo.local, foo.local ще види този пакет и ще отговори чрез излъчване със своя ip адрес, номер на порт и друга информация.

person igorw    schedule 03.09.2012
comment
Моля, помогнете с тази заявка stackoverflow.com/questions/40662608/ - person Daemon; 20.11.2016