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

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

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

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

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

Извините меня, если я упускаю что-то совершенно очевидное или упускаю из виду другие факторы. Я почти ничего не знаю о нетворкинге.

Если есть аппаратное обеспечение, которое может помочь, это прекрасно.

Это Виста и ХР.

решение1

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

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

решение2

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

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

решение3

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

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

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

Связанный контент