Примеры сетевых топологий

         

Удаленный доступ (Telnet)


Семёнов Ю.А. (ГНЦ ИТЭФ), book.itep.ru

TELNET позволяет пользователю установить TCP-соединение с сервером и затем передавать коды нажатия клавиш так, как если бы работа проводилась на консоли сервера. TELNET (RFC-854, в некоторых реализациях tn) служит для выполнения удаленного доступа к вычислительным ресурсам и базам данных (например, к базам ядерных данных в Вене, Брукхейвене или STN-international в Карлсруэ). Для входа в базу данных или ЭВМ обычно нужна аутентификация (ввод имени-идентификатора пользователя и его слова-пропуска). В некоторых реализациях допускается использование параметров, которые подключают необходимые эмуляторы терминалов.

TELNET предлагает три услуги:

  1. Определяет сетевой виртуальный терминал (NVT - network virtual terminal), который обеспечивает стандартный интерфейс к удаленной системе.

  2. Включает механизм, который позволяет клиенту и серверу согласовать опции обмена

  3. Обеспечивает симметрию соединения, допуская любой программе (например FTP) выступать в качестве клиента

Протокол TELNET позволяет обслуживающей машине рассматривать все удаленные терминалы как стандартные "сетевые виртуальные терминалы" строчного типа, работающие в кодах ASCII, а также обеспечивает возможность согласования более сложных функций (например, локальный или удаленный эхо-контроль, страничный режим, высота и ширина экрана и т. д.). На прикладном уровне над TELNET находится либо программа поддержки реального терминала, либо прикладной процесс в обслуживающей машине, к которому осуществляется доступ с терминала. Формат NTV достаточно прост. Для данных используются 7-битовые ASCII коды. 8-битовые же октеты зарезервированы для командных последовательностей.

Telnet взаимодействует с другой ЭВМ через протокол TELNET. Если команда TELNET вводится без аргументов ЭВМ переходит в командный режим, напечатав приглашение telnet>. В этом режиме она воспринимает и исполняет команды, описанные ниже.

При вводе TELNET с аргументами программа осуществит связь вашей ЭВМ с удаленным компьютером, имя или адрес которого вы ввели в качестве одного из аргументов.


После того как TELNET связь установлена, начинаются переговоры об используемых опциях (см. табл. 4.5.3.1). Каждая из договаривающихся сторон может послать другой один из четырех запросов will, do, wont и dont (см табл. 4.5.3.4).

Далее TELNET переходит в режим ввода. В этом режиме любой введенный текст пересылается удаленной ЭВМ. Ввод может производиться посимвольно или построчно. При посимвольном режиме каждый введенный символ пересылается немедленно, при построчном режиме отклик на каждое нажатие клавиши производится локально, а пересылка выполняется лишь при нажатии клавиши <Enter>. Некоторые опции требуют дополнительных данных, такая информация ожет быть получена с помощью субопций (RFC-1091). При этом клиент посылает трехбайтовую последовательность IAC WILL 24, где 24 - код-идентификатор терминала. Получатель может откликнуться последовательностью IAC DO 24, если все в порядке. Сервер в свою очередь посылает последовательность IAC SB 24 1 IAC SE, запрашивая тип терминала клиента. Здесь код 24 означает, что это субопция для опции типа терминала (см. табл. 4.5.3.1), а следующая 1 является командой "пришлите код вашего терминала". Клиент в свою очередь может откликнуться, послав последовательность - IAC SB 24 0 I B M P C IAC SE. Здесь байт 0 имеет значение "мой терминал имеет тип". Список кодов терминалов содержится в RFC-1700.

Таблица 4.5.3.1. Коды опций в Telnet
Код опции в TelnetОписаниеНомер RFC
0Двоичный обмен856
1Эхо857
2Повторное соединениеNIC 15391
3Подавление буферизации ввода858
4Диалог о размере сообщенияNIC 15393
5Статус859
6Временная метка860
7Удаленный доступ и отклик726
8Длина выходной строкиnic 20196
9Размер выходной страницыnic 20197
10Режим вывода символов <возврат каретки>652
11Вывод горизонтальной табуляции653
12Установка положения табуляции при выводе654
13Режим вывода команды смены страницы655
14Вывод вертикальной табуляции656
15Определяет положение вертикальной табуляции657
16Режим вывода символа <перевод строки>658
17Расширенный набор кодов ASCII698
18Возврат (logout)727
19Байт-макро735
20Терминал ввода данных732
21Supdup736
22Supdup вывод747
23Место отправления779
24Тип терминала930
25Конец записи885
26Tacacs- идентификация пользователя927
27Пометка вывода933
28Код положения терминала946
29Режим 32701041
30X.3 PAD1053
31Размер окна

1073
<




/p> Когда связь с удаленной ЭВМ уже осуществлена, переход в командный режим может быть выполнен с помощью нажатия '^]' (escape).

В этом режиме доступны команды:
open имя_ЭВМ [ порт ]open открывает связь с ЭВМ, имя которой указано в обращении. Если номер порта явно не указан, telnet пытается использовать для связи с сервером номер порта по умолчанию. Вместо имени ЭВМ-сервера может использоваться ее IP-адрес.
display [ аргумент ... ]Отображает все, или часть, набора параметров telnet (см. описание команды send).
closeЗакрывает сессию telnet и возвращает систему в командный режим.
quitЗакрывает любую сессию telnet.
mode typeУправляет режимом ввода ("построчный" или "посимвольный"). Удаленной машине посылается запрос на переход в соответствующий режим. Если она готова (способна) работать в запрошенном режиме, будет произведено соответствующее переключение.
statusОтображает текущий статус telnet. В перечень информации входит имя удаленной ЭВМ и действующий режим обмена.
? [ команда ]Выдает справочную информацию о команде, название которой приведено в качестве аргумента
send argumentsПосылает удаленной ЭВМ один или несколько символьных аргументов. В качестве аргументов могут использоваться: escape, synch, brk, ip, ao, ayt, ecel, ga и др. Смотри таблицу 4.5.3.3.
escapeПосылает escape символ (например, `^]').
SYNCHПосылает synch-последовательность. Эта последовательность позволяет аннулировать все, что было до этого напечатано, но еще не считано. Эта последовательность посылается как срочная (важная) TCP-информация (может не сработать, если удаленной системой является 4.2 BSD). Если она не сработала, на терминал будет послан символ "r".
brkПосылает Break-последовательность при нажатии клавиши Break (Pause). (Исчерпывающую информацию об аргументах можно найти в описании используемого программного обеспечения или с помощью команд Help или Man)
set argument valueПрисваивает любому числу переменных telnet новые значения. Специальное значение "off" выключает функцию, соответствующую данной переменной




Значения переменных можно узнать с помощью команды display. Такими переменными могут быть: echo, escape, interrupt, quit, flushoutput, erase, kill, eof, echo. Последняя переменная (в исходном состоянии `^E') в построчном режиме осуществляет переключение между локальным эхо на ввод символа (режим по умолчанию) и подавлением эхо, например при вводе пароля. Переменные процедуры telnet представлены в таблице 4.5.3.2.

Практически стандарт TELNET описан во многих RFC документах, которые определяют различные варианты реализации этой команды. Список опций команды telnet приведен в таблице 4.5.3.1 (не все эти возможности доступны в конкретных программных продуктах).

Таблица 4.5.3.2. Переменные telnet

Название переменнойНазначение
Echo

Определяет, будет ли отображаться на экране то, что вы вводите с клавиатуры. При значении off ввод не отображается, например, при вводе пароля.
EscapeЗадает символ, который используется в качестве escape. Появление этого символа во входном потоке заставляет его и последующие символы интерпретироваться в ЭВМ, где функционирует процесс telnet, как команда
InterruptСпецифицирует символ прерывания процесса. Ввод его приводит к остановке процесса пользователя, работающего на удаленной ЭВМ.
QuitСпецифицирует символ, который используется пользователем на его клавиатуре для выполнения команд brake или attention.
Flushoutput

Определяет символ, который служит для прерывания процедуры вывода на удаленной ЭВМ.
EOFСпецифицирует символ, который используется для обозначения конца файла на удаленной машине.


Таблица 4.5.3.3. Последовательности символов, используемые совместно с командой send

Последовательность символовНазначение
?Отображает справочную информацию о команде send
escapeПосылает символ escape (без прерывания посылки символов для Telnet)
ipПосылает протокольную последовательность telnet. Удаленная машина должна прервать процесс, запущенный для вас.
ecПосылает протокольную EC-последовательность telnet. Удаленная ЭВМ должна стереть последний напечатанный вами символ
elПосылает протокольную EL-последовательность TELNET. Удаленная ЭВМ должна стереть последнюю напечатанную вами строку.
aoПосылает протокольную AO-последовательность TELNET. Удаленная ЭВМ должна направить весь вывод на ваш терминал.
brkПосылает протокольную BRK-последовательность TELNET. Удаленная ЭВМ должна обеспечить отклик.
aytПосылает протокольную AYT-последовательность TELNET (Are You There). Удаленная ЭВМ должна обеспечить отклик.
<


/p> В таблице 4.5.3.4 представлены наименования и коды команд Telnet, которые используются как клиентом, так и сервером в сочетании с префиксным байтом 0xff (IAC - "интерпретировать как команду"). Если нужно послать код данных, равный 255, посылается два байта с кодами 255.

Таблица 4.5.3.4. Коды команд TELNET
Имя субкоманды TELNETКодОписание
EOF236Признак конца файла
SUSP237Отложить исполнение текущего процесса
ABORT238Абортировать процесс
EOR239Конец записи
NOP241Никаких действий
DM(Метка данных)242Блок данных процедуры SYNCH
BRK (Остановка)243brk-символ (break);
IP(Прерывание процесса)244IP-функция
io (Прерывание вывода)245AO-функция
AYT (Вы здесь?)246ayt-функция
EC (Стереть символ)247EC-функция
EL (Стереть строку)248EL-функция
GA (Продолжайте)249GA-функция
SB250Начало субопции
SE240Завершение согласования параметров (конец субопции)
Will ("будет")251Начало исполнения (опционно)
Won't (не будет)252Отказ исполнения или продолжения выполнения (опционно)
Do("исполнить")253Индицирует запрос, который другая система исполняет (опционно)
Don't ("Нет")254Требует, чтобы другая система остановила исполнение (опционно)
IAC255Интерпретируется как начало командной последовательности


Операция прерывание процесса (IP) позволяет прервать, удалить или завершить процесс пользователя (например, выйти из бесконечного цикла).

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

Запрос "Вы здесь?" (AYT) удобен, когда необходимо выяснить выполняется ли пользовательская задача или нет.

Операция стереть символ (EC) позволяет пользователю удалить символ из потока данных, применяется для редактирования текста на экране.

Операция стереть строку (EL) позволяет пользователю при редактировании удалить целую строку.

Команда "go ahead" (GA, "продолжайте") устанавливает полудуплексный режим передачи данных.


Каких- либо воздействий на удаленную ЭВМ обычно не производит. В таблице 4.5.3.5 приведен список комбинаций клавиш, нажатие которых вызывает определенный результат.

Таблица 4.5.3.5. Управляющие комбинации клавиш
Комбинация клавишДостигаемый результат
Ctrl+EEcho
Ctrl+]Escape
Ctrl+?Erase
Ctrl+Oflushoutput
Ctrl+CInterrupt (прерывание исполнения программы)
Ctrl+UKill
Ctrl+\Quit
Ctrl+DEOF


Блок данных процедуры TELNET содержит три байта и называется командой. Формат этого блока показан на рис. 4.5.3.1.



Рис. 4.5.3.1. Формат блока данных Telnet

Первый байт в соответствии с таблицей содержит 8 единиц, далее следует байт команды (табл. 4.5.3.4). Третий октет служит для размещения кода опции, он может и отсутствовать.

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

IAC WILL TRANSMIT-BINARY,

которая в цифровых кодах выглядит как - (255 251 0).

Для прекращения этого (двоичного) режима передачи нужно выдать команду:

IAC DON'T TRANSMIT-BINARY (255 254 0).

Субкоманды Telnet позволяют управлять откликом при работе с клавиатурой. Обычно отклик-эхо присылается удаленной ЭВМ, реже формируется локально. Для включения отклика можно выдать команду: IAC WILL ECHO (255 251 1) (часто это реализовано по умолчанию). Далее можете поупражняться самостоятельно и проверить какие команды и их опции доступны в используемом вами программном продукте.

При работе с Telnet рекомендуется сначала ознакомиться с конкретными возможностями команды с помощью описания (или F10/?). Это позволит вам, например, спасать результаты поиска в файле с указанным вами именем и т.д. Например, для PCTCP такая команда выдаст на экран:

Telnet with VT220 and 3270 emulation, escape character is alt-F10 or F10
Copyright (c) 1989-1992 by FTP Software, Inc. All rights reserved.
?display this help messageasends Telnet AYT request
^hdebugging command helpbsend Telnet Interrupt Process
owrite receive data to output filezsend Telnet Abort output
iread keystrokes from an input filetsend Telnet Break
cclose connection gracefully!escape to command interpret
q/Qquit current/all telnet connectionsIshow local internet address
Ftoggle build-in FTP-server on/offUturn status line on
Wtoggle FTP server write-protect modeuturn status line off
0-9switch to connection #sEnable pop-up TSR with hot-key
pSelect code page remappingSToggle screen-saver key-passing




-------------------------- VT220 emulator commands ------------------------------
REnter key send CRllocal echo mode
NEnter key send newline (CRLF)rremote echo mode
Esend characters as typedwturn end-of-line wrap on
E send line when ENTER is typeddturn end-of-line wrap off
B<-key sends BS; CTL_<-key sends DELset emulator mode (VT52|100|220)
D<- key sends DEL; CTL_<-key sends BS


---------------------------- 3270 emulator commands ----------------------------
yset Yale Null Processing off Yset Yale Null Processing on


[Press SPACE to return to session, or enter another command (? for Help]

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

telnet XXXXXX.domain <номер порта>

можно осуществить связь через порт с заданным номером с узлом XXXXXX.domain. Многие библиотеки используют метод портов для обеспечения доступа к своим ресурсам внешних Inernet-пользователей. Ссылки на RFC-документы по протоколу TELNET смотрите в . Помимо telnet существуют и другие стандартные процедуры, выполняющие схожие задачи.

SUN Microsistems разработала и широко использует программный модуль RPC (Remote Procedure Call, RFC-1057), он используется для удаленного вызова программ почти во всех системах, базирующихся на UNIX. RPC может использоваться как на TCP, так и UDP транспортных уровнях.

Для удаленного исполнения программ может служить команда REXECD, которая активно используется на IBM-системах в рамках ОС AIX и DOS. Уязвимость протокола Telnet для хакеров привела к тому, что в последнее время эта утилита часто заменяется (Secure Shell) или другими программами, обеспечивающими безопасный удаленный доступ.


Содержание раздела