• 13.1 Введение
  • 13.2 Использование telnet для удаленной регистрации
  • 13.3 Обращение по telnet к заданному порту
  • 13.4 Модель эмуляции терминала в Telnet
  • 13.4.1 Сетевой виртуальный терминал
  • 13.5 Наиболее распространенные типы терминалов
  • 13.5.1 Терминалы ASCII
  • 13.5.2 Конфигурирование раскладки клавиатуры
  • 13.5.3 Терминалы IBM 3270 и 5250
  • 13.6 Варианты
  • 13.6.1 Типы терминалов
  • 13.6.2 Согласование типа терминала VT100
  • 13.6.3 Согласование характеристик терминала 3270
  • 13.7 Управление текстовым клиентом telnet
  • 13.7.1 Важные управляющие последовательности
  • 13.8 Возможности NVT
  • 13.8.1 Набор символов N1VT
  • 13.8.2 Принтер NVT
  • 13.8.3 Взаимодействие клиент/сервер telnet в режиме NVT
  • 13.9 Команды telnet
  • 13.9.1 Сигнал синхронизации
  • 13.9.2 Декодирование наиболее общих команд
  • 13.9.3 Кодирование запросов выбора вариантов
  • 13.9.4 Дополнительные сведения о вариантах
  • 13.10 Применение telnet
  • 13.11 Замечания о безопасности
  • 13.11.1 Аутентификация в telnet
  • 13.12 Замечания о производительности
  • 13.13 X Windows
  • 13.14 Дополнительная литература
  • Глава 13

    Telnet

    13.1 Введение

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

    Протокол сетевого взаимодействия терминалов (terminal networking — telnet) позволил преодолеть различия в оборудовании от разных компаний, и теперь пользователь может связаться с любым хостом сети. Эмуляция терминалов по протоколу telnet стала первым приложением TCP/IP. Этот протокол был разработан как основа для единообразных коммуникаций между приложениями. Поскольку организации понемногу отходили от приложений для терминалов, telnet все больше стал использоваться как комплект инструментов для создания приложений клиент/сервер. Фактически telnet лежит в основе взаимодействий между клиентом и сервером для пересылки файлов, электронной почты и работы с WWW.

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

    13.2 Использование telnet для удаленной регистрации

    Telnet обеспечивает эмуляцию различных типов терминалов, что позволяет осуществить доступ к компьютерам Unix, системам VAX/VMS или большим ЭВМ (мэйнфреймам) компании IBM. Некоторые реализации telnet поддерживают специальную процедуру аутентификации. Примером может служить система Kerberos Массачусетского технологического института (Massachusetts Institute of Technology — MIT). В Kerberos пароли никогда не передаются по сети и используется специальная процедура шифрования. Для запуска аутентификации может потребоваться ввод специальной команды, например kinit. Существуют и более простые процедуры, основанные на взаимной проверке.

    При запуске telnet на многопользовательской системе, возможно, для пользователя будет применяться простой текстовый интерфейс. Использование текстового клиента telnet необычайно просто. Нужно набрать что-нибудь вроде:

    > telnet имя_хоста

    Часто эмуляция терминала IBM 3270 реализована отдельно, и для доступа к хостам IBM потребуется ввести:

    > tn3270 имя_хоста

    Большинство пользователей начинают успешно применять telnet без подробного изучения. Ниже показан пример регистрации (login) в системе tigger компьютера Йельского университета.

    > telnet tigger.jvnc.net

    Trying 128.121.50.145 ...

    Connected to tigger.jvnc.net.

    Escape character is '^]'.


    SunOS UNIX (tigger.jvnc.net)


    SunOS UNIX (pascal)


    login: xxxxx

    Password:

    Last login: Wed Aug 23 19:24:02

    TERM = vt100, PRINTER = lp

    Продукты telnet для настольных компьютеров предлагают дополнительные функциональные возможности, например выбор из списка типа терминала, сохранение всего или части сеанса в файле журнала (log file), конфигурирование раскладки клавиатуры или запись всей информации, необходимой для доступа к часто посещаемым сайтам. Некоторые из этих возможностей показаны на рис. 13.1.

    Рис. 13.1. Приложение telnet для настольной системы (Chameleon)

    13.3 Обращение по telnet к заданному порту

    Порт 23 — стандартный общеизвестный порт для терминального доступа по протоколу telnet. Когда клиент соединяется с портом 23, обычно в ответ следует приглашение для ввода идентификатора регистрации (login ID) и пароля.

    Поскольку telnet был разработан как средство для коммуникаций между приложениями, он доставит клиента к любому порту. Например, в показанном ниже диалоге мы соединяемся с популярной службой прогноза погоды Мичиганского университета, которая запускается через порт 3000 и не требует ввода идентификатора регистрации или пароля:

    > telnet madlab.sprl.umich.edu 3000

    Trying 141.213.23.12 ...

    Connected to madlab.engin.umich.edu.

    Escape character is '^]'.


    -------------------------------------------------------------------

    *                     University of Michigan                      *

    *                      WEATHER UNDERGROUND                        *

    -------------------------------------------------------------------

    *                                                                 *

    *          College of Engineering, University of Michigan         *

    *      Department of Atmospheric, Oceanic, and Space Sciences     *

    *                 Ann Arbor, Michigan 48109-2143                  *

    *               comments: ldm@cirrus.sprl.umich.edu               *

    *                                                                 *

    *    With Help from: The National Science Foundation supported    *

    *                         Unidata Project                         *

    *         University Corporation for Atmospheric Research         *

    *                   Boulder. Colorado 80307-3000                  *

    *                                                                 *

    *  Commercial, for-profit users should contact our data provider, *

    * Alden Electronics, 508-366-8851 to acquire their own data feed. *

    *              comments: ldm@cirrus.sprl.umich.edu                *

    *                                                                 *

    -------------------------------------------------------------------

    * NOTE:--> New users, please select option "H" on the main menu:  *

    * H) Help and information for new users                           *

    -------------------------------------------------------------------

    Press Return for menu, or enter 3 letter forecast city code:

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

    13.4 Модель эмуляции терминала в Telnet

    Как показано на рис. 13.2, пользователь с реального терминала взаимодействует с локальной клиентской программой telnet. Эта программа принимает введенные с клавиатуры символы, интерпретирует их и выводит результат на пользовательский экран в том виде, в каком он должен выглядеть на эмулируемом терминале.

    Рис. 13.2. Клиент и сервер в Telnet

    Клиент telnet открывает соединение TCP с сервером telnet через общеизвестный порт 23. Сервер взаимодействует с приложением и помогает эмулировать исходный терминал.

    13.4.1 Сетевой виртуальный терминал

    Для работы во время сеанса обе стороны предварительно обмениваются информацией по очень простому протоколу сетевого виртуального терминала (Network Virtual Terminal — NVT).

    Протокол NVT моделирует работу уже устаревшей полудуплексной клавиатуры и принтера, работающих в построчном режиме. Характеристики NVT общеизвестны:

    ■ Данные состоят из 7-разрядных символов US-ASCII, дополненных до 8 бит начальным нулем.

    ■ Данные пересылаются построчно.

    ■ Каждая строка завершается комбинацией символов ASCII для возврата каретки (Carriage Return — CR) и перевода строки (Line Feed — LF).

    ■ Байты с начальным битом, равным 1 (с наибольшим весом), используются как коды команд.

    ■ Протокол работает в полудуплексном режиме. После отправки строки клиент переходит к ожиданию данных от сервера. Сервер посылает данные, а затем команду Go Ahead (продолжить), указывающую клиенту на возможность отправки следующей строки.

    13.5 Наиболее распространенные типы терминалов

    Обычно клиент и сервер остаются в режиме NVT очень короткое время — пока не согласуют между собой тип эмулируемого терминала (например, ASCII VT100 или IBM 3270).

    За годы существования telnet в этот протокол были добавлены многие типы терминалов.

    13.5.1 Терминалы ASCII

    Терминалы ASCII используются с Unix и компьютерами VAX компании Digital Equipment Corporation. Эти терминалы обеспечивают:

    ■ Удаленную эхо-печать (remote echoing) каждого символа. Т.е. каждый посланный удаленному хосту символ возвращается назад, до того как будет отображен на экране пользователя (это приводит к существенной нагрузке на сеть).

    ■ Полнодуплексный обмен. Поток символов одновременно передается в обоих направлениях. Серверу не требуется посылать управляющий код Go Ahead.

    ■ Поддержку интерактивных полноэкранных приложений (это также существенно загружает сеть).

    ■ Набор символов ASCII больше набора символов NVT.

    Основные характеристики терминалов ASCII определены в стандартах ANSI Х3.64, ISO 6429 и ISO 2022. Многие модели терминалов ASCII имеют некоторые дополнительные возможности (например, ANSI, VT52, VT100, VT220, TV1950, TV1955 и WYSE50). Для регистрации с удаленных компьютеров Unix наиболее часто эмулируется терминал VT100.

    13.5.2 Конфигурирование раскладки клавиатуры

    Клавиатуры компьютеров PC или Macintosh не идентичны клавиатурам терминалов VT100 или 3270. Приложения telnet обычно обеспечивают способ конфигурирования отдельных клавиш клавиатуры или управляющих комбинаций клавиш для выполнения функций, доступных на клавиатуре эмулированных систем. Например, с терминалом VTXXX возникает проблема из-за того, что не стандартизирована клавиша удаления последнего введенного символа. Некоторые терминалы используют для этого клавишу Backspace, а другие — Del.

    Для систем Unix можно настроить клавиатуру эмулируемого терминала через элементы конфигурационного файла /etc/termcaps. Приложение Chameleon (для работы с telnet в среде Windows) обеспечивает более простой способ такой настройки (см. рис. 13.3). В конфигурационном экране этого приложения можно перетаскивать мышью клавиши с верхнего изображения клавиатуры на нижнее, отражающее соответствующую клавиатуру PC. Например, если нужно, чтобы клавиша Backspace на PC формировала в telnet код клавиши Del терминала VT100, достаточно перетащить клавишу Del верхнего изображения на клавишу Backspace нижнего изображения клавиатуры.

    Рис. 13.3. Конфигурирование клавиатуры перетаскиванием мышью

    13.5.3 Терминалы IBM 3270 и 5250

    Большие ЭВМ компании IBM поддерживают работу сотен или тысяч интерактивных терминалов. Многие годы для этого использовались терминалы IBM 3270, лицензированные данной компанией. Они были специально оптимизированы для приложений обработки данных.

    Терминалы IBM 3270 работают в блочном режиме, в котором пользователь каждый раз получает целый экран данных. Когда он нажимает клавишу ENTER или другую функциональную клавишу, на хост пересылается содержимое всего экрана. Клавиатура блокируется, а хост начинает обработку полученных данных. Затем хост отправляет обратно один или несколько экранов данных. Завершив пересылку, хост разблокирует клавиатуру терминала. Терминалы IBM 3270 имеют следующие характеристики:

    ■ 8-разрядные коды EBCDIC

    ■ Полудуплексный режим взаимодействия

    ■ Блочный метод обмена

    Для доступа к компьютерам AS/400 применяются терминалы IBM 5250, имеющие подобные характеристики.

    13.6 Варианты

    Характеристики эмуляции терминала устанавливаются с помощью обмена командами согласования вариантов работы telnet. Любая сторона может запросить от партнера выполнения (команда DO) одного из вариантов, например эхопечати каждого символа. Партнер выполняет такую команду или отклоняет ее. Любая сторона может по желанию (команда WILL) запросить исполнение определенного варианта, а партнер — разрешить или запретить эти действия.

    Существующие четыре пары запросов/ответов используются в процессе согласования характеристик обмена:

    DO (код варианта) Запрос от партнера на выполнение операции.
    WILL (код варианта) Согласие партнера. Запрашиваемый вариант согласован.
    DO (код варианта) Запрос от партнера на выполнение операции.
    WON'T (код варианта) Отказ партнера. Состояние обмена не меняется.
    WILL (код варианта) Указывает на желание начать операцию.
    DO (код варианта) Согласие партнера. Запрашиваемый вариант согласован.
    WILL (код варианта) Указывает на желание начать операцию.
    DONT (код варианта) Отказ партнера. Состояние обмена не меняется.
    WON'T (код варианта) Подтверждение сохранения текущего состояния обмена.

    При запуске соединения между партнерами производится обмен множеством сообщений. Иногда согласование варианта работы происходит и в середине сеанса. Некоторые сигналы выбора варианта начинают дополнительное согласование (subnegotiations), с обменом соответствующей информацией.

    Что происходит, когда обе стороны отказываются от каждого запроса выбора варианта? Ответ прост — сеанс остается в режиме NVT.

    13.6.1 Типы терминалов

    Очень важен выбор типа терминала (Terminal Type). При этом происходит дополнительное согласование. Клиент посылает WILL TERMINAL TYPE, сообщая серверу типы терминалов, которые он может эмулировать. При желании ознакомиться с этой информацией сервер отвечает: DO TERMINAL TYPE.

    Далее при дополнительном согласовании сервер запросит у клиента указать один из типов терминала, которые может эмулировать клиент. Клиент ответит сообщением установленного формата. Сервер продолжит запросы, пока не найдет в ответах клиента нужного типа терминала или пока не закончится список доступных для эмуляции клиентом типов терминалов. Допустимые типы терминалов определены в RFC Assigned Numbers: это могут быть DEC-VT100, HP-2648 или IBM-3278-2.

    13.6.2 Согласование типа терминала VT100

    В приведенном ниже примере диалога мы запустили сеанс telnet и ввели команду toggle options (переключение варианта), указывающую telnet на отображение операций по согласованию параметров. Команда open используется для запуска регистрации. Партнеры согласовывают между собой эмуляцию терминала ASCII VT100, выбирая следующие характеристики:

    ■ Сервер не будет посылать сообщений Go Ahead, поскольку сеанс работает в полнодуплексном режиме.

    ■ Используется дополнительное согласование типа терминала для указания на эмуляцию определенной модели терминала ASCII.

    ■ Сервер будет выполнять эхо-печать всех символов от клиента.

    Ни одна из сторон не обязана ожидать ответа на запрос перед посылкой другого запроса. Согласующая сторона может отвечать на запросы в иной последовательности, чем они были отправлены. В результате иногда нужно распутать серию сообщений о согласовании, прежде чем станет понятна последовательность выполнения операций.

    > telnet

    telnet> toggle options

    Will show option processing.


    telnet> open cantor.cs.yale.edu

    Trying 128.36.12.26 ... Connected to cantor.cs.yale.edu.

    Escape character is '^]'.


    SENT do SUPPRESS GO AHEAD

    SENT will TERMINAL TYPE (ответ)

    RCVD do TERMINAL TYPE (без ответа)

    RCVD will SUPPRESS GO AHEAD (без ответа)

    RCVD will ECHO (ответ)

    SENT do ECHO (ответ)


    login:

    13.6.3 Согласование характеристик терминала 3270

    Аналогичный обмен происходит при установке эмуляции типа терминала IBM 3270. Показанный ниже диалог представляет согласование регистрации на хосте IBM VM с терминала 3270. В этом примере удаленный хост выводит на экран сведения для дополнительного согласования при установке типа терминала. Партнеры согласовывают между собой эмуляцию терминала IBM 3278 Model 2 с выбором следующих характеристик:

    ■ Дополнительное согласование типа терминала специфицирует для терминала 3270 вариант "3278 модель 2".

    ■ Клиент и сервер запрашивают вариант END OF RECORD, чтобы установить для терминала 3270 блочный режим.

    ■ Обе стороны соглашаются использовать 8-разрядные двоичные данные для представления потока данных терминала 3270.

    > tn3270


    tn3270> toggle options

    Will show option processing.


    tn3270> open uoft.utoledo.edu

    Trying...

    Connected to uoft.utoledo.edu.

    RCVD do TERMINAL TYPE (ответ)

    SENT will TERMINAL TYPE (без ответа)

    Received suboption Terminal type - request to send.

    Sent suboption Terminal type is IBM-3278-2.

    RCVD do END OF RECORD (ответ)

    SENT will END OF RECORD (без ответа)

    RCVD will END OF RECORD (ответ)

    SENT do END OF RECORD (ответ)

    RCVD do BINARY (ответ)

    SENT will BINARY (без ответа)

    RCVD will BINARY (ответ)

    SENT do BINARY (ответ)


    RUNNING

    13.7 Управление текстовым клиентом telnet

    Время от времени требуется осуществить взаимодействие с текстовым клиентом telnet и вывести или установить его параметры. Локальные команды конкретной реализации можно выяснить, если запустить telnet и напечатать "?" или "help".

    > telnet


    telnet> ?

    Commands may be abbreviated. Commands are:


    Close   close current connection

    Display display operating parameters

    Mode    try to enter line-by-line or character-at-a-time mode

    Open    connect to a site

    Quit    exit telnet

    Send    transmit special characters ('send ?' for more)

    Set     set operating parameters ('set ?' for more)

    Status  print status information

    Toggle  toggle operating parameters ('toggle ?' for more)

    Z       suspend telnet

    ?       print help information

    Как только пользователь попадает в окружение telnet, для соединения с удаленным хостом применяется команда open.

    telnet> open plum.math.yale.edu

    Trying 130.132.23.16 …

    Connected to plum.math.yale.edu.

    Escape character is '^]'.


    login: xxxxxxxx

    Password: xxxxxxxx

    Last login: Sat Dec 28 06:30:44 from golem.cs.yale.ed

    Sun UNIX 4.2 Release 3.4 (Plum-EGP) #3: Tue Aug 2 10:25:24 EDT 1988

    *********************************************************

    *                                                       *

    * Welcome to the Yale Mathematics Department's Fabulous *

    *                       ** Plum **                      *

    *********************************************************

    You have mail.

    13.7.1 Важные управляющие последовательности

    Как пользователь может изменить характеристики активного сеанса или прервать его? Одна комбинация управляющих клавиш всегда резервируется для операции перехода в командный режим telnet. По умолчанию такой последовательностью обычно бывает CONTROL и ] (иногда записывается как ^]). Эта esc-последовательность может быть переопределена пользователем. Вспомним, что после открытия соединения с plum.math.yale.edu были выведены три строки, одна из которых указывала используемый символ Esc (отмена):

    Escape character is `^]'.

    После вывода этой строки диалог был продолжен. Ввод esc-последовательности позволяет вывести приглашение telnet. Теперь можно узнать текущее состояние сеанса:

    ^]

    telnet> status

    Connected to plum.math.yale.edu.

    Operating in character-at-a-time mode.

    Escape character is `^]'.

    Выполнив эту команду, сеанс возвращается в режим эмуляции терминала.

    Для ввода следующей команды управления нужно опять воспользоваться esc-последовательностью.

    Запросим вывод текущих атрибутов сеанса telnet

    ^]

    telnet> display

    will flush output when sending interrupt characters.

    won't send interrupt characters in urgent mode.

    won't map carriage return on output.

    won't recognize certain control characters.

    won't process ^S/^Q locally.

    won't turn on socket level debugging.

    won't print hexadecimal representation of network traffic. won't show option processing.

    [^Е] echo.

    [^]] escape.

    [^?] erase.

    [^0] flushoutput.

    [^С] interrupt.

    [^U] kill.

    [^\] quit.

    [^D] eof.

    13.8 Возможности NVT

    В следующих разделах мы подробно исследуем структуру telnet и изучим возможности, которые он может предоставить разработчику приложений клиент/сервер.

    По окончании согласования параметров сеанса отдельные варианты эмуляции терминала могут обеспечивать большой набор символов и графических значков для взаимодействия между пользователем и приложением.

    Однако, когда telnet используется для создания приложений клиент/сервер, все взаимодействия или большая их часть происходят в режиме NVT. Рассмотрим характеристики этого режима более подробно.

    13.8.1 Набор символов N1VT

    Пересылаемые во время сеанса NVT октеты представляют собой символы USASCII и команды telnet. Существует 128 символов USASCII. Из них: 95 — доступные для отображения буквы, числа, символы и знаки препинания; 33 — управляющие символы ASCII (например, горизонтальная табуляция). Коды USASCII разработаны как 7-разрядные. Символы USASCII передаются как октеты со старшим битом, равным 0.

    13.8.2 Принтер NVT

    В течение основного сеанса NVT сервер telnet посылает алфавитно-цифровые и управляющие символы на клиентский принтер NVT, т.е. на экран терминала пользователя. Вывод на экран ограничен 95 символами USASCII, соответствующими кодам ASCII от 32 до 126.

    Для управления экраном клиента серверу доступно небольшое подмножество управляющих символов (см. таблицу 13.1). В таблице коды ASCII представлены десятичными числами.


    Таблица 13.1 Управление принтером MVT

    Описание Код ASCII
    Null (Пустой, используется как заполнитель) 0
    Bell (Звонок для вывода звукового сигнала) 7
    Backspace (На шаг назад, перемещение на один символ влево) 8
    Horizontal tab (Горизонтальная табуляция) 9
    Line feed (Перевод строки) 10
    Vertical tab (Вертикальная табуляция) 11
    Form feed (Перевод формата, перемещение к следующей странице) 12
    Carriage return (Возврат каретки) 13

    13.8.3 Взаимодействие клиент/сервер telnet в режиме NVT

    Вспомним, что взаимодействие NVT является полудуплексным — клиент или сервер telnet в каждый момент времени производит одно из следующих действий:

    ■ После того как клиент telnet послал строку, завершенную CR и LF, управление передается серверу.

    ■ Сервер посылает клиенту строки, и в конце каждой выведенной строки он использует CR и LF для перехода к позиции следующей строки на дисплее клиента.

    ■ Клиент telnet принимает вывод от сервера и может начать собственный вывод данных только после получения от сервера управляющего кода Go Ahead.

    Отметим, что пересылаемые в сеансе telnet строки завершаются символами CR и LF независимо от того, какие локальные символы перевода строки используют хосты клиента и сервера.

    13.9 Команды telnet

    До широкого распространения сетей терминалы подключались непосредственно к компьютерам. Нажатие пользователем клавиши клавиатуры немедленно интерпретировалось операционной системой локального компьютера.

    Существовали специальные клавиши управления, которые активизировали операционную систему или какую-то системную команду. Например, пользователь терминала ASCII мог одновременно нажать клавиши CONTROL и С (записывается как ^C) для указания операционной системе на завершение работы текущего приложения.

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

    Команды telnet отмечаются байтом "интерпретировать как команду" (Interpret As Command — IAC), сопровождаемым одним или несколькими байтами кодов:

    Байт Interpret As Command равен X'FF (десятичное 255).

    Клиент telnet посылает серверу последовательности команды, чтобы указать на выполнение различных функций, например:

    Прерывание (Break - BRK) Послать сигнал "прерывание" или "внимание" процессу удаленного приложения.
    Прервать процесс (Interrupt Process — IP) Сигнал для удаленной операционной системы об остановке выполнения текущей удаленной прикладной программы (например, остановить зацикленную программу).
    Прервать вывод (Abort Output — AO) Запросить у серверного приложения не посылать оставшиеся данные текущей операции.
    Вы здесь? (Are You There? — AYT) Проверить, что сервер действительно работает.
    Стереть символ (Erase Character — EC) Пользователь обычно исправляет ошибочно введенный в строке символ с помощью клавиш Backspace или Del. В режиме посимвольной пересылки ASCII ошибочный элемент данных уже был послан удаленному приложению, поэтому требуется ввод специальной команды ЕС.
    Стереть строку (Erase One — EL) Запрос к удаленному приложению на уничтожение текущей строки.

    Команды могут быть посланы даже после согласования параметров соединения, когда партнеры больше не находятся в режиме NVT. Но предположим, что партнеры согласовали обмен двоичными данными. Как будет тогда распознаваться последовательность символов команды? Ответ состоит в том, что всякий раз последовательность X'FF, возникая в данных; удваивается при отправке. Приемник устраняет дублирование. Когда он получает одиночный X'FF (или нечетное их число), становится ясно, что поступила команда.

    Легко понять, как команды telnet должны использоваться разработчиком приложений клиент/сервер. Например, результатом щелчка мышью на кнопке STOP браузера WWW должна стать отправка команды Abort Output, завершающая загрузку большого по размеру изображения или документа.

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

    13.9.1 Сигнал синхронизации

    Для некоторых функций (например, Interrupt Process) включение команды в общий поток данных не приводит к нужным результатам. Когда реальный терминал посылает сигнал прерывания, хост операционной системы получает этот сигнал сразу и быстро останавливает текущее приложение.

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

    Клиент хочет быстро обратить внимание сервера на эту команду и должен сообщить ему. "Отбросить все уже буферированные символы, за исключением команд". Для этого клиент посылает серверу специальный сегмент TCP, называемый сигналом синхронизации (Synch signal).

    ■ Такой сегмент маркирован как срочные данные (Urgent Data).

    ■ Сервер будет отбрасывать всю информацию от клиента, за исключением команд, пока не достигнет специального командного кода, называемого меткой данных (Data Mark — DM).

    ■ DM маркирует место, где сервер должен прекратить отбрасывание данных.

    Когда поступает сегмент сигнала синхронизации, сервер извлекает из потока данных команды NVT, отбрасывая все остальное, пока не дойдет до Data Mark. Затем он переходит к выполнению извлеченных команд, а далее возобновляется нормальная обработка данных (стоящих после Data Mark).

    13.9.2 Декодирование наиболее общих команд

    В таблице 13.2 приведен список акронимов для некоторых наиболее распространенных команд (вместе с десятичными значениями их кодов). Каждой команде должен предшествовать октет 255 (X'FF), когда она пересылается по соединению telnet.


    Таблица 13.2 Коды команд telnet

    Акроним Команда Код
    EOF End of File (конец файла) 236
    SUSP Suspend Current Process (приостановить текущий процесс) 237
    ABORT Abort Process (аварийное завершение процесса) 238
    EOR End of Record (конец записи) 239
    NOP No Operation (нет операции) 241
    DM Data Mark (метка данных) 242
    BRK Break (прерывание) 243
    IP Interrupt Process (прерывание процесса) 244
    AO Abort Output (отменить вывод) 245
    AYT Are You There (вы здесь?) 246
    EC Erase Character (стирание символа) 247
    EL Erase Line (стирание строки) 248
    GA Go Ahead (продолжить) 249

    13.9.3 Кодирование запросов выбора вариантов

    Запросы выбора вариантов кодируются тремя байтами: байтом IAC, октетом запроса и кодом варианта. Например, десятичное представление последовательности для WILL TERMINAL TYPE выглядит так:

    IAC WILL TERMINAL TYPE
    255 251 24

    Это один из вариантов для дополнительного согласования. Далее должны следовать:

    СЕРВЕР:

    IAC SB TERMINAL TYPE SEND IAC SE
    255 250 24 1 255 240

    КЛИЕНТ:

    IAC SB TERMINAL TYPE IS DEC-VT220 IAC SE
    255 250 24 0 DEC-VT220 255 240

    В таблице 13.3 показаны десятичные значения для кодов обычных и дополнительных согласований. Приведены также коды для часто используемых вариантов. Параметры дополнительного согласования и коды добавочных вариантов определены во многих RFC, относящихся к параметрам telnet (эти RFC перечислены в документе Assigned Numbers).


    Таблица 13.3 Коды согласования и выбора вариантов

    Коды согласования
    Запрос Код
    WILL (будет) 251
    WONT (не будет) 252
    DO (выполнить) 253
    DON'T (не выполнять) 254
    SB (Start Subnegotiation, начало дополнительного согласования) 250
    SE (End Subnegotiation, конец дополнительного согласования) 240
    Примеры кодов вариантов
    Command Option (вариант команды) Код
    Transmit Binary (пересылка двоичных данных) 0
    Echo (эхо-печать) 1
    Suppress Go Ahead (подавление сообщения Go Ahead) 3
    Status (состояние) 5
    Timing Mark (метка времени) 6
    Output Line Width (длина выходной строки) 8
    Output Page Size (размер выводимой страницы) 9
    Extended ASCII (расширенный набор ASCII) 17
    Data Entry Terminal (терминал ввода данных) 20
    Terminal Type (тип терминала) 24
    End of Record (конец записи) 25
    Window Size (размер окна) 31
    Terminal Speed (скорость терминала) 32
    Remote Flow Control (удаленное управление потоком) 33
    Linemode (построчный режим) 34
    Authentication (аутентификация) 37
    Encryption (шифрование) 38
    Extended Options List (расширенный список вариантов) 255

    13.9.4 Дополнительные сведения о вариантах

    Более тридцати RFC детально рассматривают различные варианты, предоставляющие специальные возможности для telnet. Среди них можно выделить:

    ■ Способность опрашивать партнера о текущем состоянии параметров. Запрос и ответ о состоянии партнера переносятся при дополнительном согласовании.

    ■ Согласование размера окна. Партнеры соглашаются, что клиент может дополнительно согласовать высоту и ширину окна, которое будет использоваться в сеансе telnet. Эта возможность особенно полезна для запуска сеанса telnet в системах с многооконным интерфейсом.

    Реализациям не требуется поддерживать все или многие из определенных в стандартах вариантов. Два из них, используемые при эмуляции терминала 3270, имеют специальные возможности:

    ■ Transmit Binary (пересылка двоичных данных). Начало отправки 8-разрядных двоичных данных (сеансы с терминалом IBM 3270 проводятся в двоичном режиме).

    ■ End of Record (конец записи). После получения DO END-OF-RECORD партнер использует стандартные управляющие коды IAC 239 для маркировки конца записи в общем потоке данных.

    Вспомним, что даже после перехода в двоичный режим партнеру можно послать команды telnet, удваивая esc-символы IAC.

    13.10 Применение telnet

    С точки зрения пользователей, желающих получить доступ к приложениям через эмуляцию терминалов ASCII или IBM, наиболее важным является способность telnet выполнять согласование и эмуляцию. Но разработчикам прикладного программного обеспечения основанный на NVT telnet предлагает достаточно бедный набор средств для реализации функций клиент/сервер, которые трудно и утомительно воспроизводить в программах. Мы уже знаем, что базовыми возможностями NVT являются:

    ■ Проверка активности равного приложения

    ■ Сигнализация прерывания

    ■ Запрос на прерывание удаленного текущего процесса

    ■ Использование сигнала синхронизации для указания равному приложению на отбрасывание всех данных, кроме команд telnet

    ■ Указание партнеру на отмену ожидаемой пересылки данных из буфера

    13.11 Замечания о безопасности

    Сегодня в локальных сетях повсеместно используются широковещательные рассылки. Многие организации используют их даже в магистральных сетях FDDI.

    Пользователям PC или Macintosh очень легко найти программное обеспечение для превращения настольной системы в шпиона, который может подслушивать трафик локальной сети. Такие средства имеют многие станции Unix, владельцам которых нужно только разрешить их использование.

    Традиционно пользователь доказывает свои права, посылая хосту секретный пароль. Но в локальной сети с широковещательной рассылкой передача идентификатора и пароля по сети не обеспечивает для них никакой защиты. Любой может подслушать эти сведения.

    Не помогает и шифрование пароля. Взломщику даже не нужно будет расшифровывать пароль, а потребуется только переслать его в том же виде и таким путем получить доступ к чужим регистрационным данным. Все это свидетельствует о необходимости безопасного механизма аутентификации (установление подлинности).

    13.11.1 Аутентификация в telnet

    В telnet реализована аутентификация, позволяющая партнерам согласовать один из вариантов этого механизма. Последовательность действий следующая:

    ■ Сервер посылает DO AUTHENTICATION

    ■ Клиент отвечает WILL AUTHENTICATION

    С этого момента вся информация будет пересылаться в сообщениях дополнительного согласования.

    ■ Сервер посылает сообщение, содержащее список пар аутентификации. Каждая пара включает тип аутентификации (который нужно использовать) и модификатор, обеспечивающий дополнительную информацию (например, сведения об аутентификации будут посылаться только клиентом или одновременно — клиентом и сервером).

    ■ Клиент отправляет простой идентификатор пользователя (userid) или идентификатор регистрации.

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

    ■ Сервер принимает аутентификацию.

    ■ Если выбрана взаимная аутентификация, клиент запрашивает от сервера его аутентификационные данные.

    ■ Сервер отвечает, сообщая свои аутентификационные данные.

    Типы аутентификации зарегистрированы в IANA и имеют числовые коды. Текущее соответствие между кодами и типами таково:

    Тип KERBEROS_V4 KERBEROS_V5 SPX RSA LOKI SSA
    Код 1 2 3 6 10 11

    В существующих реализациях все большую популярность приобретают взаимные проверки (challenge handshakes) и защитные идентификационные карты.

    13.12 Замечания о производительности

    Telnet не обеспечивает хорошей производительности. При эмуляции терминала ASCII (например, VT100) telnet очень неэффективен. Посланные клиентом сегменты часто содержат только один или несколько символов. Каждый символ нужно вернуть назад для эхо-печати. Пересылка даже небольшого количества данных приводит к серьезной загрузке сети.

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

    Сегодня многие новые приложения построены для доступа к информации через стандартного клиента, подобного браузеру WWW. Разработчик приложения должен создать интерфейс между новым приложением и сервером WWW. Только тогда пользователи смогут работать с единообразным и знакомым интерфейсом.

    13.13 X Windows

    Еще недавно многие приложения разрабатывались для стандартного интерфейса X-терминала, а не для лицензированных терминалов. Система X Windows была разработана и реализована в Массачусетском технологическом институте для одновременного запуска пользователем нескольких приложений в окнах графического дисплея. Не важно, где размешаются приложения. Каждое из них фактически может выполняться на различных компьютерах сети.

    Протокол X Windows обеспечивает единообразный способ управления вводом и выводом из приложения. Поэтому приложения не зависят от аппаратных средств, операционной системы и типа сети. Современные реализации этого протокола работают поверх стека TCP/IP.

    Протокол может выполняться на рабочих станциях или на многопользовательском компьютере, который управляет графическими дисплеями. Существует множество специализированных программ для X Windows. Протокол этой системы очень широко распространен, и для него имеются высокофункциональные прикладные инструменты разработки. Часто эти средства встроены в продукты TCP/IP.

    При использовании X Windows проявляются отдельные недостатки, связанные с необходимостью пересылки большого объема информации для вывода на экран. Это приводит к большой нагрузке на сеть.

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

    13.14 Дополнительная литература

    RFC 854 определяет протокол telnet. Различные типы терминалов рассмотрены в: RFC 1205 для эмуляции 5250; RFC 1096 для размещения на дисплеях X-терминалов; RFC 1053 для параметров X.3 PAD; RFC 1043 для терминалов ввода данных; RFC 1041 для режимов терминала 3270. Выбор параметров терминала разъясняется в RFC 1091, а варианты размеров окна можно найти в RFC 1073. RFC 1184 описывает характеристики построчного режима telnet. Документы RFC с 855 по 861 рассматривают другие часто используемые параметры эмуляции.

    RFC 1416 посвящен аутентификации в telnet. RFC 1510 представляет службу аутентификации Kerberos Network Authentication Service.








    Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Наверх