Telnet
Модель TCP/IP (RFC 1122) |
---|
Прикладний рівень |
Транспортний рівень |
Мережевий рівень |
Канальний рівень |
Telnet (англ. TELetype NETwork)— мережевий протокол для реалізації текстового інтерфейсу по мережі (у сучасній формі — за допомогою транспорту TCP). Назву «telnet» мають також деякі утиліти, що реалізують клієнтську частину протоколу.
Введення[ред. | ред. код]
Призначення протоколу TELNET у наданні достатньо спільного, двонаправленого, восьмибітового байт-орієнтованого засобу зв'язку. Його основне завдання полягає в тому, щоб дозволити термінальним пристроям і термінальним процесам взаємодіяти один з одним. Передбачається, що цей протокол може бути використаний для зв'язку виду термінал-термінал («зв'язування») або для зв'язку процес-процес («розподілені обчислення»).
Пристрій[ред. | ред. код]
Хоча у сесії Telnet виділяють клієнтську і серверну сторону, протокол насправді повністю симетричний. Після встановлення транспортного з'єднання (як правило, TCP) обидва його кінця грають роль «мережевих віртуальних терміналів» (Network Virtual Terminal, NVT), які обмінюються двома типами даних:
- Прикладними даними (тобто даними, які йдуть від користувача до текстового додатка на стороні сервера і назад);
- Командами протоколу Telnet, окремим випадком яких є опції, службовці для з'ясування можливостей і переваг сторін.
Хоча Telnet-сесії, що виконується по TCP, властивий повний дуплекс, NVT повинен розглядатися як напівдуплексний пристрій, що працює за замовчуванням у буферизованому рядковому режимі.
Прикладні дані проходять через протокол без змін. Дані можуть зазнавати змін (наприклад може бути скинутий старший біт) у разі, якщо на вхід одного терміналу надійшли дані, допустимість приймання яких не була підтверджена другим. ,[що?] тобто на виході другого віртуального терміналу ми бачимо саме те, що було введено на вхід першого. З точки зору протоколу дані представляють просто послідовність байтів (октетів), за замовчуванням належать набору ASCII, але при включеній опції Binary - будь-яких. Хоча були запропоновані розширення для ідентифікації набору символів Telnet Charset Option, але на практиці ними не користуються. Всі значення октетів прикладних даних крім \ 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 використовується в керувальному з'єднанні FTP, тобто заходити на сервер командою telnet ftp.example.net ftp
для виконання налагодження і експериментів не тільки можливо, але і правильно (на відміну від застосування клієнтів telnet для доступу до HTTP, IRC і більшості інших протоколів).
Безпека[ред. | ред. код]
У протоколі не передбачено використання ні шифрування, ні перевірки достовірності даних. Тому він вразливий для будь-якого виду атак, до яких вразливий його транспорт, тобто протокол TCP. Для функціональності віддаленого доступу до системи в наш час[коли?] застосовується мережевий протокол SSH (особливо його версія 2), основною причиною створення якого були питання безпеки. Так що варто мати на увазі, що сесія Telnet дуже беззахисна, якщо тільки не здійснюється в повністю контрольованої мережі або з застосуванням захисту на мережевому рівні (різні реалізації віртуальних приватних мереж). Через ненадійність від Telnet як засобу керування операційними системами давно відмовилися.
Telnet та інші протоколи[ред. | ред. код]
У середовищі фахівців з технологій internet поширена думка, що клієнт Telnet придатний для здійснення ручного доступу (наприклад, з метою налагодження) до таких протоколів прикладного рівня як HTTP, IRC, SMTP, POP3 і іншим текст-орієнтованим протоколами на основі транспорту TCP. Однак, використання клієнта telnet як клієнта TCP викликає такі небажані ефекти:
- Клієнт може передати дані, які Ви не вводили (опції Telnet);
- Клієнт не буде приймати октет \ 377;
- Клієнт буде спотворювати октет \ 377 при передачі;
- Клієнт взагалі може відмовитися передавати октети зі старшим бітом 1.
Такі програми як netcat дійсно забезпечують чистий доступ до TCP, однак потрібні спеціальні хитрощі для передачі переведення рядка як CR LF (що потрібно багатьма протоколами). Зазвичай клієнт Telnet за замовчуванням передає будь-яке переведення рядка як CR LF, незалежно від його кодування у системі клієнта. Також для доступу до прикладних протоколів (крім FTP і, власне, Telnet) з метою налагодження є використання клієнта PuTTY в режимі «Raw» (чистий доступ до TCP) - PuTTY перетворює переведення рядка окремо від підтримки протоколу Telnet.
|
Ця стаття не містить посилань на джерела. (січень 2016) |
Ця стаття містить правописні, лексичні, граматичні, стилістичні або інші мовні помилки, які треба виправити. (січень 2016) |
![]() |
Це незавершена стаття про комп'ютерні мережі. Ви можете допомогти проєкту, виправивши або дописавши її. |