Copyright © 1997 Università di Firenze. All rights reserved.
license available.
CORSO DI TELEMATICA
LOGIN REMOTO, TRASFERIMENTO FILE, POSTA ELETTRONICA
|
|
![]() |
I protocolli affidabili di stream, come il TCP, rendono
possibile anche l'uso interattivo di macchine remote. Per esempio, si può
immaginare la costruzione di un server che fornisca un servizio remoto
di editing di testi. Per implementare questo servizio, sarebbe necessario
un server che accettasse le richieste per l'editing di un file ed un client
per effettuare tali richieste. Il problema con l'impiego di un server per
ogni servizio di elaborazione è che le macchine diventano rapidamente
affollate di processi server. Si possono eliminare i server più
specializzati e fornire più generalità permettendo all'utente
di stabilire una sessione di login nella macchina remota e quindi eseguire
i comandi. Con una facility di login remoto, gli utenti hanno accesso a
tutti i comandi disponibili nella macchina remota, ed i progettisti di
sistemi non hanno bisogno di fornire server specializzati.
TELNET
è un semplice protocollo di terminale remoto che fa parte della
suite di protocolli TCP/IP. Esso permette ad un utente in una postazione
di stabilire una connessione TCP con un login server in un'altra postazione,
dopodichè passa le battute di tasti direttamente alla macchina remota.
Inoltre, TELNET trasporta l'output dalla macchina remota di nuovo al terminale
dell'utente.
Il servizio è detto trasparente perchè dà l'impressione
che il terminale dell'utente sia connesso direttamente alla macchina remota.
Solitamente, il software del client TELNET permette all'utente di specificare
una macchina remota, fornendo il suo nome di dominio o l'indirizzo IP.
|
|
![]() |
TELNET impiega tre metodologie.
Primo, esso definisce un "terminale virtuale di rete" che fornisce
un interfaccia standard a sistemi remoti. Quindi non è necessario
che il client (o il server) conosca tutti i dettagli riguardanti i sistemi
remoti.
Secondo, TELNET permette al client e al server di negoziare le opzioni
e fornisce un insieme di opzioni standard (es: è possibile controllare
se il trasferimento dei dati impiega l'insieme di caratteri ASCII a 7 o
8 bit).
Infine TELNET tratta simmetricamente entrambe le estremità della
connessione; quindi ogni estremità può iniziare la negoziazione
di un gruppo di opzioni.
|
|
![]() |
La slide illustra il cammino percorso dai dati in una
sessione di terminale remoto TELNET da client a server (il viceversa è
simmetrico).
Come mostrato nella slide, quando un utente chiama TELNET, si attiva un
client nella macchina utente. Il client stabilisce col server una connessione
TCP con cui comunicare. Una volta che tale connessione è stata stabilita,
il client accetta le battute di tasti dal terminale dell'utente e le invia
al server, mentre accetta in maniera concorrente i caratteri che il server
rimanda indietro e li visualizza sul terminale dell'utente. Il server deve
accettare una connessione TCP dal client e quindi ritrasmettere i dati
fra la connessione TCP ed il sistema operativo locale.
Quello mostrato è un modello semplificato; in realtà infatti
il server deve poter gestire più connessioni simultaneamente. Quello
che fa è quindi creare un nuovo server per ciascuna connessione,
rimanendo in ascolto di ulteriori richieste. Solo se il sistema operativo
gestisce un'astrazione di pseudoterminale, il server TELNET può
essere implementato.
|
|
![]() |
Per poter far fronte all'eterogeneità dei vari
sistemi, TELNET definisce il modo in cui le sequenze di dati e di comandi
sono inviate attraverso la rete. Tale definizione è nota come NVT
(Network Virtual Terminal).
Come si vede dalla figura sopra, il software del client si preoccupa di
convertire sequenze di dati e comandi dal formato utilizzato dal terminale
dell'utente nel formato NVT e le invia al server. È poi compito
del software del server di effettuare la conversione da NVT al formato
richiesto dal terminale remoto. Il processo opposto avviene per i dati
di ritorno.
La definizione del formato NVT è piuttosto immediata.
Tutta la comunicazione riguarda parole di 8 bit.
All' avviamento l'NVT impiega la rappresentazione standard USASCII di 7
bit per i dati e riserva i byte con il bit più significativo attivato
per le sequenze di comandi. In particolare per i 95 caratteri stampabili
di USASCII viene mantenuto lo stesso significato, mentre per i 33 codici
di "controllo" viene assegnato un opportuno significato. Il sistema
NVT, inoltre, definisce la terminazione della riga come una sequenza dei
due caratteri CR-LF.
|
|
![]() |
L'NVT di TELNET gestisce le funzioni di controllo previste
da un certo sistema operativo, definendo il modo con cui sono passate dal
client al server.
Concettualmente è come se l'NVT accettasse l'input da terminali
che possono generare più di 128 caratteri. In realtà la maggior
parte dei terminali non dispone di tasti extra per i comandi, ma sono i
singoli sistemi operativi a generarli in vari modi (es: il Control-C per
il break).
I progettisti di NVT hanno scelto di tenere separati i comandi dal normale
insieme di caratteri ASCII. In particolare, invece di utilizzare 7 bit
per i dati e il più significativo per le sequenze di comandi (in
modo tale da avere 128 caratteri per i dati e altrettanti per i comandi),
si utilizzano tutti ed 8 per i dati. Ne consegue che per passare le funzioni
di controllo attraverso la connessione TCP, TELNET le codifica mediante
una sequenza di "escape", che usa un ottetto riservato per indicare
che segue un ottetto di codice. In TELNET tale ottetto riservato è
noto come IAC (Interpret As Command). In questo modo riesco ad ottenere
un set esteso di caratteri per i dati, che possono essere, così,
utilizzati opportunamente, garantendo, tuttavia, la possibilità
di inviare le sequenze di comando.
|
|
![]() |
È importante evidenziare, però, che TELNET
non può fare affidamento unicamente sulla stream di dati tradizionali
per trasportare le sequenze di controllo per il client e il server, poichè
un'applicazione malfunzionante che necessiti di essere controllata potrebbe
bloccare inavvertitamente lo stream dei dati. Per ovviare a ciò
TELNET impiega un "segnale fuori banda". Tale segnalazione è
implementata con meccanismo URGENT in modo del tutto equivalente a quanto
avviene nel TCP/IP. In pratica i segmenti che trasportano dati urgenti
aggirano il controllo di flusso e raggiungono immediatamente il server.
Uno degli aspetti più complessi, ma interessanti di TELNET è
la possibilità di negoziare un'ampia gamma di opzioni; alcune estendono
le capacità principali, mentre altre hanno a che fare con i dettagli.
Si può, ad esempio, stabilire la modalità di trasferimento
(half-duplex, full-duplex), consentire al server in una macchina remota
di determinare il tipo di terminale dell'utente, consentire al client e
al server di trasmettere dati di 8 bit (solitamente 7 bit sono previsti
per i dati e l'ottavo come controllo) e molte altre.
|
|
![]() |
La negoziazione delle opzioni avviene attraverso un protocollo
simmetrico, infatti sia il client che il server possono iniziare una richiesta.
L'estremità ricevente risponde ad una richiesta (WILL X in terminologia
TELNET) con un'accetazione (DO X) o con un rifiuto (DON'T X).
Un aspetto importante è che se una delle due parti tenta di negoziare
un'opzione che l'altro non comprende, la parte che riceve la richiesta
può semplicemente rifiutarla. Pertanto è possibile l'interoperabilità
fra le versioni dei client e dei server di TELNET più recenti e
raffinate con le versioni più vecchie e meno avanzate.
Se le nuove opzioni sono comprese sia dal client che dal server, allora
essi potranno migliorare l'interazione, altrimenti torneranno ad uno stile
meno efficente, ma funzionante.
|
|
![]() |
Il sistema UNIX 4BSD include un servizio di login remoto,
rlogin, che gestisce gli host fidati. Esso consente agli amministratori
di sistemi di scegliere un insieme di macchine, su cui vengono condivisi
i nomi di login e le protezioni di accesso ai file, e di stabilire le equivalenze
fra i login degli utenti. Costoro possono controllare l'accesso ai loro
account autorizzando il login remoto in base all'host remoto ed al nome
dell'utente remoto. Pertanto, è possibile che un utente abbia nome
di login X su una macchina e Y su un'altra, e che tuttavia sia ancora in
grado di collegarsi in un login remoto da una delle macchine all'altra
senza digitare ogni volta una password.
La possibilità di un'autorizzazione automatica rende utili le facility
di login remoto per programmi di applicabilità generale, oltre che
per le interazioni umane.
Poichè i protocolli come rlogin comprendono sia l'ambiente di elaborazione
locale che quello remoto, essi comunicano meglio dei protocolli di login
remoto di applicabilità generale, come il TELNET.
Rlogin comprende le funzioni di contollo del terminale come i caratteri
di controllo di flusso (solitamente, Control-S e Control-Q). Esso fa in
modo di sospendere l'output immediatamente, senza aspettare il ritardo
richiesto per effettuare la trasmissione attraverso la rete fino all'host
remoto. Inoltre, rlogin esporta una parte dell'ambiente dell'utente alla
macchina remota, incluse le informazioni sul tipo di terminale dell'utente
(cioè, la variabile TERM). Come risultato, le sessioni di login
remoto appaiono comportarsi esattamente come le sessioni di login locale.