AN006. Использование Device Server Toolkit с брандмауэром Windows (XP/SP2)
О чём эта рекомендация по применению
В этой рекомендации по применению (Application Note) описано, как использовать Tibbo Device Server Toolkit (DST) на компьютерах под Windows XP с Service Pack 2 (XP/SP2). Одно из новшеств SP2 - брандмауэр Windows (Windows Firewall). Если его не настроить правильно, он помешает нормальной работе некоторых функций DST.
Предполагается, что у вас установлен DST версии 3.56 или более поздней. В эту версию внесены изменения, позволяющие работать с DST при включённом брандмауэре Windows.
Содержание:
- Использование режима автообнаружения DS Manager с брандмауэром Windows
- Ручная настройка режима автообнаружения
- Почему для автообнаружения нужно настраивать брандмауэр Windows
- Открытие брандмауэра для соединений передачи данных с DS
Использование режима автообнаружения DS Manager с брандмауэром Windows
Первое, что вы заметите после установки SP2 и включения брандмауэра: DS Manager больше не находит локальные серверы устройств в режиме автообнаружения (режим адресной книги по-прежнему работает нормально). Почему так происходит, объясняется ниже.
Если брандмауэр использует конфигурацию по умолчанию, то при запуске DS Manager (или нажатии Refresh в режиме автообнаружения) появится такое предупреждение:

Это сообщение означает, что брандмауэр Windows обнаружил сетевую активность, которая сейчас не разрешена. Приложение называется «Run DLL as an App», и, как ни странно, именно так Windows видит DS Manager (да, DS Manager - это DLL, но Windows могла бы догадаться о его «настоящем имени»... увы, на это её не хватает). Нажмите Unblock, и DS Manager снова сможет автоматически находить локальные серверы устройств.
Если при запуске DS Manager (нажатии Refresh) предупреждение не появляется, а DS Manager по-прежнему не находит серверы устройств, возможно, брандмауэр не разрешает «исключения» и/или уведомления брандмауэра отключены.
Откройте брандмауэр (Start--> Control Panel--> Windows Firewall) и убедитесь, что флажок Don't allow exceptions снят:

Затем перейдите на вкладку Exceptions и убедитесь, что флажок Display a notification when Windows Firewall blocks a program установлен:

После того как вы «разблокируете» DS Manager, брандмауэр добавит его в список «исключений», то есть программ, трафик которых разрешено пропускать через брандмауэр:

Ручная настройка режима автообнаружения
Того же результата можно добиться, указав брандмауэру, какой порт на компьютере нужно открыть. Для этого перейдите на вкладку Exceptions диалога брандмауэра Windows и нажмите кнопку Add Port... - откроется диалог Edit a port:

Введите в поле Name любое понятное имя (например, «DSMan bcast» - ведь здесь открывается порт для широковещательных запросов автообнаружения DS Manager). В поле Port number введите 65534 - это номер порта, который нужно открыть на компьютере. Наконец, выберите UDP - этот протокол DS Manager использует для поиска серверов устройств в сети. По завершении нажмите OK.
В списке исключений появится новая запись, и DS Manager заработает правильно:

Почему для автообнаружения нужно настраивать брандмауэр Windows
В этом разделе объясняется, почему режим автообнаружения заработает только после правильной настройки брандмауэра Windows, а режим адресной книги не требует никаких изменений в настройках брандмауэра. Если вам это не интересно, смело пропускайте раздел.
В режиме автообнаружения DS Manager ищет серверы устройств в сети, отправляя команду Echo (X) широковещательным UDP-пакетом. Каждое устройство Tibbo, получившее этот пакет, отвечает на него, и DS Manager составляет список доступных серверов устройств по полученным ответам.
Проблема с брандмауэром Windows в том, что он не может связать полученные ответы с широковещательным запросом, отправленным с компьютера. С точки зрения брандмауэра эти ответы - отдельные входящие UDP-«соединения», а по умолчанию брандмауэр блокирует любое входящее соединение, если оно явно не разрешено. Разблокировав «Run DLL as an App» или вручную открыв UDP-порт 65534, вы пропускаете ответы серверов устройств. Порт 65534 - это порт, с которого DS Manager отправляет широковещательные запросы и на который все локальные серверы устройств отправляют ответы.
Вопреки ожиданиям, брандмауэр Windows не мешает работе DS Manager в режиме адресной книги. Дело в том, что в этом режиме DS Manager отправляет команду Echo (X) каждому DS из списка устройств по отдельности (широковещательные запросы не используются вовсе). Когда от серверов устройств приходят ответы, брандмауэр может связать их с запросами, ранее отправленными DS Manager. Брандмауэр считает их исходящими соединениями, установленными программой на компьютере, и не блокирует входящие ответы.
Открытие брандмауэра для соединений передачи данных с DS
Брандмауэр Windows отслеживает все входящие соединения, поэтому если ваш DS должен подключаться к VSP на компьютере (или напрямую к вашему приложению), в брандмауэре нужно открыть конкретный порт, к которому будет подключаться DS.
Например, если известно, что DS будет устанавливать TCP-соединение с VSP «COM3» с портом прослушивания 1001, этот порт нужно «открыть» в брандмауэре. Воспользуйтесь для этого функцией Add port...:

Обратите внимание: открывать порты нужно, только если DS будет подключаться к вашему компьютеру. Если же к DS подключается VSP (или приложение) на компьютере, настраивать брандмауэр не нужно, поскольку брандмауэр не блокирует соединения, исходящие с самого компьютера.