Говзт
- 1 year ago
- 0
- 0
TELNET (сокр. от англ. Tel etype Net work ) — сетевой протокол для реализации текстового терминального интерфейса по сети (в современной форме — при помощи транспорта TCP ). Название «telnet» имеют также некоторые утилиты, реализующие клиентскую часть протокола. Современный стандарт протокола описан в .
Выполняет функции протокола прикладного уровня модели OSI . Протокол telnet использовался для удалённого администрирования различными сетевыми устройствами и программными серверами , но уступил SSH из-за безопасности. Тем не менее может являться единственной возможностью взаимодействовать через cli со встраиваемыми системами , например, с маршрутизаторами , так как на них отсутствует ssh.
Назначение протокола TELNET — в предоставлении достаточно общего двунаправленного восьмибитного байт-ориентированного средства связи. Его основная задача заключается в том, чтобы позволить терминальным устройствам и терминальным процессам взаимодействовать друг с другом. Предполагается, что этот протокол может быть использован для связи вида терминал-терминал («связывание») или для связи процесс-процесс («распределенные вычисления»).
Хотя в сессии Telnet выделяют клиентскую и серверную стороны, протокол на самом деле полностью симметричен. После установления транспортного соединения (как правило, TCP) оба его конца играют роль «сетевых виртуальных терминалов» ( англ. Network Virtual Terminal , NVT), обменивающихся двумя типами данных:
Хотя Telnet-сессии, выполняющейся по TCP, свойственен полный дуплекс , NVT должен рассматриваться как полудуплексное устройство, работающее по умолчанию в буферизированном строковом режиме.
Прикладные данные проходят через протокол без изменений , то есть на выходе второго виртуального терминала мы видим именно то, что было введено на вход первого. С точки зрения протокола данные представляют просто последовательность байтов ( октетов ), по умолчанию принадлежащих набору ASCII , но при включённой опции Binary — любых. Хотя были предложены расширения для идентификации набора символов , на практике ими не пользуются.
Все значения октетов прикладных данных, кроме 0xFF (десятичное: 255), передаются по транспорту как есть. Значение 0xFF передаётся последовательностью из двух октетов 0xFF. Это связано с тем, что октет 0xFF используется на транспортном уровне для кодирования опций.
Протокол предоставляет по умолчанию минимальную функциональность и набор расширяющих её опций. Принцип оговорённых опций требует проводить переговоры при включении каждой из опций. Одна сторона инициирует запрос, а другая сторона может либо принять, либо отвергнуть предложение. Если запрос принимается, то опция немедленно вступает в силу. Опции описаны отдельно от протокола как такового, и их поддержка программным обеспечением произвольна. Клиенту протокола (сетевому терминалу) предписывается отвергать запросы на включение неподдерживаемых и неизвестных опций.
Принтер 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 является многобайтовой последовательностью, начинающейся с кода 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 иногда используется для осуществления ручного доступа (например, в целях отладки) к таким протоколам прикладного уровня, как HTTP , IRC , SMTP , POP3 и прочим текст-ориентированным протоколам на основе транспорта TCP. Однако использование клиента telnet в качестве клиента TCP может вызывать следующие нежелательные эффекты:
Такие программы, как
netcat
, действительно обеспечивают чистый доступ к TCP, однако требуются специальные ухищрения (как-то
-icrnl
на UNIX-системе) для передачи
перевода строки
как CR LF (что требуется многими протоколами). Обычно клиент Telnet по умолчанию передаёт любой перевод строки как CR LF, независимо от его кодирования в системе клиента.
Также для отладочного доступа к прикладным протоколам (кроме FTP и, собственно, Telnet) можно использовать клиент
PuTTY
в режиме «Raw» (чистый доступ к TCP) — PuTTY преобразует переводы строки отдельно от поддержки протокола Telnet.
%SystemRoot%\System32\telnet.exe