Telnet
Название: |
TErminaL NETwork |
---|---|
Уровень (по модели OSI): |
Прикладной |
Семейство: | |
Порт/ID: |
23/TCP |
Назначение протокола: |
виртуальный текстовый терминал |
Спецификация: |
RFC 854 / [tools.ietf.org/html/std8 STD 8] |
Основные реализации (клиенты): | |
Основные реализации (серверы): |
telnetd, MS Telnet |
Расширяемость: |
Опции (RFC 855) |
TELNET (сокр. от англ. terminal network) — сетевой протокол для реализации текстового интерфейса по сети (в современной форме — при помощи транспорта TCP). Название «telnet» имеют также некоторые утилиты, реализующие клиентскую часть протокола. Современный стандарт протокола описан в RFC 854.
Выполняет функции протокола прикладного уровня модели OSI.
Содержание
Введение
Назначение протокола TELNET в предоставлении достаточно общего, двунаправленного, восьмибитного байт-ориентированного средства связи. Его основная задача заключается в том, чтобы позволить терминальным устройствам и терминальным процессам взаимодействовать друг с другом. Предполагается, что этот протокол может быть использован для связи вида терминал-терминал («связывание») или для связи процесс-процесс («распределенные вычисления»).
Устройство
Хотя в сессии Telnet выделяют клиентскую и серверную стороны, протокол на самом деле полностью симметричен. После установления транспортного соединения (как правило, TCP) оба его конца играют роль «сетевых виртуальных терминалов» (англ. Network Virtual Terminal, NVT), обменивающихся двумя типами данных:
- Прикладными данными (то есть данными, которые идут от пользователя к текстовому приложению на стороне сервера и обратно);
- Командами протокола Telnet, частным случаем которых являются опции, служащие для уяснения возможностей и предпочтений сторон.
Хотя Telnet-сессии, выполняющейся по TCP, свойственен полный дуплекс, NVT должен рассматриваться как полудуплексное устройство, работающее по умолчанию в буферизированном строковом режиме.
Прикладные данные проходят через протокол без изменений[2], то есть на выходе второго виртуального терминала мы видим именно то, что было введено на вход первого. С точки зрения протокола данные представляют просто последовательность байтов (октетов), по умолчанию принадлежащих набору ASCII, но при включенной опции Binary — любых. Хотя были предложены расширения для идентификации набора символов [3], но на практике ими не пользуются.
Все значения октетов прикладных данных кроме \377 (десятичное: 255) передаются по транспорту как есть. Октет \377 передаётся последовательностью \377\377 из двух октетов. Это связано с тем, что октет \377 используется на транспортном уровне для кодирования опций.
Опции
Протокол предоставляет по умолчанию минимальную функциональность и набор расширяющих её опций. Принцип оговоренных опций требует проводить переговоры при включении каждой из опций. Одна сторона инициирует запрос, а другая сторона может либо принять, либо отвергнуть предложение. Если запрос принимается, то опция немедленно вступает в силу. Опции описаны отдельно от протокола как такового, и их поддержка программным обеспечением произвольна. Клиенту протокола (сетевому терминалу) предписывается отвергать запросы на включение неподдерживаемых и неизвестных опций.
Принтер и клавиатура 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 является многобайтовой последовательностью, начинающейся с кода \377 (десятичное: 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 и другие протоколы.
Протокол telnet используется в управляющем соединении FTP, то есть заходить на сервер командой telnet ftp.example.net ftp
для выполнения отладки и экспериментов не только возможно, но и правильно (в отличие от применения клиентов telnet для доступа к HTTP, IRC и большинству других протоколов).
Telnet, наряду с HTTP, является основным протоколом для удалённой работы с сетевым оборудованием (управляемые коммутаторы и маршрутизаторы) и, в отличие от веб-интерфейса, предоставляет полный доступ к функциональным возможностям устройства, но при этом требует от специалиста культуры работы с командной строкой.
Безопасность
В протоколе не предусмотрено использование ни шифрования, ни проверки подлинности данных. Поэтому он уязвим для любого вида атак, к которым уязвим его транспорт, то есть протокол TCP. Для функциональности удалённого доступа к системе в настоящее время применяется сетевой протокол SSH (особенно его версия 2), при создании которого упор делался именно на вопросы безопасности. Так что следует иметь в виду, что сессия Telnet весьма беззащитна, если только не осуществляется в полностью контролируемой сети или с применением защиты на сетевом уровне (различные реализации виртуальных частных сетей). По причине ненадёжности от Telnet как средства управления операционными системами давно отказались.
Telnet и другие протоколы
В среде специалистов по технологиям internet клиент Telnet иногда используется для осуществления ручного доступа (например, в целях отладки) к таким протоколам прикладного уровня как HTTP, IRC, SMTP, POP3 и прочим текст-ориентированным протоколам на основе транспорта TCP. Однако, использование клиента telnet в качестве клиента TCP может вызывать следующие нежелательные эффекты:
- Клиент может передать данные, которые вы не вводили (опции Telnet);
- Клиент не будет принимать октет \377;
- Клиент будет искажать октет \377 при передаче;
- Клиент вообще может отказаться передавать октеты со старшим битом 1.
Такие программы, как netcat, действительно обеспечивают чистый доступ к TCP, однако требуются специальные ухищрения (как-то stty -icrnl
на UNIX-системе) для передачи перевода строки как CR LF (что требуется многими протоколами). Обычно клиент Telnet по умолчанию передаёт любой перевод строки как CR LF, независимо от его кодирования в системе клиента.
Также для отладочного доступа к прикладным протоколам (кроме FTP и, собственно, Telnet) можно использовать клиент PuTTY в режиме «Raw» (чистый доступ к TCP) — PuTTY преобразует переводы строки отдельно от поддержки протокола Telnet.
Напишите отзыв о статье "Telnet"
Ссылки
- RFC 854 TELNET protocol specification
- RFC 855 TELNET option specifications
- RFC 856 TELNET binary transmission
- RFC 857 TELNET echo option
- RFC 858 TELNET suppress Go Ahead option
- RFC 859 TELNET status option
- RFC 860 TELNET timing mark option
- RFC 861 TELNET extended options — list option
- RFC 885 Telnet end of record option
- RFC 1041 Telnet 3270 regime option
- RFC 1073 Telnet Window Size Option
- RFC 1079 Telnet terminal speed option
- RFC 1091 Telnet terminal-type option
- RFC 1096 Telnet X display location option
- RFC 1184 Telnet linemode option
- RFC 1205 5250 Telnet interface
- RFC 1372 Telnet remote flow control option
- RFC 1408 Telnet Environment Option
- RFC 1572 Telnet Environment Option (NEW-ENVIRON)
- RFC 2217 Telnet Com Port Control Option
- RFC 2941 Telnet Authentication Option
- RFC 2942 Telnet Authentication: Kerberos Version 5
- RFC 2943 TELNET Authentication Using DSA
- RFC 2944 Telnet Authentication: SRP
- RFC 2946 Telnet Data Encryption Option
- RFC 4248 The telnet URI Scheme
- RFC 4777 IBM’s iSeries Telnet Enhancements
Примечания
- ↑ Находится в
%SystemRoot%\System32\telnet.exe
- ↑ Данные могут подвергаться изменениям (например, может быть сброшен старший бит) в случае, если на вход одного терминала поступили данные, допустимость приёма которых не была подтверждена вторым.
- ↑ [tools.ietf.org/html/rfc2066 RFC 2066] – Telnet Charset Option
|
|
Отрывок, характеризующий Telnet
«Выпускала сокола да из правого рукава», говорила песня, невольно возбуждая бодрое, веселое чувство. Разговор их, вероятно, был бы другой, ежели бы они говорили не при звуках песни.– Что правда, австрийцев побили? – спросил Долохов.
– А чорт их знает, говорят.
– Я рад, – отвечал Долохов коротко и ясно, как того требовала песня.
– Что ж, приходи к нам когда вечерком, фараон заложишь, – сказал Жерков.
– Или у вас денег много завелось?
– Приходи.
– Нельзя. Зарок дал. Не пью и не играю, пока не произведут.
– Да что ж, до первого дела…
– Там видно будет.
Опять они помолчали.
– Ты заходи, коли что нужно, все в штабе помогут… – сказал Жерков.
Долохов усмехнулся.
– Ты лучше не беспокойся. Мне что нужно, я просить не стану, сам возьму.
– Да что ж, я так…
– Ну, и я так.
– Прощай.
– Будь здоров…
… и высоко, и далеко,
На родиму сторону…
Жерков тронул шпорами лошадь, которая раза три, горячась, перебила ногами, не зная, с какой начать, справилась и поскакала, обгоняя роту и догоняя коляску, тоже в такт песни.
Возвратившись со смотра, Кутузов, сопутствуемый австрийским генералом, прошел в свой кабинет и, кликнув адъютанта, приказал подать себе некоторые бумаги, относившиеся до состояния приходивших войск, и письма, полученные от эрцгерцога Фердинанда, начальствовавшего передовою армией. Князь Андрей Болконский с требуемыми бумагами вошел в кабинет главнокомандующего. Перед разложенным на столе планом сидели Кутузов и австрийский член гофкригсрата.
– А… – сказал Кутузов, оглядываясь на Болконского, как будто этим словом приглашая адъютанта подождать, и продолжал по французски начатый разговор.
– Я только говорю одно, генерал, – говорил Кутузов с приятным изяществом выражений и интонации, заставлявшим вслушиваться в каждое неторопливо сказанное слово. Видно было, что Кутузов и сам с удовольствием слушал себя. – Я только одно говорю, генерал, что ежели бы дело зависело от моего личного желания, то воля его величества императора Франца давно была бы исполнена. Я давно уже присоединился бы к эрцгерцогу. И верьте моей чести, что для меня лично передать высшее начальство армией более меня сведущему и искусному генералу, какими так обильна Австрия, и сложить с себя всю эту тяжкую ответственность для меня лично было бы отрадой. Но обстоятельства бывают сильнее нас, генерал.
И Кутузов улыбнулся с таким выражением, как будто он говорил: «Вы имеете полное право не верить мне, и даже мне совершенно всё равно, верите ли вы мне или нет, но вы не имеете повода сказать мне это. И в этом то всё дело».
Австрийский генерал имел недовольный вид, но не мог не в том же тоне отвечать Кутузову.
– Напротив, – сказал он ворчливым и сердитым тоном, так противоречившим лестному значению произносимых слов, – напротив, участие вашего превосходительства в общем деле высоко ценится его величеством; но мы полагаем, что настоящее замедление лишает славные русские войска и их главнокомандующих тех лавров, которые они привыкли пожинать в битвах, – закончил он видимо приготовленную фразу.
Кутузов поклонился, не изменяя улыбки.
– А я так убежден и, основываясь на последнем письме, которым почтил меня его высочество эрцгерцог Фердинанд, предполагаю, что австрийские войска, под начальством столь искусного помощника, каков генерал Мак, теперь уже одержали решительную победу и не нуждаются более в нашей помощи, – сказал Кутузов.
Генерал нахмурился. Хотя и не было положительных известий о поражении австрийцев, но было слишком много обстоятельств, подтверждавших общие невыгодные слухи; и потому предположение Кутузова о победе австрийцев было весьма похоже на насмешку. Но Кутузов кротко улыбался, всё с тем же выражением, которое говорило, что он имеет право предполагать это. Действительно, последнее письмо, полученное им из армии Мака, извещало его о победе и о самом выгодном стратегическом положении армии.
– Дай ка сюда это письмо, – сказал Кутузов, обращаясь к князю Андрею. – Вот изволите видеть. – И Кутузов, с насмешливою улыбкой на концах губ, прочел по немецки австрийскому генералу следующее место из письма эрцгерцога Фердинанда: «Wir haben vollkommen zusammengehaltene Krafte, nahe an 70 000 Mann, um den Feind, wenn er den Lech passirte, angreifen und schlagen zu konnen. Wir konnen, da wir Meister von Ulm sind, den Vortheil, auch von beiden Uferien der Donau Meister zu bleiben, nicht verlieren; mithin auch jeden Augenblick, wenn der Feind den Lech nicht passirte, die Donau ubersetzen, uns auf seine Communikations Linie werfen, die Donau unterhalb repassiren und dem Feinde, wenn er sich gegen unsere treue Allirte mit ganzer Macht wenden wollte, seine Absicht alabald vereitelien. Wir werden auf solche Weise den Zeitpunkt, wo die Kaiserlich Ruseische Armee ausgerustet sein wird, muthig entgegenharren, und sodann leicht gemeinschaftlich die Moglichkeit finden, dem Feinde das Schicksal zuzubereiten, so er verdient». [Мы имеем вполне сосредоточенные силы, около 70 000 человек, так что мы можем атаковать и разбить неприятеля в случае переправы его через Лех. Так как мы уже владеем Ульмом, то мы можем удерживать за собою выгоду командования обоими берегами Дуная, стало быть, ежеминутно, в случае если неприятель не перейдет через Лех, переправиться через Дунай, броситься на его коммуникационную линию, ниже перейти обратно Дунай и неприятелю, если он вздумает обратить всю свою силу на наших верных союзников, не дать исполнить его намерение. Таким образом мы будем бодро ожидать времени, когда императорская российская армия совсем изготовится, и затем вместе легко найдем возможность уготовить неприятелю участь, коей он заслуживает».]
Кутузов тяжело вздохнул, окончив этот период, и внимательно и ласково посмотрел на члена гофкригсрата.
– Но вы знаете, ваше превосходительство, мудрое правило, предписывающее предполагать худшее, – сказал австрийский генерал, видимо желая покончить с шутками и приступить к делу.
Он невольно оглянулся на адъютанта.
– Извините, генерал, – перебил его Кутузов и тоже поворотился к князю Андрею. – Вот что, мой любезный, возьми ты все донесения от наших лазутчиков у Козловского. Вот два письма от графа Ностица, вот письмо от его высочества эрцгерцога Фердинанда, вот еще, – сказал он, подавая ему несколько бумаг. – И из всего этого чистенько, на французском языке, составь mеmorandum, записочку, для видимости всех тех известий, которые мы о действиях австрийской армии имели. Ну, так то, и представь его превосходительству.
Князь Андрей наклонил голову в знак того, что понял с первых слов не только то, что было сказано, но и то, что желал бы сказать ему Кутузов. Он собрал бумаги, и, отдав общий поклон, тихо шагая по ковру, вышел в приемную.
Несмотря на то, что еще не много времени прошло с тех пор, как князь Андрей оставил Россию, он много изменился за это время. В выражении его лица, в движениях, в походке почти не было заметно прежнего притворства, усталости и лени; он имел вид человека, не имеющего времени думать о впечатлении, какое он производит на других, и занятого делом приятным и интересным. Лицо его выражало больше довольства собой и окружающими; улыбка и взгляд его были веселее и привлекательнее.
Кутузов, которого он догнал еще в Польше, принял его очень ласково, обещал ему не забывать его, отличал от других адъютантов, брал с собою в Вену и давал более серьезные поручения. Из Вены Кутузов писал своему старому товарищу, отцу князя Андрея:
«Ваш сын, – писал он, – надежду подает быть офицером, из ряду выходящим по своим занятиям, твердости и исполнительности. Я считаю себя счастливым, имея под рукой такого подчиненного».
В штабе Кутузова, между товарищами сослуживцами и вообще в армии князь Андрей, так же как и в петербургском обществе, имел две совершенно противоположные репутации.
Одни, меньшая часть, признавали князя Андрея чем то особенным от себя и от всех других людей, ожидали от него больших успехов, слушали его, восхищались им и подражали ему; и с этими людьми князь Андрей был прост и приятен. Другие, большинство, не любили князя Андрея, считали его надутым, холодным и неприятным человеком. Но с этими людьми князь Андрей умел поставить себя так, что его уважали и даже боялись.
Выйдя в приемную из кабинета Кутузова, князь Андрей с бумагами подошел к товарищу,дежурному адъютанту Козловскому, который с книгой сидел у окна.
– Ну, что, князь? – спросил Козловский.
– Приказано составить записку, почему нейдем вперед.
– А почему?
Князь Андрей пожал плечами.
– Нет известия от Мака? – спросил Козловский.
– Нет.
– Ежели бы правда, что он разбит, так пришло бы известие.
– Вероятно, – сказал князь Андрей и направился к выходной двери; но в то же время навстречу ему, хлопнув дверью, быстро вошел в приемную высокий, очевидно приезжий, австрийский генерал в сюртуке, с повязанною черным платком головой и с орденом Марии Терезии на шее. Князь Андрей остановился.
– Генерал аншеф Кутузов? – быстро проговорил приезжий генерал с резким немецким выговором, оглядываясь на обе стороны и без остановки проходя к двери кабинета.
– Генерал аншеф занят, – сказал Козловский, торопливо подходя к неизвестному генералу и загораживая ему дорогу от двери. – Как прикажете доложить?
Неизвестный генерал презрительно оглянулся сверху вниз на невысокого ростом Козловского, как будто удивляясь, что его могут не знать.
– Генерал аншеф занят, – спокойно повторил Козловский.
Лицо генерала нахмурилось, губы его дернулись и задрожали. Он вынул записную книжку, быстро начертил что то карандашом, вырвал листок, отдал, быстрыми шагами подошел к окну, бросил свое тело на стул и оглянул бывших в комнате, как будто спрашивая: зачем они на него смотрят? Потом генерал поднял голову, вытянул шею, как будто намереваясь что то сказать, но тотчас же, как будто небрежно начиная напевать про себя, произвел странный звук, который тотчас же пресекся. Дверь кабинета отворилась, и на пороге ее показался Кутузов. Генерал с повязанною головой, как будто убегая от опасности, нагнувшись, большими, быстрыми шагами худых ног подошел к Кутузову.
– Vous voyez le malheureux Mack, [Вы видите несчастного Мака.] – проговорил он сорвавшимся голосом.