Telnet
| 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
- Specifica del protocollo TELNET RFC 854
- Specifiche dell'opzione TELNET RFC 855
- RFC 856 Trasmissione binaria TELNET
- Opzione eco RFC 857 TELNET
- RFC 858 TELNET sopprime l'opzione Vai avanti
- Opzione di stato TELNET RFC 859
- Opzione contrassegno di temporizzazione RFC 860 TELNET
- Opzioni estese RFC 861 TELNET - opzione elenco
- RFC 885 Opzione di fine record Telnet
- Opzione del regime RFC 1041 Telnet 3270
- Opzione dimensione finestra Telnet RFC 1073
- RFC 1079 Opzione velocità terminale Telnet
- Opzione tipo terminale Telnet RFC 1091
- RFC 1096 Telnet X opzione posizione di visualizzazione
- RFC 1184 Opzione in modalità linea Telnet
- RFC 1205 5250 Interfaccia Telnet
- RFC 1372 Opzione di controllo del flusso remoto Telnet
- Opzione ambiente Telnet RFC 1408
- Opzione ambiente Telnet RFC 1572 (NUOVO-AMBIENTE)
- Opzione di controllo della porta COM Telnet RFC 2217
- Opzione di autenticazione Telnet RFC 2941
- Autenticazione Telnet RFC 2942 : Kerberos versione 5
- Autenticazione TELNET RFC 2943 tramite DSA
- Autenticazione Telnet RFC 2944 : SRP
- Opzione di crittografia dei dati Telnet RFC 2946
- RFC 4248 Lo schema telnet URI
- RFC 4777 Miglioramenti a iSeries Telnet di IBM