iOS Bonjour через Интернет

#ios #networking #bonjour

#iOS #создание сетей #bonjour

Вопрос:

Я знаю, что реализация Bonjour в iOS (NSNetService, NSNetServiceBrowser) работает «из коробки» в локальных сетях.

В документации говорится, что можно настроить DNS-сервер Bonjour, чтобы разрешить пользователям подключаться через Интернет, поэтому мои вопросы:

  1. Что такое интерфейс DNS-сервера Bonjour? есть ли пример, с которого я могу начать?
  2. Будет ли DNS-сервер, ответственный за первоначальное рукопожатие соединение одноранговых узлов, и все остальное (отправка восстановление данных) напрямую между одноранговыми узлами?
  3. Предоставляет ли DNS-сервер механизм пробивки отверстий в NAT?

Спасибо!

Ответ №1:

Обнаружение локальной службы Bonjour основано на «многоадресной DNS». всякий раз, когда какой-либо клиент хочет узнать что-либо о сети или службах в сети, он использует адрес многоадресной рассылки 224.0.0.251 , что означает, что только клиенты из этой группы многоадресной рассылки могут совместно использовать bonjour. пространство IP-адресов 244.0.0 / 24 определено RFC5771 как «Блок управления локальной сетью» и не будет перенаправлено из вашей локальной сети.

НО на самом деле Bonjour — это всего лишь метод на основе DNS — вы можете указать NSServiceBrowser для поиска в нелокальном домене, для чего просто требуется, чтобы DNS-сервер отвечал на определенные запросы (как описано в разделе «Добавление записей обнаружения службы DNS-SD вручную на существующий сервер имен») Это позволяет обнаруживать службы через Интернет и даже регистрировать службы, если у вас работает обновление DNS (настройка сервера имен Bonjour), но не более того — вам придется самостоятельно пробивать дыры.

Так что найдите себе BIND-сервер и начните пробовать 😉

Комментарии:

1. Спасибо за ответ!, нет ли одноранговой платформы для iOS через Интернет?

2. по крайней мере, я не знаю ни одного .. если вы хотите закодировать это самостоятельно, вам придется углубиться в фреймворки. если устройства, которые вы хотите подключить, находятся рядом друг с другом, вы можете использовать API bump для подключения устройств и передачи данных по любой сети «всего одним нажатием кнопки»..

3. Комментарий о пробивании отверстий неверен. Bonjour зарегистрирует службу в глобальной зоне только в том случае, если у машины есть общедоступный адрес или порт-переадресация может быть согласована через NAT-PMP или UPnP.

4. Я только что провел быстрый тест: использование C DNS Service Discovery API для регистрации в домене, не настроенном в моей системе OS X, привело к тому, что Bonjour настроил перенаправление портов и попытался добавить записи в этот домен. Это не удалось, поскольку для соответствующей зоны требуются обновления для установки TSIG. Поэтому я бы сказал, что до тех пор, пока вы согласны разрешать открытые обновления (поскольку нет способа установить учетные данные TSIG в iOS), все должно работать нормально. Не стесняйтесь, напишите мне электронное письмо, если у вас возникнут какие-либо вопросы.