INDIETRO SU AVANTI

Telnet e il concetto di Network virtual terminal


Telnet permette ad un utente ad un sito di aprire una connessione TCP con un server di login ad un altro sito, quindi passa i caratteri battuti al terminale utente direttamente alla macchina remota come se fossero stati battuti su quest'ultima. Inoltre Telnet trasporta l'output della macchina remota al terminale dell'utente.

Il sistema operativo dal lato client puo' richiedere caratteri di controllo della coda canonica differenti da quelli che si aspetta il sistema server. P.es una linea puo essere terminata da un Carriage Return-Line Feed o solo da un Line Feed; oppure il carattere di cancellazione puo' essere diverso.

Per adattarsi a questa eterogeneita', Telnet definisce quali siano i dati e le sequenze di comandi che dvono transitare in rete. Questi caratteri di controllo standard definiscono un terminale virtuale di rete chiamato Network Virtual Terminal (NVT). Sul server e sul client i programmi Telnet operano una conversione da formato NVT a formato nativo del sistema e viceversa.

Il formato e' semplice. Vengono usati caratteri a 8 bit. I caratteri ASCII stampabili mantengono il loro significato intrinseco. I 33 caratteri non stampabili della parte bassa di ASCII assumono valori di comandi Telnet. I caratteri ASCII alti vengono riservati per sequenze di comandi.

Come conseguenza i caratteri usabili in Telnet sono quelli della prima parte di ASCII. E' possibile specificare a volte come opzione di usare lo ASCII pieno, e allora i caratteri di controllo vengono o prefissati da sequenze di escape, o trasmessi fuori banda.

E' da notare che non solo Telnet, ma un numero elevatissimo di applicativi di rete ha adottato la tecnica di codifica NVT in versione base. Cio' significa che Telnet lo si puo' usare per la conversazione lato client con un numero elevato di server che si adeguano a questo metodo.

Telnet offre numerose opzioni per interfacciarsi a server con sistemi diversi. La piu' usata e' l'impostazione del modo trasmissione, che puo' essere:

La negoziazione delle opzioni e' completamente simmetrica, cioe' le opzioni possono essere richieste dal client o dal server, e il corrispondente le puo' accettare o rifiutare. Il comportamento e' del tutto trasparente per l'utente.

Invocazione di Telnet

Dalla linea di comando digitare:

telnet [ <sistema remoto> [ <porto> ] ]

Ove:

Se non vengono dati parametri sulla linea di comando, allora si entra in ambiente interno Telnet, da cui sono disponibili un certo numero di comandi, che possono variare leggermente a seconda delle impostazioni.

In tal caso il pronto e':

telnet>

Una piccola schermata di aiuto si puo' ottenere digitando il comando interno ?:


telnet> ?
Commands may be abbreviated.  Commands are:

close           close current connection
logout          forcibly logout remote user and close the
connection
display         display operating parameters
mode            try to enter line or character mode ('mode ?' for
more)
open            connect to a site
quit            exit telnet
send            transmit special characters ('send ?' for more)
set             set operating parameters ('set ?' for more)
unset           unset operating parameters ('unset ?' for more)
status          print status information
toggle          toggle operating parameters ('toggle ?' for more)
slc             change state of special charaters ('slc ?' for
more)
auth            turn on (off) authentication ('auth ?' for more)
z               suspend telnet
environ         change environment variables ('environ ?' for
more)
?               print help information
telnet> 

Per aprire una connessione alla macchina, p.es, mira dall'interno di telnet digitare:

open mira

Il responso che si ottiene e' del tipo:

telnet> open mira
Trying 161.27.112.3...
Connected to mira.olivi.elea.it.
Escape character is '^]'.

Linux 2.0.0 (mira.olivi.elea.it) (ttyp2)


mira login: 

E' qui' contenuta l'informazione molto importante di quale sia il carattere di escape, in questo caso e' ^] (Control-]).

Premendo questo carattere in qualsiasi momento si sospende la sessione di terminale e si ritorna al pronto interno di telnet, da cui e' possibile dare qualsiasi comando interno.

Per ripristinare la sessione di terminale battere INVIO.

Come gia' detto si puo' usare telnet per interfacciare un qualsiasi server remoto basato su NVT. Occorre a questo punto conoscere i comandi di protocollo giusti per quel tipo di servizio.

Per esempio si puo' chiamare POP per verificare se si ha posta:

telnet> open relay.elea.it 110
Trying 161.27.67.2...
Connected to relay.elea.it.
Escape character is '^]'.
+OK Olivetti Pop server (version 1.00 in progress) at relay
starting.
user zork
+OK Password required for mich.
pass xalfaq1
+OK zork has 0 message(s) (0 octets).
quit
+OK Pop server at relay signing off.
Connection closed by foreign host.