Сервис связи

В нормальных условиях WAN-сети связь между узлами (хостами) может быть затруднена несколькими обстоятельствами:

Недостатком статических ip-адресов

IP-адреса во многих сетях (особенно в Интернет) дефицитны. Это заставляет использовать несколько технологий для их экономии. Некоторые из технологий могут включать:

  • Динамические IP-алреса, когда IP-адреса хостов меняются время от времени,
  • NAT (Network Address Translation), когда несколько хостов используют один "внешний" IP-адрес на маршрутизаторе для связи с остальным миром.

Эти технологии позволяют каждому хосту создавать исходящие подключения (например, для открытия веб-сайта). Однако, может быть сложно (или вообще невозможно) создать подключение к такому хосту - Вы даже не можете узнать его IP-адрес (он динамический) или не знать его внешний адрес.

Единственным стандартным решением этой проблемы была бы привязка статического IP-адреса к каждому хосту, к которому Вам надо подключаться. Эти статические IP-адреса прежде должны быть получены. Например, Вам их надо выкупить у Вашего ISP. Один IP-адрес будет стоить не дорого, но  когда системе необходимо взаимодействовать с большим количеством таких узлов, это может стоить значительных денег. Даже когда сеть частная и IP-адреса бесплатны, следует учитывать стоимость работы по администрированию и выделению таких адресов.

Файерволами, блокирующими входящие пакеты

Даже если предположить, что кто-то получил достаточное количество статических IP-адресов, всё еще имеется другая проблема: Вам необходимо подключиться к Серверам Устройств. Это значит пройти файерволы. Обычно файерволы ограничивают входящий траффик, так что Вам прийдется выделять диапазоны портов и пр. Это требует дополнительной работы и снижает безопасность сети (больше IP-адресов и портов доступно извне - больше риск).

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

Так какой же способ соединить Сервера Устройств и их "клиентские" хосты, когда они находятся в разных сетях и не имеют статических адресов наилучший? Он называется Link Service.

Сервис связи

Для сетевого хоста проще к кому-то подключиться, чем принять соединение. К несчастью, обычно одна из сторон должна все-таки принять входящее соединение.

AggreGate предлагает обойти эту проблему, позволяя всем сторонам взаимодействовать через промежуточный сервис - Link Service так, что они все открывают исходящие соединения.

Когда Вы и Ваш друг используют ICQ или MSN, вы оба подключаетесь к центральному серверу. Никто из вас обычно не имеет статического IP-адреса, но сервер имеет. Обе стороны создают исходящее соединение и не нужно перенастраивать файерволы и иметь статические IP.

Link Service - точно такое же решение, только сделанное специально для Серверов Устройств Tibbo! Ваши Сервера Устройств подключаются к Link Service (создают исходящее соединение). Хосты, желающие взаимодействовать с Серверами Устройств также подключаются к AggreGate Server'у. Обе стороны "встречаются" на AggreGate Server'е и могут взаимодействовать друг с другом.

Сервис связи: Детали реализации

Каждый Сервер Устройств, которому необходимо использовать Link Service должен быть сначала зарегистрирован на AggreGate Server'е, т.е. иметь профиль Сервера Устройств. AggreGate Server распознаёт Серверы Устройств комбинацией данных следующих настроек: Имя устройства (DN), Имя владельца (ON) и Пароль (PW). Каждому зарегистрированному Серверу Устройств выделен уникальный номер порта при регистрации. Это тот порт, к которому должен подключаться клиент для взаимодействия с конкретным Сервером Устройств.

Сервер Устройств входит в AggreGate Server по имени устройства, владельца и паролю. Обычно СУ настроен это делать сразу после загрузки. У AggreGate Server'а имеется стандартный порт для входа - 6450 по умолчанию. Поскольку Серверы Устройств уникально идентифицируются своим именем, именем владельца и паролем, одного порта для входа всем достаточно.

"Клиентский" хост, желающий взаимодействовать с конкретным Сервером Устройств создает соединение к конкретному порту AggreGate Server'а, который был выделен Серверу Устройств в процессе регистрации. Связь создается и обе стороны могут обмениваться данными.

Клиентский хост не нуждается в особой процедуре входа для создания подключения к Серверу Устройств через AggreGate Server. Вместо подключения к IP-адресу и порту Сервера Устройств напрямую он подключается к IP-адресу и порту AggreGate Server'а, привязанному к конкретному устройству - разница только в этом.

Сервис связи реализован через драйвер устройства прозрачного проброса данных (Сервис связи). Подробности в этой главе.