close

Telnet

Vai alla navigazione Vai alla ricerca
telnet
Nome TELEtipo RETE
Livello (secondo il modello OSI ) Applicato
Famiglia TCP/IP
Porta/ID 23/TCP
Scopo del protocollo terminale di testo virtuale
Specifica RFC 854 / STD 8
Principali implementazioni (clienti) telnet (Unix)
PuTTY , telnet.exe (Windows) [1]
Implementazioni principali ( server ) telnetd, MS Telnet
Espandibilità Opzioni ( RFC 855 )
 File multimediali su Wikimedia Commons

TELNET (abbreviato dall'inglese  tel etype net work ) è un protocollo di rete per l'implementazione di un'interfaccia terminale di testo su una rete (nella sua forma moderna, utilizzando il trasporto TCP ). Il nome "telnet" è utilizzato anche da alcune utility che implementano il lato client del protocollo. L'attuale protocollo standard è descritto in RFC 854 .

Svolge le funzioni di un protocollo di livello applicativo del modello OSI . Il protocollo telnet è stato utilizzato per l'amministrazione remota di vari dispositivi di rete e server software , ma ha lasciato il posto a ssh per motivi di sicurezza. Tuttavia, potrebbe essere l'unico modo per interagire tramite cli con sistemi embedded, come i router , poiché non hanno ssh.

Introduzione

Lo scopo del protocollo TELNET è quello di fornire un mezzo di comunicazione abbastanza generico, bidirezionale, a otto bit, orientato ai byte. Il suo scopo principale è consentire ai dispositivi terminali e ai processi terminali di comunicare tra loro. È previsto che questo protocollo possa essere utilizzato per la comunicazione da terminale a terminale ("bonding") o per la comunicazione da processo a processo ("informatica distribuita").

Dispositivo

Sebbene una sessione Telnet abbia un lato client e un lato server, il protocollo è in realtà completamente simmetrico. Dopo aver stabilito una connessione di trasporto (solitamente TCP), entrambe le estremità svolgono il ruolo di "terminali virtuali di rete" ( eng.  Network Virtual Terminal , NVT), scambiando due tipi di dati:

  • Dati dell'applicazione (ovvero i dati che vanno dall'utente all'applicazione di testo lato server e viceversa);
  • Comandi del protocollo Telnet , un caso speciale di cui sono opzioni che servono a chiarire le capacità e le preferenze delle parti.

Sebbene una sessione Telnet su TCP sia intrinsecamente full duplex , l'NVT dovrebbe essere trattato come un dispositivo half duplex che opera in modalità linea bufferizzata per impostazione predefinita.

I dati dell'applicazione passano attraverso il protocollo senza modifiche [2] , cioè all'uscita del secondo terminale virtuale, vediamo esattamente cosa è stato inserito all'ingresso del primo. Dal punto di vista del protocollo, i dati sono semplicemente una sequenza di byte ( ottetti ), di default appartenenti al set ASCII , ma con l' opzione Binary abilitata  , qualsiasi. Sebbene siano state proposte estensioni per l' identificazione di set di caratteri [3] , non vengono utilizzate nella pratica.

Tutti i valori dell'ottetto dei dati dell'applicazione diversi da \377 (decimale: 255) vengono passati al trasporto così come sono. L'ottetto \377 viene trasmesso come sequenza \377\377 di due ottetti. Questo perché l'ottetto \377 viene utilizzato dal livello di trasporto per codificare le opzioni.

Opzioni

Il protocollo fornisce per impostazione predefinita la funzionalità minima e una serie di opzioni che la estendono. Il principio delle opzioni stipulate richiede che i negoziati siano effettuati quando ciascuna delle opzioni è attivata. Una parte avvia la richiesta e l'altra parte può accettare o rifiutare l'offerta. Se la richiesta viene accolta, l'opzione ha effetto immediato. Le opzioni sono descritte separatamente dal protocollo stesso e il loro supporto da parte del software è arbitrario. Al client del protocollo (terminale di rete) viene richiesto di rifiutare le richieste per includere opzioni non supportate e sconosciute.

Stampante e tastiera NVT

La stampante NVT ha una larghezza del carrello e una lunghezza della pagina non specificate e deve rappresentare tutti i 95 caratteri US-ASCII stampabili (codici da 32 a 126). I caratteri di controllo hanno i seguenti significati:

Nome Codice (decimale/esadecimale) Descrizione
NULLA (NULLA) * 0/0x00 Nessuna operazione.
Avanzamento riga (LF)* 10/0x0A Avanza la stampante alla riga di stampa successiva rimanendo nella stessa posizione orizzontale.
Ritorno in Carrozza (CR) * 13/0x0D Sposta la stampante sul bordo sinistro della riga corrente.
CAMPANELLA (BEL) 07/0x07 Produce un segnale audio o video (ma NON sposta la testina della stampante).
Spazio indietro (BS) 08/0x08 Sposta la testina della stampante di un carattere verso il margine sinistro.
Linguetta orizzontale (HT) 09/0x09 Sposta la stampante al successivo punto di tabulazione orizzontale. Non è definito come il lato definisce e imposta questi punti di tabulazione.
Linguetta verticale (VT) 11/0x0B Sposta la stampante al successivo punto di tabulazione verticale. Non è definito come il lato definisce e imposta questi punti di tabulazione.
Avanzamento modulo (FF) 12/0x0°C Sposta la stampante all'inizio della pagina successiva rimanendo nella stessa posizione orizzontale.

È richiesto il supporto per l'azione dei caratteri contrassegnati come *. Altri possono eseguire una determinata azione o non eseguirne alcuna; a una parte non è richiesto di assumere nulla di specifico sul supporto dell'altra parte per particolari caratteri di controllo opzionali.

La sequenza "CR LF" deve essere trattata come un singolo carattere di nuova riga e utilizzata ogni volta che è richiesta la loro azione combinata; la sequenza "CR NUL" dovrebbe essere utilizzata dove è richiesto solo un ritorno a capo; l'uso del carattere CR dovrebbe essere evitato in altri contesti.

Struttura dei comandi di Telnet

Ogni comando TELNET è una sequenza multibyte che inizia con il codice \377 (decimale: 255) "Interpret as Command" (IAC) e il codice di comando. I comandi responsabili della negoziazione delle opzioni sono sequenze di tre byte, dove il terzo byte è il codice dell'opzione. I seguenti codici e sequenze di codici hanno il rispettivo significato solo quando seguono immediatamente l'IAC.

Nome Codice (decimale/esadecimale) Descrizione
SE 240/0xF0 Termina la trattativa avviata dal comando SB.
NOP 241/0xF1 Nessuna operazione.
segno di dati 242/0xF2 Scambio di dati di sincronizzazione (sincronizzazione). Questo comando è sempre seguito da una notifica TCP Urgente.
Rompere 243/0xF3 Viene premuto il pulsante "Pausa" o "Attenzione".
Processo di interruzione 244/0xF4 Sospende, interrompe, interrompe o termina un processo.
Annulla uscita 245/0xF5 Sopprime l'output del processo corrente. Invia anche un segnale di sincronizzazione all'utente.
Sei qui 246/0xF6 Invia una risposta del terminale composta da caratteri stampabili.
Cancella carattere 247/0xF7 Il destinatario dovrebbe rimuovere il carattere precedente, se possibile.
Cancella linea 248/0xF8 Cancella l'ultima riga inserita, ovvero tutti i dati ricevuti dopo l'ultima nuova riga.
andare avanti 249/0xF9 Trasferimento dati in attesa.
SB 250/0xFA Inizio della negoziazione dell'opzione che richiede il passaggio dei parametri.
opzione VOLONTÀ  251/0xFB Indica il desiderio di eseguire o conferma che l'opzione specificata è attualmente in esecuzione.
Non  opzione 252/0xFC Indica un errore per avviare o continuare l'esecuzione dell'opzione specificata.
Opzione FARE  253/0xFD Una richiesta che l'altra parte esegua o confermi l'esercizio dell'opzione specificata.
NON  opzione 254/0xFE Una richiesta che l'altra parte interrompa l'esecuzione o confermi che l'opzione specificata non è più in esecuzione.
IAC 255/0XFF Byte di dati 255.

Applicazioni

Storicamente, Telnet è stato utilizzato per l'accesso remoto all'interfaccia della riga di comando dei sistemi operativi . Successivamente è stato utilizzato per altre interfacce testuali, fino a giochi MUD e ASCII-art animati . In teoria, anche entrambi i lati del protocollo possono essere non solo persone, ma anche programmi.

A volte i client telnet vengono utilizzati per accedere ad altri protocolli basati sul trasporto TCP, vedere Telnet e altri protocolli .

Il protocollo telnet viene utilizzato nella connessione di controllo FTP , ovvero l'accesso al server con un comando telnet ftp.example.net ftpper eseguire il debug e gli esperimenti non è solo possibile, ma anche corretto (anziché utilizzare client telnet per accedere a HTTP, IRC e la maggior parte degli altri protocolli ).

Telnet, insieme a HTTP , è il protocollo principale per il lavoro remoto con apparecchiature di rete (switch e router gestiti) e, a differenza dell'interfaccia web, fornisce pieno accesso alle funzionalità del dispositivo, ma allo stesso tempo richiede competenze da riga di comando da parte di uno specialista.

Sicurezza

Il protocollo non prevede l'utilizzo né della crittografia né dell'autenticazione dei dati. Pertanto, è vulnerabile a qualsiasi tipo di attacco a cui è vulnerabile il suo trasporto, ovvero il protocollo TCP. Per la funzionalità di accesso remoto al sistema, viene attualmente utilizzato il protocollo di rete SSH (in particolare la sua versione 2) , durante la cui creazione si è posto l'accento sulle questioni di sicurezza. Quindi tieni presente che una sessione Telnet è piuttosto insicura a meno che non sia su una rete completamente controllata o con sicurezza a livello di rete (varie implementazioni di reti private virtuali ). A causa dell'inaffidabilità di Telnet come mezzo di gestione dei sistemi operativi, sono stati abbandonati da tempo.

Telnet e altri protocolli

Nella comunità tecnologica di Internet, il client Telnet viene talvolta utilizzato per fornire l'accesso manuale (ad esempio per scopi di debug) ai protocolli a livello di applicazione come HTTP , IRC , SMTP , POP3 e altri protocolli basati su testo basati sul trasporto TCP. Tuttavia, l'utilizzo di un client telnet come client TCP può causare i seguenti effetti indesiderati:

  • Il cliente può inviare dati che non hai inserito (opzioni Telnet);
  • Il cliente non accetterà l'ottetto \377;
  • Il client modificherà l'ottetto \377 durante la trasmissione;
  • Il client PUÒ rifiutarsi di inviare ottetti con il bit 1 più significativo .

Programmi come netcat forniscono un accesso TCP puro, ma sono necessari trucchi speciali (in qualche modo stty -icrnlsu un sistema UNIX) per passare un feed di riga come CR LF (che è richiesto da molti protocolli). Tipicamente, un client Telnet invierà per impostazione predefinita qualsiasi newline come CR LF, indipendentemente dalla sua codifica sul sistema del client. Inoltre, per il debug dell'accesso ai protocolli applicativi (tranne FTP e, di fatto, Telnet), è possibile utilizzare il client PuTTY in modalità Raw (accesso puro a TCP) - PuTTY converte le interruzioni di riga separatamente dal supporto del protocollo Telnet.

Collegamenti

Note

  1. Situato a%SystemRoot%\System32\telnet.exe
  2. I dati possono essere modificati (ad esempio il bit più significativo può essere resettato) se l'ingresso di un terminale ha ricevuto dati la cui accettazione non è stata confermata dal secondo.
  3. ^ RFC 2066  - Opzione set di caratteri Telnet