Технические вопросы и ответы QA1311

Регистрация службы Bonjour многократно

Q: При регистрации той же службы Bonjour многократно при работе той же машины, ни одна из регистрации не получает ошибку конфликта имен. Почему это?

A: При регистрации той же службы Bonjour многократно при работе той же машины, ни одна из регистрации не получает ошибку конфликта имен. Почему это?

При попытке зарегистрировать то же имя/тип/домен/порт многократно на той же машине, то Вы не получите ошибку, потому что зарегистрированные ресурсные записи DNS имеют идентичный rdata, таким образом, соглашается регистрация. Только то, когда rdata отличается, является им, рассмотрел конфликт имен.

Причина этого состоит в том, чтобы позволить Добрый день прокси различных видов. Предположим, что у Вас есть сетевой принтер, делающий печать LPR, но не распространяющий то использование Добрый день. Вы могли создать Добрый день прокси для распространения от имени принтера. Для отказоустойчивости Вы могли бы выполнить два прокси в сети, и Вы не захотите, чтобы два прокси конфликтовали друг с другом. Поскольку Добрый день только полагает, что он конфликт, когда два набора rdata отличаются, два прокси могут сосуществовать мирно бок о бок. Пока оба дают идентичные ответы на тот же вопрос, ни один не видит ответ других, как являющийся в конфликте с его собственным.

Пример того, когда rdata отличался бы, - то, при регистрации двух идентичных имен/типов/доменов/портов от различных машин при помощи CFNetServices или NSNetServices. В этом случае rdata будет отличаться, потому что Целевой узел в записи SRV будет содержать различную запись адреса (потому что эти две машины имеют различные IP-адреса), и это генерирует ошибку конфликта имен. Также регистрацию двух идентичных имен/типов/доменов от той же машины, но использование двух различных номеров портов считали бы конфликтом имен.

Даже при том, что регистрация той же службы Bonjour многократно на ту же машину совершенно законна, это чаще всего происходит из-за ошибки приложения. Поэтому для предупреждения разработчика приложений этой ситуации, сообщение об ошибке распечатано к системному журналу (/var/log/system.log), который подобен следующему.

Перечисление 1  system.log сообщение

Oct  4 18:16:21 localhost mDNSResponder[177]: 13423: Client application registered 2 identical instances of service Cube._http._tcp.local. port 80.

Для получения дополнительной информации о протоколах, используемых Добрый день, см. технические спецификации, на которые ссылаются Добрый день веб-сайт Разработчика.



История версии документа


ДатаПримечания
23.10.2003

Новый документ, объясняющий, почему регистрация той же службы Bonjour дважды на ту же машину не вызывает конфликт имен.