Interested Article - Telnet

TELNET (сокр. от англ. Tel etype Net work ) — сетевой протокол для реализации текстового терминального интерфейса по сети (в современной форме — при помощи транспорта TCP ). Название «telnet» имеют также некоторые утилиты, реализующие клиентскую часть протокола. Современный стандарт протокола описан в .

Выполняет функции протокола прикладного уровня модели OSI . Протокол telnet использовался для удалённого администрирования различными сетевыми устройствами и программными серверами , но уступил SSH из-за безопасности. Тем не менее может являться единственной возможностью взаимодействовать через cli со встраиваемыми системами , например, с маршрутизаторами , так как на них отсутствует ssh.

Введение

Назначение протокола TELNET — в предоставлении достаточно общего двунаправленного восьмибитного байт-ориентированного средства связи. Его основная задача заключается в том, чтобы позволить терминальным устройствам и терминальным процессам взаимодействовать друг с другом. Предполагается, что этот протокол может быть использован для связи вида терминал-терминал («связывание») или для связи процесс-процесс («распределенные вычисления»).

Устройство

Хотя в сессии Telnet выделяют клиентскую и серверную стороны, протокол на самом деле полностью симметричен. После установления транспортного соединения (как правило, TCP) оба его конца играют роль «сетевых виртуальных терминалов» ( англ. Network Virtual Terminal , NVT), обменивающихся двумя типами данных:

  • Прикладными данными (то есть данными, которые идут от пользователя к текстовому приложению на стороне сервера и обратно);
  • Командами протокола Telnet, частным случаем которых являются опции , служащие для уяснения возможностей и предпочтений сторон.

Хотя Telnet-сессии, выполняющейся по TCP, свойственен полный дуплекс , NVT должен рассматриваться как полудуплексное устройство, работающее по умолчанию в буферизированном строковом режиме.

Прикладные данные проходят через протокол без изменений , то есть на выходе второго виртуального терминала мы видим именно то, что было введено на вход первого. С точки зрения протокола данные представляют просто последовательность байтов ( октетов ), по умолчанию принадлежащих набору ASCII , но при включённой опции Binary — любых. Хотя были предложены расширения для идентификации набора символов , на практике ими не пользуются.

Все значения октетов прикладных данных, кроме 0xFF (десятичное: 255), передаются по транспорту как есть. Значение 0xFF передаётся последовательностью из двух октетов 0xFF. Это связано с тем, что октет 0xFF используется на транспортном уровне для кодирования опций.

Опции

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

Принтер и клавиатура NVT

Принтер NVT имеет неопределённую ширину каретки и длину страницы и должен иметь представление всех 95 печатных символов US-ASCII (коды с 32 по 126). Управляющие символы имеют следующие значения:

Название Код (десятичный/шестнадцатеричный) Описание
NULL (NUL) * 0/0x00 Нет операции.
Line Feed (LF) * 10/0x0A Переводит принтер на следующую строку печати, оставаясь на той же горизонтальной позиции.
Carriage Return (CR) * 13/0x0D Перемещает принтер к левой границе текущей строки.
BELL (BEL) 7/0x07 Производит аудио или видеосигнал (но НЕ перемещает головку принтера).
Back Space (BS) 8/0x08 Перемещает головку принтера на один символ по направлению к левой границе.
Horizontal Tab (HT) 9/0x09 Перемещает принтер на следующую остановку горизонтальной табуляции. Остаётся неопределённым, как сторона определяет и устанавливает эти остановки табуляции.
Vertical Tab (VT) 11/0x0B Перемещает принтер на следующую остановку вертикальной табуляции. Остаётся неопределённым, как сторона определяет и устанавливает эти остановки табуляции.
Form Feed (FF) 12/0x0C Перемещает принтер к верхней части следующей страницы, оставаясь на той же горизонтальной позиции.

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

Последовательность «CR LF» должна обрабатываться как единый символ перевода строки и использоваться всякий раз, когда требуется их объединённое действие; последовательность «CR NUL» должна использоваться, где требуется только возврат каретки; использования символа CR следует избегать в других контекстах.

Структура команд Telnet

Каждая команда TELNET является многобайтовой последовательностью, начинающейся с кода 0xFF (десятичное: 255) «Interpret as Command» (IAC) и кода команды. Команды, отвечающие за договорённости по опции, являются трёхбайтовыми последовательностями, где третий байт является кодом опции. Нижеперечисленные коды и кодовые последовательности имеют соответственный смысл, только когда следуют сразу за IAC.

Название Код (десятичный/шестнадцатеричный) Описание
SE 240/0xF0 Завершает согласование, начатое командой SB.
NOP 241/0xF1 Нет операции.
Data Mark 242/0xF2 Синхронизация (Synch) обмена данными. Эта команда всегда сопровождается TCP Urgent notification.
Break 243/0xF3 Нажата кнопка «Break» или «Attention».
Interrupt Process 244/0xF4 Приостанавливает, прерывает, аварийно прекращает или завершает процесс.
Abort output 245/0xF5 Подавление вывода текущего процесса. Также отправляет сигнал Synch пользователю.
Are You There 246/0xF6 Отправляет обратно ответ терминала, состоящий из печатных символов.
Erase character 247/0xF7 Получатель должен удалить предыдущий символ, если это возможно.
Erase Line 248/0xF8 Стереть последнюю введённую строку, то есть все данные, полученные после последнего перевода строки.
Go ahead 249/0xF9 Ожидается передача данных.
SB 250/0xFA Начало согласования опции, требующего передачи параметров.
WILL опция 251/0xFB Указывает на желание исполнять или подтверждает, что сейчас исполняется указанная опция.
WON’T опция 252/0xFC Указывает на отказ начать или продолжить исполнять указанную опцию.
DO опция 253/0xFD Запрос на то, чтобы другая сторона исполнила или подтвердила исполнение указанной опции.
DON’T опция 254/0xFE Требование на то, чтобы другая сторона остановила исполнение или подтвердила то, что указанная опция более не исполняется.
IAC 255/0XFF Байт данных 255.

Применения

Исторически Telnet служил для удалённого доступа к интерфейсу командной строки операционных систем . Впоследствии его стали использовать для прочих текстовых интерфейсов, вплоть до игр MUD и анимированного ASCII-art . Теоретически даже обе стороны протокола могут являться не только людьми, но и программами.

Иногда клиенты telnet используются для доступа к другим протоколам на основе транспорта TCP, см. .

Протокол telnet используется в управляющем соединении FTP , то есть заходить на сервер командой telnet ftp.example.net ftp для выполнения отладки и экспериментов не только возможно, но и правильно (в отличие от применения клиентов telnet для доступа к HTTP, IRC и большинству других протоколов).

Telnet, наряду с HTTP , является основным протоколом для удалённой работы с сетевым оборудованием (управляемые коммутаторы и маршрутизаторы) и, в отличие от веб-интерфейса, предоставляет полный доступ к функциональным возможностям устройства, но при этом требует от специалиста навыков работы с командной строкой.

Безопасность

В протоколе не предусмотрено использование ни шифрования , ни проверки подлинности данных. Поэтому он уязвим для любого вида атак , к которым уязвим его транспорт, то есть протокол TCP. Для функциональности удалённого доступа к системе в настоящее время применяется сетевой протокол SSH (особенно его версия 2), при создании которого упор делался именно на вопросы безопасности. Так что следует иметь в виду, что сессия Telnet весьма беззащитна, если только не осуществляется в полностью контролируемой сети или с применением защиты на сетевом уровне (различные реализации виртуальных частных сетей ). По причине ненадёжности от Telnet как средства управления операционными системами давно отказались.

Telnet и другие протоколы

В среде специалистов по технологиям Интернета клиент Telnet иногда используется для осуществления ручного доступа (например, в целях отладки) к таким протоколам прикладного уровня, как HTTP , IRC , SMTP , POP3 и прочим текст-ориентированным протоколам на основе транспорта TCP. Однако использование клиента telnet в качестве клиента TCP может вызывать следующие нежелательные эффекты:

  • Клиент может передать данные, которые вы не вводили (опции Telnet);
  • Клиент не будет принимать октет 0xFF;
  • Клиент будет искажать октет 0xFF при передаче;
  • Клиент вообще может отказаться передавать .

Такие программы, как netcat , действительно обеспечивают чистый доступ к TCP, однако требуются специальные ухищрения (как-то -icrnl на UNIX-системе) для передачи перевода строки как CR LF (что требуется многими протоколами). Обычно клиент Telnet по умолчанию передаёт любой перевод строки как CR LF, независимо от его кодирования в системе клиента. Также для отладочного доступа к прикладным протоколам (кроме FTP и, собственно, Telnet) можно использовать клиент PuTTY в режиме «Raw» (чистый доступ к TCP) — PuTTY преобразует переводы строки отдельно от поддержки протокола Telnet.

Ссылки

  • TELNET protocol specification
  • TELNET option specifications
  • TELNET binary transmission
  • TELNET echo option
  • TELNET suppress Go Ahead option
  • TELNET status option
  • TELNET timing mark option
  • TELNET extended options — list option
  • Telnet end of record option
  • Telnet 3270 regime option
  • Telnet Window Size Option
  • Telnet terminal speed option
  • Telnet terminal-type option
  • Telnet X display location option
  • Telnet linemode option
  • 5250 Telnet interface
  • Telnet remote flow control option
  • Telnet Environment Option
  • Telnet Environment Option (NEW-ENVIRON)
  • Telnet Com Port Control Option
  • Telnet Authentication Option
  • Telnet Authentication: Kerberos Version 5
  • TELNET Authentication Using DSA
  • Telnet Authentication: SRP
  • Telnet Data Encryption Option
  • The telnet URI Scheme
  • IBM’s iSeries Telnet Enhancements

Примечания

  1. Находится в %SystemRoot%\System32\telnet.exe
  2. Данные могут подвергаться изменениям (например, может быть сброшен старший бит) в случае, если на вход одного терминала поступили данные, допустимость приёма которых не была подтверждена вторым.
  3. Telnet Charset Option
Источник —

Same as Telnet