Подсистема удалённого доступа Trumpet Winsock: плюсы и минусы
Наверное, все мы знаем, как неприятно каждый раз переустанавливать Windows 95 (98) только из-за того, что в "великой могучей" системе по каким-то неведомым причинам опять отказывается работать пресловутая подсистема удалённого доступа, из-за чего оказывается невозможен выход в Internet... Все мы поливаем за это Microsoft словами, которые корпорация, безусловно, заслуживает. В этой статье описаны плюсы и минусы единственного (известного автору) TCP/IP-стека для Win32, представляющего на сегодняшний день реальную альтернативу недоделанной продукции MS. Этим материалом автор надеется не только склонить общественное мнение в сторону, противоположную "One Microsoft way", но и сподвигнуть мающихся от безделья отечественных программистов на написание нормальных аналогов описанной программы.
Сразу следует сказать, что подсистема удалённого доступа Trumpet Winsock (веб-сайт разработчика - http://www.trumpet.com.au/) относится к классу shareware ($30) и регистрируется через Internet. Насколько автор может судить по своему опыту, разработчики Trumpet Winsock не читают bug report'ы, поступившие от незарегистрировавшихся пользователей, а также не оказывают им никакой технической поддержки. Такое наплевательство уже вызывает сомнения в разумности траты денег на программу и, в особенности, занесения своих данных в архив фирмы Trumpet (что при регистрации неизбежно).
Теперь - что касается впечатлений от работы. Trumpet Winsock представляет собой реализацию протоколов TCP/IP (а также протокола IPv6) и подсистемы удалённого доступа для них. То есть, если вам не нужно входить в локальную сеть какой-либо организации, работающую по протоколам IPX, SPX или NetBEUI, а требуется только подключиться к компьютеру провайдера и выйти в Internet (используются протоколы TCP/IP и UDP) Winsock хватит сполна, и необходимости в использовании компонентов "Сети" MS нет ни малейшей. Нужно только, чтобы на Вашем компьютере были нормально установлены аппаратный драйвер модема, а также система MS TAPI (Windows Telephony API).
В статье рассматривается случай подключения к Internet через модемное, Dial-up, соединение. Не исключено, что Trumpet Winsock будет работать и в случае подключения к Internet через линию ISDN, если аппаратный драйвер ISDN-адаптера установлен правильно - пока возможности проверить это у автора статьи не было.
Но перейдём ближе к делу. Запустив скачанный архив Trumpet Winsock (последняя доступная автору статьи версия - 5.0c, расположена по адресу: ftp://ftp.trumpet.com/winsock/), Вы установите собственно комплекс Winsock, позволяющий использовать протокол TCP/IP, реализованный Trumpet, а также программу-dialer *. Стоит отметить, что в отличие от детища Microsoft, Trumpet Winsock не засоряет системные каталоги многими мегабайтами файлов непонятного предназначения и занимает всего около 1,5 Мб места на диске. Не замусоривается тотальным образом и реестр Windows, что происходит в случае установки Microsoft'овского "добра" (хотя ключи туда, к сожалению, всё-таки добавляются).
Стоит также отметить, что хотя программа установки Trumpet Winsock и переименовывает файлы WINSOCK.DLL и WSOCK32.DLL в каталогах Windows, перед установкой не лишним будет убедиться, что больше файлов с такими именами в рабочих каталогах нет. Когда файлы будут скопированы, запустится программа настройки Trumpet TCP Manager и вам будет предложено ввести параметры соединения с Internet.
* В справке, кстати, приведены примеры использования для различных профилей различных "интерфейсов" в аппаратном смысле этого слова - сетевых карт, модемов, прямого соединения и т.д.
Вот здесь и проявляется одно из главных преимуществ Trumpet Winsock: все параметры, касающиеся доступа к Internet, вводятся рядом, в одном окошке на вкладке TCP/IP settings. Забудьте о необходимости копаться в разбросанных по разным местам "панелях управления" и "свойствах системы"! Замечу, что никаких дополнительных знаний по сравнению с теми, что указываются в разных местах Windows, вам не потребуется. В случае модемного соединения Dial-up нужно знать номер телефона провайдера, свои login и пароль, а также IP-адрес(а) DNS-сервера(ов); всё это вводится рядом. Подтверждение - нижняя кнопка Apply.
Флажок automatic redial означает, понятно, восстановление оборвавшегося соединения путём перезвона, а значение Max redials - количество попыток (0 - не восстанавливать связь после обрыва). Ниже идёт меню, в котором можно задать четыре варианта действий в случае запроса какой-нибудь программой Internet-ресурсов; лучше всего задать no automatic login, чтобы программы не соединялись с сетью без Вашего ведома. В поле Session timeout введите количество минут, при неактивности соединения в течение которых оно будет отключено.
Кнопка Configure рядом обеспечивает настройку параметров модема; в поле ниже можно указать значение MTU, размера сетевого пакета, а нажатием кнопки Advanced вызывается меню настройки других "тонких" параметров TCP/IP-стека, таких как MSS и RWIN (см. статью А. Удалова о настройке TCP/IP-стека в 223-м номере журнала "Компьютерра"). Для изменения всего этого вам теперь не понадобится лазить по реестру Windows или приобретать различные "примочки" (кстати, они далеко не бесплатны и иногда стоят дороже, чем сам Trumpet Winsock) для улучшения настроек Microsoft'овского TCP/IP-стека в полуавтоматическом режиме. А ведь при правильной настройке TCP/IP-стека выигрыш в скорости может составить (по данным всё того же А. Удалова) до 50 процентов! Для подтверждения сделанных изменений нажмите верхнюю кнопку Apply (не мешает перед этим уточнить оптимальные параметры у провайдера, оговорив, что Вы используете Trumpet Winsock 5.X).
Чтобы ввести параметры нескольких разных соединений, нужно создать несколько "профилей"; меню управления "профилями" (создание нового/удаление ненужного) появится, если щёлкнуть правой кнопкой мыши по строке в самом верху окна настройки. Вообще сначала неочевидный для пользователя щелчок правой кнопкой мыши в конфигураторе и dialer'е Trumpet Winsock используется во многих важных местах и функционально не продублирован никакими меню или кнопками - это явная недоработка интерфейса.
Возможности широкого конфигурирования - это далеко не всё, что может предложить Trumpet Winsock. На вкладке Trace options имеется 13 (!) флажков, уточняющих, протоколировать или нет те или иные сетевые действия и протоколы. По умолчанию протоколирование ведётся в окно программы, но его можно перенаправить в файл, нажав соответствующую кнопку (что касается программы-dialer'а, то там указать путь к файлу протокола можно двойным щелчком мыши на серую строчку с его именем). Если в свойствах "ярлыка", с помощью которого вызывается Trumpet Dialer, не указан "рабочий каталог", файлы протокола будут создаваться в каталогах, где находятся обращающиеся к Winsock программы. Это, безусловно, является дефектом программы. Однако не будем забывать, что файл протокола PPP, создаваемый средствами "контроллера удалённого доступа" Microsoft, вообще перестаёт обновляться по достижении размера в 262964 байта (точно также обстоят дела с файлом протокола модема)...
На вкладке конфигуратора Utilities можно выполнить функции Ping, TraceRoute и Dig. Суть работы последней функции состоит в проверке существования того или иного www-сервера - программа устанавливает, существуют ли сведения о сервере с заданными функциями и заданным именем на указанном DNS-сервере. Наконец, на вкладке Socket status показываются все открытые программами (логические) соединения. Исключительно полезна функция с говорящим названием Kill, с помощью которой подозрительное или застоявшееся соединение можно "убить", не затрагивая при этом другие; вызывается она щелчком правой кнопкой мыши на соответствующей строке. Полностью остановить работу Winsock можно, нажав здесь же кнопку Stop.
Что касается Trumpet Dialer,
то о нём можно сказать следующее: хороших сторон в нём, как и в dialer'е от
MS, намного меньше, чем плохих. Тем не менее, dialer от Trumpet всё же значительно
превосходит Microsoft'овский. Непосредственно перед набором номера Вы можете
выбрать нужное соединение ("профиль") из развёртывающегося меню вверху;
поддерживаются протоколы PPP, SLIP и CSLIP, даже IPv6, при необходимости можно
ввести свой IP-адрес, если провайдер его фиксировал (странно, что эта настройка
не вынесена в TCP Manager), поддерживается достаточно мощный и хорошо задокументированный
в справке язык для написания скриптов.
Кстати, редактируются эти скрипты с помощью программы "Блокнот" Windows,
так что если на компьютере нет файла NOTEPAD.EXE, соответствующий пункт меню
работать не будет, причём, без вывода всяких предупреждений. Ещё из плохого:
интерфейс, как и у всех dialer'ов, с исключительно неуместными и убогими картинками,
все настройки вызываются с помощью щелчков правой кнопкой мыши в разных частях
окна, справка по F1 не вызывается. Никак не задокументировано и то, что для
пульсового набора, принятого, в частности, в России, перед номером телефона
нужно ввести букву "p".
Реализация протоколирования
в dialer'е от Trumpet выполнена гораздо лучше, чем в "Контроллере удалённого
доступа" от MS. В протоколе указываются имя "профиля", номер
телефона, дата и время начала дозвона, а также установления и прекращения логического
соединения с Internet. Более того, по завершении каждого соединения отдельно
указываются его продолжительность и количество принятых и посланных данных (в
байтах и сетевых пакетах). Однако файлы протокола dialer'а Trumpet Winsock (как,
впрочем, и файл протокола PPP dialer'а от MS) не позволят вам даже примерно
оценить качество сеанса связи. Дело в том, что Trumpet Dialer, по большому счёту,
не оправдывает своего названия, так как не использует прямое обращение к драйверу
модема, а работает, как и большинство Win32-dialer'ов, через дефектную в корне
систему Microsoft TAPI * . В результате этого пользователь оказывается лишён
возможности узнать из его протокола такие важные параметры, как скорость, на
которой было установлено соединение, коэффициент шумов в линии, причина разрыва
связи и т.д. (большинство модемов позволяет узнать эти и другие характеристики
с помощью команды ATI11).
Чтобы получить примерную оценку качества соединения - по скорости, на
которой было установлено соединение - вам придётся сверяться с файлом протокола
модема в каталоге Windows (создание этого файла должно быть разрешено настройками
в свойствах соответствующего устройства).
* Так, система Microsoft TAPI не даёт пользователю полного контроля над командами, посылаемыми модему, потребляет определённую долю системных ресурсов и крайне неудобна в работе. Она не даёт возможности работать с модемом во всех его режимах. Более того, представители Microsoft "забыли" включить TAPI в список переустанавливаемых компонентов (через "Панель управления"-"Установка и удаление программ"-"Установка Windows"), поэтому в случае повреждения или удаления какого-либо её компонента неискушённому пользователю придётся переинсталлировать Windows...
Очевидно, на практике нет ни одного dialer'а, в котором протоколирование было бы реализовано сколько-нибудь удовлетворительно для человека-пользователя. Не исключено, что производители программ таким образом заботятся о провайдерах (от которых в конечном итоге зависят) - провайдерам, конечно, невыгодно ведение их клиентами своей, независимой, статистики...
Существует ещё несколько мелких, но неприятных, проблем. Так, автор не нашёл способа использовать Trumpet Winsock с локальными прокси-серверами, вырезающими рекламу из web-страниц "на лету". Несмотря на то, что подавляющее большинство броузеров, FTP- и mail-клиентов работает с Trumpet Winsock нормально, многие диагностические утилиты (типа NetScanTools или Internet Maniac) при этом функционировать отказываются. Приходится довольствоваться функциями, встроенными в Trumpet TCP manager.
И ещё один момент. Обычно провайдер выделяет клиенту с dialup-подключением динамически назначаемый IP-адрес. Это значит, что в каждом новом сеансе этот адрес может меняться. Trumpet Winsock Dialer иногда этого не учитывает, и при последующих подключениях пытается использовать IP-адрес, выделенный при первом подключении. Как результат - данные из Internet не доходят до пользователя. Проблема решается таким образом: в dialer'е щёлкаем правой кнопкой мыши на выпадающем меню с именем профиля, выбираем из меню пункт Properties, затем вкладку SLIP/PPP и в поле IP Address вводим 0.0.0.0 После этого соединение должно установиться нормально.
В заключение следует ещё отметить, что поскольку Trumpet Winsock и Trumpet Dialer являются пока достаточно нестандартными средствами, Ваши пароли для выхода в Internet в случае его использования не будут такой лёгкой добычей для хакеров, как в случае с "контроллером удалённого доступа" от MS (если только Вы не продублировали их где-то ещё в недрах Windows, например, в настройках e-mail-клиентов)...