TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Шрифт:
13.8 Возможности NVT
В следующих разделах мы подробно исследуем структуру telnet и изучим возможности, которые он может предоставить разработчику приложений клиент/сервер.
По окончании согласования параметров сеанса отдельные варианты эмуляции терминала могут обеспечивать большой набор символов и графических значков для взаимодействия между пользователем и приложением.
Однако, когда telnet используется для создания приложений клиент/сервер, все взаимодействия или большая их часть происходят в режиме NVT. Рассмотрим характеристики этого режима более подробно.
13.8.1 Набор символов N1VT
Пересылаемые во время
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 мог одновременно
Во время сеанса 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 в качестве инструментального средства разработки команды могут быть посланы в любом направлении обмена.