Telemat Lab's home page


Copyright © 1986 Universita' di Firenze. All rights reserved.

Free license available.




INTERNET & APPLICATIONS


di: D. Mariano e C. Guadalupi


APPLICATIVI:Telnet, Rlogin

home pageIndicePrec.Succ.










NVT (Network Virtual Terminal)

Per permettere a TELNET di operare tra più sistemi possibili, esso deve appianare le eterogeneità tra i computers ed i sistemi operativi. A tale scopo, TELNET definisce il formato con cui le sequenze di dati e comandi sono inviati su Internet; tale definizione è nota come network virtual terminal NVT (terminale virtuale di rete).
Come è illustrato in figura, il software del client traduce i comandi ed i caratteri digitati dall'utente nel formato NVT e li invia al server, il cui software a sua volta lo convertirà nel formato richiesto dal sistema remoto; il processo inverso sarà invece effettuato per il flusso di dati che dal server raggiungerà il client.


NVT usa la rappresentazione standard USASCII a 7 bit per i dati e riserva 8 bit solo per le sequenze dei comandi.




Il protocollo TELNET



Il complesso del protocollo TCP/IP può supportare un semplice programma applicativo per l'accesso a terminale remoto a carattere detto TELNET. Esso permette all'utente di un sito di stabilire una connessione TELNET con un server di login di un altro sito. TELNET poi passa tutto ciò che è digitato sulla tastiera dell'utente direttamente al computer remoto, come se fosse stato digitato sulla tastiera della stessa macchina remota; inoltre TELNET visualizza sullo schermo dell'utente l'output testuale della macchina remota. Il servizio è detto trasparente perchè si ha come l'impressione che la tastiera ed il display dell'utente siano attaccati direttamente alla macchina remota.
Il software del client TELNET permette all'utente di specificare la macchina remota non solo usando il domain name ma anche l'indirizzo IP, permettendone perciò l'uso anche quando non è possibile stabilire una corrispondenza nome-indirizzo.
TELNET offre tre servizi di base: Nella figura seguente è illustrato come programmi applicativi implementino il client ed il server TELNET:


Come mostra la figura, quando l'utente invoca TELNET, un programma apllicativo sulla macchina dell'utente funge da client; esso stabilisce una connessione TCP tramite la quale comunica col server. Una volta stabilita la connessione, il client accetta gli input dalla tastiera dell'utente e li invia al server, mentre allo stesso tempo accetta i caratteri che il server gli invia e li visualizza sullo schermo dell'utente.
In realtà il server TELNET è più complesso di quello in figura, perchè esso deve gestire connessioni multiple concorrenti. Un processo server master (daemon) attende una nuova richiesta di connessione e crea uno slave (una copia di sè stesso che comunica su una porta diversa da quella originaria) per gestire ogni connessione, e perciò quello rappresentato in figura è il server slave e non il master.
Con pseudo terminal si intende il punto d'accesso al sistema operativo che permette al server TELNET di trasferire i caratteri allo stesso come se provenissero da una tastiera. Solo se il sistema supporta lo pseudo terminal, sarà possibile implementare il server TELNET al livello applicativo. Il vantaggio dell'implementazione a tale livello sta nel più agevole controllo del server. Lo svantaggio è invece rappresentato dal fatto che i caratteri digitati dall'utente, una volta giunti al sistema operativo della macchina remota, devono raggiungere il server al livello applicativo per poi ridiscendere nuovamente allo pseudo terminal, con evidente inefficienza del sistema.




L'inoltro dei comandi per controllare la parte remota



Il client riceve le funzioni di controllo dall'utente insieme ai dati, e li passa al sistema del server dove devono essere interpretati. Generalmente ogni funzione di controllo è legata ad un particolare carattere ASCII e quando questo viene invocato il sistema operativo esegue l'opportuna azione invece di accettarlo come carattere di input. Chiaramente sarà bene mantenere separati i caratteri ASCII normali dalle funzioni di controllo per evitare ambiguità con i dati.
Alcune funzioni di controllo tra le più importanti sono riportate a titolo di esempio nella seguente tabella:

Segnale Significato
IP Interrupt Process (termina il programma corrente)
AO Abort Output (scarta ogni output presente nel buffer)
EC Erase Character (cancella il carattere precedente)
EL Erase Line (cancella l'intera riga corrente)


Per passare le funzioni di controllo attraverso la connessione TCP, TELNET le codifica usando una sequenza di escape; essa usa un byte riservato per indicare che ciò che segue deve essere interpretato come un codice di controllo. In TELNET tale byte che dà luogo ad una sequenza di escape è noto come Interpret As Command (IAC).
TELNET non può però contare solo sul flusso dati per recapitare sequenze di controllo tra client e server, perchè un programma malfunzionante che necessita di controllo potrebbe inavvertitamente bloccare tale flusso. Per risolvere tale problema, TCP implementa una segnalazione out of band, con un meccanismo di urgent data. Quando viene posta una funzione di controllo in un flusso dati, TELNET riserva un ottetto detto data mark, ed il TCP invia al server un segmento con URGENT DATA. Questo raggiunge il server immediatamente permettendogli di leggere e scartare tutti i dati finchè non trova il data mark.




Negoziazione delle opzioni TELNET



Le opzioni TELNET rappresentano l'aspetto più complesso del protocollo. Tali opzioni sono negoziabili, permettendo al client ed al server di riconfigurare la propria connessione. Per esempio, una opzione permette di definire un flusso dati ad 8 bit invece dei 7 standard: entrambi dovranno accettare i termini della negoziazione perchè essa possa avere effetto.
Il protocollo è simmetrico rispetto all'operazione di negoziazione perchè permette ad entrambe le parti di effettuare una richiesta di una particolare opzione.
Se una delle due parti non è in grado di capire una richiesta di negoziazione, in quanto adopera una implementazione NVT non aggiornata, declinerà semplicemente la richiesta come se non l'avesse accettata.
La negoziazione assume un aspetto fondamentale, perchè permette di poter accedere a quasi tutti i terminali senza che il client li conosca tutti.




Rlogin (BSD UNIX)



Sistemi operativi derivanti dal BSD UNIX contengono un servizio di login remoto (rlogin), che supporta hosts fidati (che non necessitano cioè di password). Esso permette all'amministratore di sistema di scegliere un set di macchine che condividono i nomi di login e le protezioni all'accesso ai files. Gli utenti controllano l'accesso ai loro accounts autorizzando un login remoto basato sull'host e sul nome dell'utente remoto.
E' possibile per un utente avere due nomi di login diversi su altrettante macchine ed essere in grado di logarsi da una macchina ad un'altra senza dover specificare la password ogni volta.
Una variante del comando rlogin, il rsh, permette di invocare un interprete dei comandi su una macchina UNIX remota e passare gli argomenti della linea di comando all'interprete saltando così completamente il passo del login. Il formato è il seguente:
 rsh       machine    command   
Poichè l'utente può far si che rsh invochi comandi remoti senza dover fare uso della password, esso può essere usato sia in programmi che digitato dalla tastiera. I protocolli come il rlogin comunicano meglio dei login remoti general-purpose come il TELNET, in quanto interpretano sia gli sviluppi computazionali locali che remoti.





Ultimo aggiornamento: 11 Novembre 1996



Telemat Lab's home page

home pageIndicePrec.Succ.




Explore the TELEMAT Site !!!

WORK IN PROGRESS by D. Mariano e C. Guadalupi