Il login remoto e' una delle applicazioni interattive di rete piu' comuni. Due applicativi tipici implementano questo servizio cio protocolli TCP/IP:
Il protocollo Rlogin e' specificato da RFC1282.
Rlogin usa una connessione TCP singola tra client e server. Al termine dello stabilimento della connessione avvengono le seguenti operazioni:
La velocita' e' comunicata anche se non si tratta di comunicazione seriale asincrona poiche' alcuni applicativi, come il vi, hanno un comportamento diverso a seconda della velocita' del terminale.
Se esiste configurazione di sicurezza sul server (i file /etc/hosts.equiv e .rhosts su UNIX) il server la consulta e puo' di conseguenza non richiedere la password.
Il client invia al server i caratteri digitati da tastiera dall'utente uno alla volta, e il server compie l'echo di ciascun carattere separatamente. Normalmente e' abilitato l'algoritmo di Nagle.
Il controllo di flusso software e' abilitato di norma (x/on - x/off o Ctrl-S/Ctrl-Q) ma esiste la possibilita' che il server informi il client che il controllo di flusso e' disabilitato. Alcuni applicativi (p.es. emacs) usano questi controlli per altri scopi.
All'atto dell'invio del carattere Ctrl-S puo' darsi che esistano gia' dati in transito nella rete, e quindi il controllo di flusso puo' essere ritardato.
Il carattere di interruzione del client e' abilitato e gestito, anchesso con possibili ritardi dovuti al tempo di transito in rete.
Il server puo' inviare al client quattro comandi:
L'unico comando definito e' l'invio della dimensione di finestra di terminale.
Il comando consiste nell'invio del byte 0xff due volte, seguito dal carattere S due volte e quindi da quattro valori a 16 bit in formato Big Endian:
Spesso gli ultimi due byte sono zero, p.es. per finestre non grafiche.
Il carattere tilde (~) seguito a breve distanza (tipicamente 1 secondo) da un altro caratter costituisce una sequenza di escape per comunicare operazioni al server. Il carattere che segue puo' essere:
Questi ultimi due caratteri sono possibili solo se e' abilitata la funzionalita' di Job Control sul client.
Il documento di riferimento e' RFC854.
Telnet definisce le caratteristiche di un Network Virtual Terminal (NVT), un terminale immaginario a cui sia il client che il server mappano le proprie caratteristiche specifiche. Lo NVT e' dotato di video e tastiera: i caratteri sono forniti in input dal client tramite la tastiera NVT e sono inviati in output dal server al video NVT.
Il codice di caratteri usato e' ASCII a 7 bit, con l'ottavo bit settato a zero. Le linee sono terminate dalla coppia di caratteri CR e LF, il semplice Carriage Return e' codificato coi caratteri CR e NUL. Altri applicativi di rete usano lo NVT ASCII, come FTP, SMTP, Finger e Whois.
Vi e' una opzione in Telnet che predispone la comunicazione a 8 bit per carattere.
Telnet usa segnalazione comandi in banda in entrambe le direzioni. Il byte 0xff viene chiamato IAC (Interpret As Command) ed e' seguito dal byte di comando. Per inviare uno )xff letterale ne vengono inviati due.
I comandi Telnet sono i seguenti:
Alcuni dei comandi Telnet sono usati raramente.
Il primo scambio che avviene dopo lo stabilimento della connessione e' la negoziazione di opzioni.
Ogni opzione e' di tre byte:
Le opzioni possibili sono piu' di 40. Le piu' usate sono:
La negoziazione di opzioni e' simmetrica.
Vi sono quattro modi di operazione:
E' il modo originale di default ma si usa raramente in questi giorni. Il server disabilita l'opzione Sopprimere il Go Ahead e Echo.
Ogni carattere e' inviato in un pacchetto singolo. Il server compie di default un echo. Per entrare in questo modo il server deve abilitare l'opzione Sopprimere il Go Ahead e abilitare l'opzione Echo.
Chiamata anche l'opzione Kludge Line Mode. Il server entra questo modo quando e' disabilitata una delle due opzioni Sopprimere il Go Ahead o Echo.
Linea per volta come definito nel documento RFC1184.
In realta' varie implementazioni di Telnet hanno default di modo diversi.
Telnet definisce il Segnale di Synch come il comando Data Mark inviato in modalita' TCP urgente. Il comando informa il ricevente di ritornare in processamento dati normale da modo urgente. Il modo urgente viene usato per inviare comandi Telnet sulla connessione anche se i dati normali sono temporaneamente bloccati dal controllo di flusso.
Il carattere Control-] (cambiabile come settaggio) informa il client Telnet di entrare in modalita' comando. Viene fornito il pronto telnet> ed il client si attende uno di vari comandi interpretabili.