Назад | Перейти на главную страницу

Как я могу обеспечить связь между компьютерами в неизвестной среде развертывания?

У меня два компьютера. У одного из них работает сервер, у другого есть приложение, которое обменивается данными с этим сервером. Эти компьютеры развернуты на различных сайтах. Иногда эти компьютеры могут быть подключены напрямую друг к другу, в других случаях они будут подключены только через беспроводное соединение, которое я не контролирую. В качестве дополнительного требования сервер также должен иметь доступ к Интернету с помощью DHCP, если соединение доступно. Цель состоит в том, чтобы иметь возможность установить эти компьютеры в офисе, а затем развернуть их на сайте практически без настройки на месте.

Что я могу сделать, чтобы компьютер, на котором запущено приложение, всегда (или как можно чаще) мог найти сервер и связаться с ним (HTTP через порт 80).

Моя мысль - настроить сервер с несколькими IP-адресами. Он может получить доступ к Интернету с помощью DHCP на одном. Другой будет установлен на статический IP. Компьютеры приложений будут настроены так, чтобы знать этот статический IP-адрес заранее и делать запросы к нему. Однако в руководствах, в которых показано, как это сделать, я должен ввести свой шлюз и маску подсети. И не будут ли они меняться в зависимости от сети, к которой я присоединяюсь?

Пожалуйста, извините, если я упускаю что-то очень очевидное или упускаю из виду другие факторы. Я почти ничего не знаю о сетях.

Если есть какое-то оборудование, которое может помочь, ничего страшного.

Это перспектива и хр.

Попытка угадать, какой статический IP-адрес не будет конфликтовать, вызывает проблемы. Как предположил Дероберт, многоадресный DNS + DNS-SD подходит. Единственный стек для Windows - это Bonjour от Apple реализация, которая даст вам возможность зарегистрировать и разрешить вашу службу в локальной сети, а также с некоторой дополнительной конфигурацией, пробить дыру в брандмауэре (если маршрутизатор поддерживает NAT-PMP или uPnP) и обновить зону DNS с соответствующим DNS -SD записи.

Скорее всего, вам потребуется написать сценарий, чтобы привязать Bonjour к конфигурации вашего приложения, но, не зная, что это за приложение, трудно сказать, что подойдет лучше всего. Тем не менее, утилита командной строки dns-sd.exe, автоматизированная с помощью простого пакета или сценария WSH, могла бы выполнить эту работу, как и различные привязки для Python, Perl или Ruby для менее тривиальных конфигураций.

Поскольку кажется, что они почти всегда будут в одной сети, не могли бы вы просто запустить WINS на «серверном» компьютере и подключиться по имени NetBIOS?

Таким образом, вам вообще не нужно беспокоиться об IP-адресе.

На самом деле, теперь, когда я думаю об этом, вам, вероятно, даже не нужен WINS, NetBIOS должен справиться с этим.

Обычно это решается путем использования одного из нескольких уже доступных протоколов обнаружения служб. Например, см. Статья в Википедии о Zeroconf. Multicast DNS + DNS-SD, кажется, в настоящее время является популярным и широко поддерживаемым методом, хотя есть и другие (и больше всего упоминается в Wiki).

Например, существует мод-dnssd для apache2, который позволяет Apache использовать Avahi для оповещения о себе через многоадресный DNS.