[^Е] echo.
[^]] escape.
[^?] erase.
[^0] flushoutput.
[^С] interrupt.
[^U] kill.
[^\] quit.
[^D] eof.
В следующих разделах мы подробно исследуем структуру telnet и изучим возможности, которые он может предоставить разработчику приложений клиент/сервер.
По окончании согласования параметров сеанса отдельные варианты эмуляции терминала могут обеспечивать большой набор символов и графических значков для взаимодействия между пользователем и приложением.
Однако, когда telnet используется для создания приложений клиент/сервер, все взаимодействия или большая их часть происходят в режиме NVT. Рассмотрим характеристики этого режима более подробно.
13.8.1 Набор символов N1VT
Пересылаемые во время сеанса NVT октеты представляют собой символы USASCII и команды telnet. Существует 128 символов USASCII. Из них: 95 — доступные для отображения буквы, числа, символы и знаки препинания; 33 — управляющие символы ASCII (например, горизонтальная табуляция ). Коды USASCII разработаны как 7-разрядные. Символы USASCII передаются как октеты со старшим битом, равным 0.
В течение основного сеанса 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 независимо от того, какие локальные символы перевода строки используют хосты клиента и сервера.
До широкого распространения сетей терминалы подключались непосредственно к компьютерам. Нажатие пользователем клавиши клавиатуры немедленно интерпретировалось операционной системой локального компьютера.
Существовали специальные клавиши управления, которые активизировали операционную систему или какую-то системную команду. Например, пользователь терминала 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 (или нечетное их число), становится ясно, что поступила команда.
Читать дальше