#ios #networking #bonjour
#iOS #создание сетей #bonjour
Вопрос:
Я знаю, что реализация Bonjour в iOS (NSNetService, NSNetServiceBrowser) работает «из коробки» в локальных сетях.
В документации говорится, что можно настроить DNS-сервер Bonjour, чтобы разрешить пользователям подключаться через Интернет, поэтому мои вопросы:
- Что такое интерфейс DNS-сервера Bonjour? есть ли пример, с которого я могу начать?
- Будет ли DNS-сервер, ответственный за первоначальное рукопожатие соединение одноранговых узлов, и все остальное (отправка восстановление данных) напрямую между одноранговыми узлами?
- Предоставляет ли 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), все должно работать нормально. Не стесняйтесь, напишите мне электронное письмо, если у вас возникнут какие-либо вопросы.