NAT traversal (постановка)

Материал из GedeminWiki
Перейти к: навигация, поиск

Описанная ниже схема не отменяет действующего механизма, когда на мобильном устройстве прописан адрес с портом, а на файрволле предприятия настроен статический роут на внутренний компьютер.

Терминология:

  • Сервер предприятия -- gedemin.exe в качестве веб-сервера, обслуживающий запросы мобильных приложений.
  • Хаб -- gedemin.exe в качестве веб-сервера, где регистрируются серверы предприятий и куда мобильные приложения обращаются за адресами серверов предприятий.
  • Мобильное приложение -- android приложение, которое обращается к серверу предприятия за данными. Адрес сервера предприятия мобильное приложение узнает, послав запрос на хаб.

Содержание

Хаб

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

Сервера предприятий мы прописываем в таблице GD_WEBHUB:

 ...
 allowedip   -- список допустимых адресов. Если пустой, то мы разрешаем
                регистрацию сервера предприятия с любым внешним 
                адресом.
 aliases     -- список алиасов, обслуживаемых данным сервером предприятия.
                если пустой, то мобильные приложения смогут подключиться
                только по адресу.
 companyruid -- РУИД организации.
 computerid  -- id компьютера сервера.
 adminemail  -- адреса электронной почты для уведомления о недоступности 
                сервера.
 lastactive  -- дата и время последней регистрации сервера на хабе.
 ...

Сервер предприятия

Сервер предприятия активируется через файл gedemin.ini:

 [WEB SERVER]
 Active          = 1
 Bindings        = можно не указывать, тогда сервер привяжется к 
                   локальному адресу.
 Register        = 1 -- флаг указывает, что веб сервер должен 
                   зарегистрироваться на хабе. По умолчанию равен 0.
 RegisterPeriod  = 580 -- период в секундах, через который сервер
                   обновляет информацию о себе на хабе. По умолчанию
                   580 сек, так как есть информация, что на некоторых
                   свитчах и файрволах используется 10-ти минутный
                   интервал времени, в течение которого сохраняется
                   информация о соответствии внутреннего адреса и
                   внешнего порта. 

Сценарий регистрации

  1. запускается веб сервер предприятия
  2. если параметры из gedemin.ini указывают на необходимость регистрации на хабе, то шлется запрос на зашитый в экзешник адрес (например, gs.selfip.biz:47002/web_register)
  3. на хаб передается id компьютера и ruid организации.
  4. если хаб не доступен, то сервер переходит в неактивное состояние. на экран и в лог выдается сообщение о полученной ошибке.
  5. хаб сверяет переданный ид компьютера и руид организации с информацией в GD_WEBHUB. Если сервер не прописан то возвращается соответствующий код. Сервер предприятия выдает на экран и в лог сообщение.
  6. хаб регистрирует

Мобильное приложение

Если адрес прописан пользователем непосредственно или используется алиас, прошитый в коде, то все работает по-старому. Алгоритм, описанный ниже, относится только к связи с использованием хаба.

  1. Приложение помнит адрес, порт и время последнего сеанса связи с сервером предприятия.
  2. Если с момента последней связи прошло времени меньше, чем установлено константой, то пытаемся связаться по сохраненному адресу, не запрашивая хаб.
  3. Если мы не можем связаться с сервером предприятия по сохраненному адресу (тайм аут или иной код ошибки), то не выдаем никаких сообщений пользователю, а идем на хаб за новым адресом.
  4. Если хаб недоступен, выводим соответствующее сообщение об ошибке.
  5. Если хаб вернул код ошибки (алиас неизвестен или отказано в доступе), то выдаем пользователю соответствующее сообщение.
  6. Если мы не можем соединиться с сервером предприятия по полученному от хаба адресу (тайм аут или код ошибки), то выдаем пользователю сообщение.
  7. Важно, чтобы сообщения пользователю позволяли однозначно идентифицировать проблему. Т.е. при жалобе пользователя мы должны сразу идентифицировать что произошло: недоступен хаб, подключение запрещено, недоступен сервер предприятия и т.п.
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты