PRESENTAZIONE: I PROTOCOLLI DI RETE



[pic]

UNIVERSITÀ DEGLI STUDI DI SALERNO

FACOLTÀ DI ECONOMIA

TESINA

I PROTOCOLLI DI RETE

CANDIDATO

CERIALE GIACOMO

(Matr. 236000287)

ANNO ACCADEMICO 2004/2005

PRESENTAZIONE: I PROTOCOLLI DI RETE

Un protocollo di rete è l’insieme delle regole che vengono utilizzate per la trasmissione dei dati su una rete. Per esempio, i protocolli Transmission Control Protocol/Internet Protocol (TCP/IP) definiscono l’insieme delle regole necessarie per inviare i dati fra i nodi della rete. Il protocollo Simple Mail Transfert Protocol (SMTP) è un insieme di regole e procedure per trasferire la posta elettronica e i relativi allegati da un nodo all’altro. Il protocollo Dynamic Host Configuration Protocol (DHCP) è l’insieme delle regole e procedure utilizzate per assegnare gli indirizzi IP di una rete in modo dinamico. Nelle reti si utilizzano molti protocolli. In effetti, ogni attività sulla rete è conforme a qualche protocollo.

Nelle reti, quindi, si vengono ad utilizzare molti protocolli. In effetti, in un certo senso, ogni attività sulla rete è conforme a qualche protocollo.

In conclusione, alcuni protocolli operano a livello basso del modello di rete OSI, altri protocolli operano ad un livello alto ed altri ancora lavorano a livelli intermedi.

I PROTOCOLLI TCP/IP

Con il nome TCP/IP s’identifica tutta una serie di protocolli di rete che si sono andati via via sviluppando a partire dal 1969 ad oggi. Vi sono letteralmente molte decine di tali protocolli, non tutti necessari o supportati; molti sono obsoleti, alcuni sperimentali. La situazione è in continua evoluzione. Vi sono due caratteristiche salienti, che stanno alla base della filosofia tradizionale dei protocolli TCP/IP, e che hanno condizionato finora il design dei protocolli:

• Il mezzo trasmissivo, la Rete, è per sua natura inaffidabile e soggetta a variazioni di traffico e di topologia. Spetta ai terminali della comunicazione di rete la responsabilità di validare ultimamente i messaggi ricevuti.

• Vige uno spirito "Federale" di cooperazione tra i vari protocolli, dovuto al fatto che le risorse di rete sono poco costose e gli utenti amichevoli. Vengono favorite connessioni broadcast e multicast ai circuiti virtuali dedicati e il controllo intrinseco è poco.

L’acronimo TCP/IP indica due protocolli utilizzati congiuntamente, il protocollo IP stabilisce come indirizzare i dati dal sorgente al destinatario; il protocollo TCP opera, invece, a livello superiore del protocollo IP, cioè il livello Trasporto. I principi guida originali sono oggi sotto accusa sia dai requisiti crescenti della tecnologia, sia dalla complessità sociale degli utenti della rete. È innegabile comunque che i protocolli TCP/IP esistono, funzionano e sono alla base del fenomeno Internet e ultimamente della Cybersocietà d'oggi.

INTERNET PROTOCOL (IP)

Concettualmente l'internet prevede tre tipi di servizi, come mostrato in figura, che hanno tra di loro una chiara gerarchia di dipendenze.

[pic]

Dunque, a livello più basso, un servizio di recapito connectionless rappresenta la base su cui si poggia ogni cosa; infatti, il protocollo IP è fondamentale perché, anche se di per sé realizza una trasmissione non sicura, fornisce il supporto necessario per tutti gli altri protocolli affidabili (Reliable Transport Service) quali il TCP e quindi per gli stessi applicativi (Application Services) quali l'FTP ed il TELNET. Tecnicamente, il protocollo IP è definito:

• Unreliable: è un servizio senza garanzie; i pacchetti possono essere persi, venire duplicati o consegnati fuori ordine senza per questo avvisare né l'utente sorgente né quello destinazione. Va, comunque, sottolineato che la perdita di un pacchetto avviene solamente in casi abbastanza eccezionali, quali la congestione totale di un componente o, addirittura, la caduta della rete.

• Connectionless: è un servizio non orientato alla connessione; ogni pacchetto viene trattato indipendentemente da tutti gli altri. Una sequenza di pacchetti spediti da un computer ad un altro potrebbero seguire cammini diversi per giungere a destinazione.

• Best-effort: il protocollo IP effettua un serio tentativo nell'inoltro dei pacchetti.

In sostanza IP definisce l'unità base del datagramma e la forma esatta di tutti i dati che passano attraverso Internet, gestisce le funzioni di routing (specificando il percorso sul quale verranno spediti i dati) ed include un insieme di regole che caratterizzano come gli hosts ed i routers processano i pacchetti, la generazione dei messaggi di errore e le condizioni sotto le quali un pacchetto è scartato.

USER DATAGRAM PROTOCOL (UDP)

UDP è un protocollo di trasporto semplice, senza connessione, basato sul trasferimento di datagrammi. UDP è descritto dal documento RFC768 (Fin dal 1969 i documenti e gli articoli che trattano di argomenti relativi ai protocolli TCP/IP e alla rete Internet, e che sono stati sanzionati ufficialmente dalla Internet Activities Board o da un precedente comitato equivalente, vengono raccolti e numerati. Questi documenti sono i Request For Comments (RFC). Sono identificati da una sigla consistente delle lettere ``RFC'' seguite da un numero progressivo. Al momento gli RFC sono circa 2000. A intervalli regolari viene pubblicato un RFC che funge da indice e da descrittore dello stato degli RFC. Gli RFC non vengono mai ritirati ma possono diventare obsoleti e venire rimpiazzati, come autorevolezza, da RFC piu' recenti. Alcuni RFC sono considerati di base per la documentazione della evoluzione della rete Internet. Questi vengono listati regolarmente in altri RFC). Ogni operazione di output di un processo che usa il trasporto UDP produce esattamente un datagramma UDP, che viene incapsulato in un datagramma IP, e non è affidabile.

[pic]

TESTATA UDP

La Testata UDP è relativamente semplice.

[pic]

I campi Porto Sorgente e Porto Destinazione identificano i punti terminali di comunicazione tra i processi comunicanti e la rete. Il campo Lunghezza è dell'intero datagramma UDP (testata + dati) in byte. Il valore minimo è 8, ma in realtà questo campo non viene gestito dal protocollo, che sa che la lunghezza totale e' la lunghezza di un datagramma IP meno i 20 byte della testata IP. Il campo Checksum è anch’esso opzionale.

CHECKSUM DI UDP e TCP

Quando sono calcolati (per TCP è obbligatorio) i campi Checksum di TCP e UDP vengono formati in un modo speciale, poiché il protocollo IP ha un campo checksum della sola testata IP. Innanzitutto la lunghezza del campo dati è estesa ad un confine di 16 bit usando se necessario un campo finale di Pad posto a zero. Viene formato uno pseudo – pacchetto composto da:

• una pseudo – testata IP contenente solo alcuni campi della testata IP originale

• la testata UDP o TCP

• i dati UDP o TCP seguiti dal Pad

Il campo Checksum è calcolato su questo pseudo – pacchetto come complemento a 1 della somma dei complementi a 1 di tutte le parole a 16 nit del pseudo – pacchetto. Il checksum è un campo di controllo end – to – end: è calcolato dal mittente e verificato dal ricevitore del pacchetto. Se il pacchetto UDP è errato, viene scartato silenziosamente. L'opzionalità dei checksum di UDP implica una velocità maggiore delle operazioni se disabilitata, ma può naturalmente fornire sorgenti irrecuperabili d'errori, specie su una rete non Ethernet o quando il datagramma UDP transiti da router. Il protocollo UDP ha lo stesso ruolo del protocollo TCP, ma offre meno funzionalità. Entrambi i pacchetti sono incapsulati in pacchetti IP, ma UDP è un protocollo non orientato alla connessione, la sua unica caratteristica consiste nel rinviare i pacchetti non pervenuti a destinazione. Il vantaggio del protocollo UDP consiste nel fatto che è molto più veloce in operazione di trasferimento, è ideale nelle applicazioni che richiedono dei trasferimenti veloci.

LE PORTE TCP E UDP

Entrambi i protocolli supportano il concetto di Porte alle quali sono dirette i pacchetti nelle stazioni riceventi. Ad esempio la maggior parte server Web ricevono le richieste tramite la porta numero 80. Quando un computer riceve dai livelli superiori dei pacchetti destinati al server Web, li indirizza alla porta corrispondente. Quando si richiede una pagina Web da un server Web, il computer invia una richiesta al server e specifica che deve andare alla porta 80. Sono state standardizzare le porte per centinaia di applicazioni. Un file chiamato Service definisce le porte utilizzate sul computer. Da un file si può vedere che la maggior parte dei servizi Internet utilizza le porte TCP e UDP. L’uso delle porte garantisce che le comunicazioni di rete, per uno scopo particolare, non vengono confuse con altre. Le porte consentono alla macchina ricevente di indirizzare opportunamente i dati in arrivo. I pacchetti che arrivano alla porta 80 saranno inviati al software che gestisce il Web, mentre i pacchetti che arrivano alla porta 25 saranno inviati al software che gestisce la posta.

DATAGRAMMA IP

Il datagramma IP (IP datagram) è l'unità di trasferimento base del TCP/IP. Esso presenta una forte analogia con i frames di una rete reale; infatti, si compone di una header area e di una data area. L'header (di almeno 20 byte) contiene l'indirizzo di destinazione (Destination IP Address) e di partenza (Source IP Address), anche perché ricordiamo che il livello IP svolge funzioni di routing fondamentali per l'architettura dell'intera rete internet proprio su questi indirizzi. La differenza con l'header del frame fisico reale è che, mentre quest'ultimo contiene un indirizzo fisico, quello del datagramma contiene un indirizzo IP. La figura mostra la struttura del datagramma IP:

[pic]

PACCHETTI IP E INDIRIZZAMENTO IP

I pacchetti IP utilizzano degli indirizzi che individuano univocamente qualsiasi computer connesso ad Internet. Questi indirizzi sono utilizzati per instradare i pacchetti dal nodo mittente al nodo ricevente. I pacchetti IP, oltre a contenere i dati, contengono vari campi: VERSIONE: che indica la versione del protocollo IP utilizzato ed indica se si sta utilizzando il protocollo IP versione 4 o 6; LUNGHEZZA DELL’INTESTAZIONE: questo campo indica la lunghezza dell’intestazione prima che iniziano i dati del pacchetto; TIPO DI SERVIZIO: questo campo è utilizzato differentemente a seconda dei fornitori dei vari prodotti, per richiedere l’affidabilità più elevata; LUNGHEZZA TOTALE: questo campo indica la lunghezza totale del pacchetto; IDENTIFICAZIONE, FLAG e SPIAZZAMENTO DEL FRAMMENTO: questi tre campi sono utilizzati per comporre un pacchetto IP scomposto durante la trasmissione, TEMPO DI VITA: questo campo specifica quanti altri nodi possono essere attraversati dal pacchetto, prima che sia scaduto. Il valore iniziale di questo campo viene definito quando viene inviato il pacchetto, ogni router che gestisce il pacchetto decrementa il valore di 1. Quando il valore diventa 0, il pacchetto è scaduto; PROTOCOLLO: questo campo indica se il pacchetto IP è contenuto in un pacchetto TCP o in UDP; INDIRIZZO IP SORGENTE: questo campo contiene l’indirizzo del computer che invia il pacchetto, può essere utile ciò, quando un pacchetto debba essere ritrasmesso, nel qual caso il nodo ricevente saprebbe a quale nodo chiedere la ritrasmissione; INDIRIZZO IP DESTINATARIO: Questo campo contiene l’indirizzo del nodo destinatario del pacchetto; INDIRIZZO E RIEMPIMENTO: Questi campi sono utilizzati per indicare delle direttive specifiche d’instradamento o quando è stato spedito il pacchetto; DATI: Il campo finale di un pacchetto IP contiene i dati reali che vengono inviati con quel pacchetto. Gli indirizzi IP sono di 32 bit e consentono un massimo teorico di circa 4,3 miliardi di indirizzi. Per rendere il loro utilizzo più agevole, gli indirizzi sono scomposti in 4 gruppi di 8 bit. Di conseguenza gli indirizzi IP sono espressi nell’annotazione decimale come xxx.xxx.xxx.xxx, dove ogni gruppo di 3 x rappresenta un numero da 0 a 255. I numeri 0, 127 e 255 sono riservati per scopi speciali. I restanti 253 indirizzi sono disponibili per identificare univocamente i computer sulla rete. L’implementazione attuale di IP chiamata IP VERSIONE 4 (IPv4), si sta avvicinando all’esaurimento degli indirizzi. Nel 94 è stata proposta una soluzione, la nuova versione di IP si chiama IP VERSIONE 6 (IPv6), che risolve il problema della limitazione degli indirizzi aumentando da 32 bit a 128 bit. L’unicità degli indirizzi internet viene garantita da un servizio di registrazione degli indirizzi, amministrato dalla ICANN (Internet Corporation for Assigned Names and Numbers), che assegna 3 classi chiamati A, B e C. In classe A, l’ICANN assegna al proprietario dell’indirizzo un numero nel primo ottetto, ed il proprietario è libero di usare tutte le possibili combinazioni degli ultimi ottetti, un esempio potrebbe essere 57.xxx.xxx.xxx., il proprietario di classe A ha la possibilità di indirizzare al massimo 16,5 milioni di nodi. Gli indirizzi di classe B definiscono i primi due ottetti lasciando gli altri 2 a disposizione, con 65 mila nodi univoci disponibili. La classe C ti occupa i primi tre ottetti, lasciando solo l’ultimo a disposizione del proprietario con 255 nodi univoci. Un fornitore di servizi Internet potrebbe possedere un indirizzo di classe A o di classe B che gli permette di gestire vari indirizzi di classe C all’interno della propria struttura. Gli indirizzi 0, 127 e 255 sono riservati. L’indirizzo 0 si riferisce alla rete stessa, l’indirizzo 127 si utilizza per indicare il software di rete, quello 255 indica tutti i computer di una data rete. Gli indirizzi IP sono formati da 2 parti, la prima (la più a sinistra) è l’identificazione di rete, la seconda parte è l’identificazione del nodo. In un indirizzo di classe C, l’identificatore di rete è tabulato dai primi 3 ottetti, mentre il nodo utilizza il quarto ottetto.

FRAMMENTAZIONE DEI PACCHETTI

È facile che i datagrammi UDP siano frammentati in più pacchetti. Molti applicativi che usano UDP tendono ad impiegare messaggi molto lunghi per tentare di far entrare molte informazioni in un singolo datagramma. La massima dimensione di un pacchetto IP è 65535 byte; con in più le testate UDP e IP si arriva ad un massimo teorico di 65507 byte di dati in un datagramma UDP. Il limite pratico può essere inferiore per due motivi:

Non tutte le librerie di interfaccia ai socket (Una socket è come una porta di comunicazione e non è molto diversa da una presa elettrica: tutto ciò che è in grado di comunicare tramite il protocollo standard TCP/IP, può collegarsi ad una socket e comunicare tramite questa porta di comunicazione) permettono datagrammi così grandi: la maggior parte permette 8192 byte o poco più;

• Nell'implementazione dei protocolli TCP/IP nel kernel vi sono spesso limitazioni alla dimensione massima di un pacchetto, volute o per errore.

Un effetto perverso si ha quando la rete supporta l'invio di datagrammi grandi ma l'applicativo ricevente ha un buffer di ricezione molto limitato. Alcune versioni antiche di Berkley UNIX non notificano l'applicativo che il datagramma è stato troncato. Versioni derivate da UNIX SVR4 non scartano i dati in eccesso, ma eseguono più letture del datagramma per incamerare tutti i dati in arrivo. L'interfaccia TLI (Transport Level Interface) dell’AT&T non scarta i dati, ma ritorna un flag all'applicativo per indicare la necessità di ulteriori operazioni di lettura.

INTERAZIONE UDP - ALTRI PROTOCOLLI

Dato il volume di dati che UDP può generare su rete e la possibilità elevata di frammentazione, il caso più frequente è la generazione di messaggi ICMP: Source Quench (per indicare la necessità di ridurre la velocità di invio pacchetti. Per un periodo di tempo la moda è stata di deprecare l'uso di messaggi Source Quench ritenuti solo un ulteriore aggravio del carico di rete ed inefficaci nel ridurre le congestioni. La moda attuale è tornata a favorirli); Destination Unreachable (codice indicante frammentazione necessaria. Molte versioni UNIX, per esempio Solaris, preferiscono negoziare un Path MTU piuttosto che frammentare i pacchetti di continuo); Time Exceeded è un codice indicante tempo scaduto durante il riassemblaggio dei pacchetti. Uno strano effetto d’interazione tra UDP ed ARP (Il protocollo ARP (Address Resolution Protocol) è un protocollo che fornisce la "mappatura" tra l'indirizzo IP a 32bit (4byte) di un calcolatore e il suo MAC address, l'indirizzo fisico a 48bit (6 byte). È un protocollo di servizio, utilizzato in una rete di calcolatori che utilizzi il protocollo di rete IP sopra una rete di livello datalink che supporti il servizio di broadcast. Se questo servizio non è disponibile, come ad esempio in ATM, devono essere utilizzati altri meccanismi. Per inviare un pacchetto IP ad un calcolatore della stessa sottorete, è necessario incapsularlo in un pacchetto di livello datalink, che dovrà avere come indirizzo destinazione il mac address del calcolatore a cui lo si vuole inviare. ARP viene utilizzato per ottenere questo indirizzo. Se il pacchetto deve essere inviato ad un calcolatore di un'altra sottorete, ARP viene utilizzato per scoprire il mac address del gateway. In ogni calcolatore, il protocollo ARP tiene traccia delle risposte ottenute in una apposita cache, per evitare di utilizzare ARP prima di inviare ciascun pacchetto. Le voci della cache ARP vengono cancellate dopo un certo tempo di inutilizzo) si verifica quando i datagrammi sono appena superiori in dimensione a 8192 byte e abbisognano di frammentazione. Più frammenti sono generati e ciascuno di essi causa l'invio di una richiesta ARP. ARP scarta tutti i frammenti tranne l'ultimo, ma genera le richieste troppo velocemente. Quando un responso ARP arriva, la stazione inviante ha già scartato tutti i pacchetti, tranne l'ultimo.

LE MASCHERE DI SOTTORETE

Se si esamina una configurazione IP di un computer si potrà notare che il computer ha sempre un indirizzo IP ed una maschera sottorete, ad esempio la maschera di sottorete definisce quale parte dell’indirizzo IP del computer rappresenta il Netid e quale parte presenta l’Hostid. Le maschere di sottorete dovrebbero sempre utilizzare le cifre 1 contigue partendo da sinistra verso destra, la porzione d’indirizzo corrispondente dovrebbe contenere tutte cifre 0 partendo da destra verso sinistra. Nel caso di un’azienda suddivisa in 3 edifici, se si vuole suddividere un singolo indirizzo di classe C in modo che ogni edificio possa utilizzarne una porzione, le maschere di sottorete servono appunto a creare queste configurazioni. Quindi gli indirizzi IP sono divisi in un Identificatore di rete Netid ed uno Hostid.

DNS - STRUTTURA DEL SERVIZIO

Il DNS (Domain Name System) è un database distribuito usato dagli applicativi TCP/IP per la mappatura da nomi host ad indirizzi di Internet. Non esiste un singolo sito in Internet che conosca tutte le informazioni del database, invece ogni sito mantiene la sua porzione di database limitata alla descrizione del sito e gestisce un server di questa porzione di database, che può essere interrogato da altri sistemi in Internet. Gli applicativi accedono al servizio DNS tramite un Resolver. Questo non è un programma specifico, ma è invece un insieme di funzioni di programmazione predisposte a contattare il server DNS. Il Resolver non è quindi parte dei protocolli TCP/IP del kernel, ma dei protocolli applicativi. È, quindi, compito degli applicativi convertire il nome host in indirizzo IP prima di invocare i protocolli TCP o UDP. L'implementazione DNS più comune per UNIX si chiama BIND (Berkeley Internet Domain Server), ed il nome del programma è di solito named.

DOMINI DNS

Lo spazio dei nomi del DNS è gerarchico ed implementato in una struttura ad albero. Ogni nodo ha un'etichetta di lunghezza massima 63 caratteri. La radice è un nodo speciale senza etichetta. Non vi è differenza nelle etichette tra maiuscole e minuscole. Il nome di dominio è la sequenza di etichette a partire dal nodo verso la radice, usando il carattere “punto” (.) come separatore di etichetta. Ogni nodo dell'albero DNS deve avere un nome di dominio univoco. Le etichette possono essere ripetute in locazioni diverse dell'albero (stesse regole dei nomi di files e directories in un file system). Un nome dominio che termina con un punto si dice Nome di Dominio Completo. Se il nome di dominio non termina con un punto si presume che non sia completamente qualificato e che manchino, quindi, etichette di nodi. Un nodo dell'albero direttamente sotto il nodo radice si chiama Dominio ad Alto Livello (Top Level Domain). Questi sono divisi in tre aree:

1. ARPA: dominio speciale usato per le mappature da indirizzi IP a nomi

2. DOMINI GENERICI: sono 7 e sono identificati da codici a tre caratteri

3. DOMINI NAZIONALI: sono a due caratteri e definiti dallo standard ISO 3166.

[pic]

Non vi è nessuna implicazione che i domini generici siano riservati agli Stati Uniti, e difatti esiste anche il dominio nazionale US. Molte nazioni (Gran Bretagna, Germania, ecc.) suddividono il dominio nazionale ad alto livello in domini a secondo ed anche a terzo livello predeterminati. Altre nazioni non lo fanno (Italia). Un Name Server è un programma ed una macchina che ha autorità su una o più zone. È necessario configurare per ogni zona un Name Server Primario ed alcuni (minimo due) Name Server Secondari. Il Server Primario contiene il database DNS vero e proprio in file di configurazione, i server secondari contattano il server primario ad intervalli regolari (ad esempio ogni 3 ore) ed eseguono una Zone Transfer, cioè il download del database corrente. Se un server che viene interpellato da un resolver, non conosce l'informazione richiestagli, può agire in uno di due modi:

• prendersi carico della richiesta del resolver e contattare a sua volta un altro server (Ricerca Ricorsiva)

• fornire al resolver una lista di altri server da contattare direttamente (Ricerca Iterativa)

Ogni server mantiene una cache di informazioni risolte recentemente, per alleviare il numero di messaggi DNS scambiati in rete.

FORMATO DEI MESSAGGI

FORMATO GENERALE

Il formato generale di un messaggio DNS definisce sia le richieste che i responsi.

[pic]

Il messaggio ha una testata fissa di 12 byte seguita da quattro campi a lunghezza variabile. Il campo Identificativo è deciso dal client e ritornato nei messaggi del server.

[pic]

Il campo Flag è a 16 bit e contiene i seguenti sottocampi:

• QR - richiesta (0) o responso (1)

• Codice - Richiesta Standard=0, Richiesta Inversa=1, Richiesta di Stato del Server=2

• AA - Risposta Autorevole del server se 1

• TC - Troncato se 1: il responso eccedeva i 512 byte ed e' stato troncato

• RD - Ricorsione Desiderata se 1, altrimenti ricerca iterativa

• RA - Ricorsione Disponibile, settato dal server

• Ritorno - Codice di ritorno: Nessun Errore=0, Errore=3

I quattro campi seguenti specificano il numero di entries nei quattro campi a lunghezza variabile che seguono. Per una Richiesta, il Numero Richieste è solitamente 1 e gli altri valori sono 0. Per un Responso, il Numero Responsi è almeno 1 ed i campi successivi possono essere 0 o maggiori.

FORMATO RICHIESTA

Normalmente vi è solo una richiesta.

[pic]

Il campo Nome Richiesto è una sequenza di una o più etichette. Ciascuna etichetta inizia con un byte contenente la lunghezza dell'etichetta seguito dai caratteri dell'etichetta. La sequenza è terminata da un byte zero. Il campo può terminare ad un confine qualsiasi, non necessariamente di 32 bit. Non si usa pad. Il campo Tipo Richiesta ed il campo Tipo Responso, nei responsi, contengono un'etichetta di tipo. Vi sono più di 20 tipi definiti, chiamati anche tipi di Resource Record. Alcuni sono più comuni.

[pic]

Il campo Classe Richiesta è normalmente 1, a specificare l’indirizzo Internet. Altre classi sono solo sperimentali.

FORMATO RECORD DI RISORSA DI UN RESPONSO

Le porzioni del messaggio DNS Risposta, Autorità e Informazioni Aggiuntive hanno un formato comune.

[pic]

Il Nome Dominio è il nome a cui i dati che seguono si riferiscono. Il Tipo specifica il Resource Record. Il Tempo di Vita è la validità in secondi del Resource Record fornito (dell'ordine di 2 giorni, solitamente). La Lunghezza Dati fornisce la lunghezza in byte del campo Dati che segue.

IL PROTOCOLLO BOOTP

Il BOOTP (Bootstrap Protocol) fornisce un metodo per una stazione senza disco fisso di compiere un Bootstrap ottenendo le informazioni necessarie al boot da un server di rete, ed è documentato in RFC1532. I messaggi BOOTP sono contenuti in datagrammi UDP. Il formato è comune ai due tipi di messaggio, Richiesta e Responso.

[pic]

Il campo Codice vale 1 per una Richiesta e 2 per un Responso. Il campo Tipo Hardware è lo stesso del corrispondente campo in una trama ARP, e vale 1 per un collegamento Ethernet a 10 Mbit/sec. Il campo Lunghezza Indirizzo Hardware vale 6 per Ethernet. Il campo Numero Hop è settato a 0 dal client e può essere usato da un Server Proxy. L’ID Transazione è un intero settato dal client in modo casuale e serve ad identificare il collegamento specifico tra client e server in presenza di più collegamenti simultanei nella rete. Il server pone lo stesso identificativo nel messaggio Responso. Il campo Numero Secondi viene settato dal client ad un valore determinato dall'implementazione. I server BOOTP in rete esaminano questo campo, mentre quelli secondari intervengono allo scadere di questo tempo se non è stato inviato alcun responso da parte del server primario. Se il client conosce il proprio Indirizzo IP allora riempie il campo corrispondente, altrimenti lo pone a zero. Se il campo è zero, il server pone l'Indirizzo IP giusto nel Responso e nel campo Indirizzo Richiesto. Il campo Indirizzo Server è settato dal server che risponde. Se il server è su un'altra rete ed è in uso un Server Proxy, questi riempie il campo Indirizzo Gateway. Il client setta il campo Indirizzo Hardware. Questo campo è allineato a 32 bit, eventualmente ponendo al termine un pad di zeri. Il server pone il proprio nome nel campo Nome Server come stringa terminata da un NUL, e se applicabile il Nome File di boot, anch'esso come stringa. Il client, successivamente, può eseguire il download del file di boot con un altro protocollo, ad esempio con il TFTP. Il campo Opzioni Venditore può contenere informazioni aggiuntive specifiche dell'implementazione. La Richiesta BOOTP è trasmessa all'indirizzo di broadcast locale 255.255.255.255, con indirizzo mittente settato a 0.0.0.0, poiché il client spesso non conosce il proprio indirizzo.

NUMERI DI PORTO

BOOTP usa i porti 67 per il server e 68 per il client. Il client non usa un porto effimero. La ragione è che i server trasmettono il messaggio Responso in modo broadcast e vi potrebbero essere interferenze con altri servizi di altre stazioni che usassero lo stesso porto effimero del client richiedente. Ogni client riceve tutti i Responsi BOOTP, ma riesce a distinguere il suo tramite il campo ID Transazione del messaggio.

DESIGN DEL SERVER BOOTP

Il server conosce l'indirizzo hardware del client e anche quello IP, letto da un file di configurazione, ma il client non conosce il proprio indirizzo IP e quindi non potrebbe determinare che il messaggio Responso è destinato a lui. Vi sono due soluzioni. La prima è che il server usi l'indirizzo hardware del client per aggiornare la cache ARP; è la soluzione tipica dei server UNIX. Il secondo modo è di inviare un Responso broadcast al porto 68 di tutti i client. Il client giusto riconosce il proprio Responso dal campo ID Transazione. Non sono richiesti privilegi da parte del server. Un server BOOTP su un router può essere configurato come Proxy, o meglio come "BOOTP Relay Agent". Alla ricezione di Richieste, tale server pone l'indirizzo dell'interfaccia su cui è giunta la richiesta nel campo Indirizzo Gateway e trasmette la richiesta al vero server. Inoltre incrementa il campo Numero Salti di uno, per impedire effetti perversi di ridirezioni infinite (se il campo supera 255, la richiesta è scartata). Il server vero sa che la richiesta è stata smistata dal fatto che il campo Indirizzo Gateway è discreto, formula il responso e lo invia al Server Proxy, non al cliente. Il Server Proxy la fa proseguire fino al cliente.

OPZIONI VENDITORE

Queste opzioni sono specificate in RFC1533 e consistono in informazioni opzionali ritornate al client. Se le informazioni esistono, i primi 4 byte di questo campo sono settati al Magic Cookie 99.130.83.99, che non è da considerarsi un indirizzo IP. Segue una lista di opzioni, ciascuna allineata al confine di 32 bit da un'opzione Pad.

[pic]

L'opzione Maschera di Sottorete indica al client l'esistenza e il valore della sottorete in vigore. L'opzione Time Offset è il numero di secondi dalla mezzanotte GMT del 1 Gennaio 1900. L'opzione Gateway fornisce al client l'indirizzo del gateway di default e opzionalmente di altri gateways. La lunghezza è sempre un multiplo di 4 byte. Vi sono numerose altre opzioni definite, tra cui Server DNS, Printer Server, Time Server, eccetera. La dimensione massima del campo Opzioni Venditore è comunque limitata a 64 byte.

IL PROTOCOLLO DI TRASFERIMENTO DEI FILES (FTP)

L’acronimo FTP si riferisce sia al protocollo dei files, sia al programma di trasferimento, che utilizza il protocollo FTP. Poiché il programma FTP utilizza FTP come protocollo, ci può essere difficoltà a capire a cosa si faccia riferimento. FTP è un protocollo applicativo che serve per inviare e ricevere dei files tra un client ed un Server Ftp. Di norma, si utilizza il programma FTP o un altro equivalente che supporti il protocollo. I trasferimenti possono essere in modalità Testo o Binario e possono gestire file di qualunque dimensione. Per utilizzare il programma FTP, sulla maggior parte delle piattaforme, è sufficiente introdurre il comando FTP seguito da un indirizzo del sito al quale ci si vuole collegare. Il protocollo FTP è lo standard Internet per i Files Transfers. FTP copia un file completo tra due sistemi. Per usare FTP il client deve compiere un login alla stazione server, con un nome e password validi, oppure può essere configurato il server per accettare login anonimo, usando il nome convenzionale di login anonymous o ftp. FTP è stato progettato per il lavoro tra host diversi, con diversi sistemi operativi. Il documento di riferimento di FTP è lo RFC959, presenta un Protocollo ed apre due connessioni TCP:

1. La connessione di controllo, usata per inviare comandi dal client al server e per i responsi del server. Il server compie una Passive Open sul porta TCP 21 ed attende la connessione del client. Il client compie una Active Open sul proprio porto TCP 21 per stabilire la connessione. La connessione di controllo è attiva per tutta la sessione FTP. Il tipo di servizio IP per la connessione di controllo dovrebbe essere "minimizzare il ritardo"

2. La connessione dati, che viene creata ad ogni trasferimento di un nuovo file.

Il tipo di servizio IP per la connessione dati dovrebbe essere "massimizzare la banda".

L'utente interattivo normalmente non tratta i comandi direttamente; questi sono scambiati dall'interprete di protocollo dell'applicativo.

COMANDI FTP

I comandi vengono inviati attraverso la connessione di controllo in formato NVT ASCII. I comandi sono tre o quattro caratteri maiuscoli con argomenti opzionali. I più usati sono:

[pic]

RESPONSI FTP

I responsi sono formati da un codice numerico a tre cifre in ASCII, seguito da un messaggio. Il software interpreta il codice; il messaggio è per comprensibilità umana. Ogni cifra del codice ha un significato diverso.

[pic]

La terza cifra fornisce dettagli addizionali sui messaggi d'errore. Normalmente un responso FTP è su una sola linea. Nei responsi a più linee, il codice numerico è subito seguito da un trattino su tutte le linee tranne l'ultima, nella quale è seguito da uno spazio.

GESTIONE CONNESSIONE

Vi sono tre usi della connessione dati:

1. invio di un file dal client al server

2. invio di un file dal server al client

3. invio di una lista di file o directory dal server al client

Una connessione nuova è creata per ogni Files Transfers. La procedura normale è come segue:

1. La creazione della connessione dati viene decisa dal client.

2. Il client crea un porto effimero e compie una Open Passiva su tale porto.

3. Il client comunica il numero di porto al server sulla connessione dati col comando PORT.

4. Il server compie una Active Open sul porto effimero comunicatogli dal client, usando il porto locale 20.

ABORT DEL TRASFERIMENTO FILES

La terminazione Abort di un File Transfer dal client al server è semplice: il client sospende la trasmissione dati ed invia un comando ABOR al server sulla connessione di controllo. La terminazione di un file transfer dal server al client è più complessa. L'utente preme il tasto di interruzione ed il client dà subito un messaggio di inizio di Abort. Il client invia il messaggio d’ABOR al server in modalità urgente TCP e il server conferma il messaggio ed abortisce l'invio dei dati. Possono esservi dei pacchetti dati ancora in transito sulla rete: il client li ignora. Alla ricezione della conferma d’ABOR dal server il client dà un messaggio di successo.

IL PROTOCOLLO DI TRASFERIMENTO DELLE NEWS (NNTP)

Usenet (o NetNews) è un insieme di gruppi di discussione che vertono sui più svariati argomenti. Esistono oggi più di 35 mila gruppi di discussione. I messaggi vengono inviati ad un Server Usenet il quale replica il messaggio a tutti gli altri server sparsi per tutto il mondo. Un qualunque messaggio raggiunge così ogni server Usenet esistente nel giro di poche ore. I gruppi di discussione principale sono: .COMP utilizzata per discussioni relative ai computer; .GOV per argomenti che riguarda il governo, .SCI per argomenti scientifici e così via. Questi gruppi possono essere Pubblici se replicati a tutti gli altri indistintamente, Privati se gestiti da organizzazioni particolari che richiedono l’autenticazione degli utenti prima dell’accesso alla lettura o l’aggiunta di messaggi. Il protocollo NNTP è il meccanismo alla base di Usenet e permette il collegamento tra un lettore Usenet ed un Server Usenet.

IL PROTOCOLLO DI TELNET

Il protocollo TELNET permette di stabilire una sessione di terminale remoto con un Host Internet. Con Telnet gli utenti possono controllare i computer remoti, effettuando la gestione dei file e le esecuzione di applicazione. Affinché Telnet possa funzionare, si deve eseguire il software corrispondente sia sul Client che sul Server, per consentire il collegamento si esegue il programma Telnet sul computer client e il programma Telnet sul computer Host. Il protocollo Telnet utilizza il protocollo TCP e, di solito, la porta numero 23, anche se è possibile utilizzare una qualsiasi altra porta. Il documento di riferimento è RFC854. Il codice di caratteri usato è 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 è codificato coi caratteri CR e NUL. Altri applicativi di rete usano lo NVT ASCII, come FTP, SMTP, FINGER e WHOIS. Vi è 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 è seguito dal byte di comando. Per inviare 1xff letterale ne vengono inviati due. I comandi Telnet sono i seguenti:

[pic]

Alcuni dei comandi Telnet sono usati raramente.

NEGOZIAZIONE OPZIONI

Il primo scambio che avviene dopo lo stabilimento della connessione è la Negoziazione d’Opzioni. Ogni opzione è di tre byte:

• il carattere IAC

• il carattere di negoziazione

• la opzione stessa

Le opzioni possibili sono più di 40 e le più usate sono:

• 1 - echo

• 3 - sopprimere il go ahead

• 5 - stato

• 6 - timing mark

• 24 - tipo terminale

• 31 - dimensione finestra

• 32 - velocità terminale

• 33 - controllo flusso remoto

• 34 - linemode

• 36 - variabili ambiente

La negoziazione di opzioni è simmetrica.

MODI DI OPERAZIONE

Vi sono quattro modi di operazione:

1. Mezzo Duplex

2. Carattere per Volta

3. Linea per Volta

4. Linemode

In realtà varie implementazioni di Telnet hanno default di modo diversi.

SEGNALE DI SYNCH

Telnet definisce il Segnale di Synch come il comando Data Mark inviato in modalità TCP urgente. Il comando informa il ricevente di ritornare in processamento dati normali 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.

ESCAPE CLIENTE

Il carattere Control-] (cambiabile come settaggio) informa il client Telnet di entrare in modalità comando. Viene fornito il pronto telnet> ed il client si attende uno dei vari comandi interpretabili.

IL PROTOCOLLO POP (Post Office Protocol)

Il Post Office Protocol (POP) consente ai client di e-mail di prelevare i messaggi di posta elettronica dal server remoto e salvarli sull'elaboratore locale. La maggior parte dei client POP di e-mail sono configurati per l'eliminazione automatica del messaggio sul mail server dopo che questo è stato trasferito con successo sul sistema del client, anche se questo solitamente viene modificato. Per connettersi ad un server POP, il client di e-mail apre una connessione TCP sulla porta 110 del server. Una volta effettuata la connessione, il POP server si presenta al POP client e i due cominciano a scambiarsi comandi e risposte specificati nel protocollo. Parte di questa comunicazione prevede l'autenticazione del client POP in quella che viene definita Fase di Autenticazione, in cui lo username e la password dell'utente sono inviati al server POP. Effettuata l'autenticazione, il client POP passa alla successiva, Fase di Transazione, in cui è possibile utilizzare comandi quali LIST, RETR e DELE rispettivamente per elencare, scaricare ed eliminare i messaggi dal server. I messaggi da eliminare non sono, di fatto, rimossi dal server finché il client POP non invia il comando QUIT per terminare la sessione. A questo punto, il server POP entra nella Fase d’Aggiornamento, dove elimina i messaggi per i quali era stata richiesta la cancellazione ed elimina qualsiasi risorsa residua dalla sessione. Il POP è un protocollo molto più semplice rispetto all'IMAP, in quanto i comandi che possono essere inviati tra client e server sono più limitati e, sebbene i principali client di e-mail utilizzino entrambi i protocolli indifferentemente, il POP ha una diffusione maggiore. La maggior parte degli utenti POP dispone di un unico sistema per leggere le e-mail, su cui scarica i messaggi per l'archiviazione. Questo protocollo mostra un buon funzionamento anche quando la connessione ad Internet o alla rete contenente il mail server non è costante. Occasionalmente, potreste incorrere in varianti meno diffuse del protocollo POP:

• APOP — POP3 con autenticazione MDS, in cui il client e-mail invia al server la password criptata e non in chiaro.

• KPOP — POP3 con autenticazione Kerberos. Per ulteriori informazioni sull'autenticazione Kerberos.

• RPOP — POP3 con autenticazione RPOP, utilizza un'ID per ogni utente, simile ad una password, per autenticare le richieste del POP. L'ID non è tuttavia criptata, quindi RPOP non è più sicura di un POP standard.

IL PROTOCOLLO SMTP (Simple Mail Transfert Protocol)

La posta elettronica ebbe un inizio travagliato, dato che i primi programmi non condividevano gli stessi standard, la situazione ora è migliorata perché la posta elettronica supporta un insieme di standard accettati. Questo protocollo è utilizzato per inviare e ricevere messaggi di posta elettronica da un server di posta elettronica ad un altro. Il dialogo SMTP inizia, quando il sistema trasmittente si collega alla porta 25 del sistema ricevente. Stabilita la connessione, il sistema invia il comando Hello seguito dal proprio indirizzo, il sistema ricevente risponde con un altro comando Hello, ed il dialogo prosegue. La posta elettronica è senza dubbio uno degli applicativi; si ritiene che quasi metà dei pacchetti scambiati in rete appartengano al protocollo SMTP. Il messaggio medio di posta scambiata è di 1500 byte, ma vi sono messaggi che arrivano ad alcuni megabyte di dimensione, poiché la posta viene utilizzata come mezzo di file transfer. L'utente di un sistema di posta elettronica interagisce con un programma che costituisce l'elemento MUA (Mail User Agent). Programmi MUA comuni in ambiente UNIX sono elm, pine, MH, mush, ecc. Lo scambio di posta tra sistemi connessi in rete è effettuato dall'altro elemento dell'ambiente, il MTA (Mail Transfer Agent). Un tipico MTA, per UNIX, è SendMail. È responsabilità dell'amministratore di sistema la configurazione dello MTA. I documenti di riferimento del protocollo SMTP sono RFC821 e RFC822.

IL PROTOCOLLO

La comunicazione tra due MTA usa il codice NVT ASCII. I comandi sono inviati dal client al server ed il server risponde con codici numerici e stringhe di messaggio opzionali. Il numero di comandi è più limitato che in FTP, circa una dozzina, di cui alcuni quasi mai usati. È interessante notare che l'idea della posta elettronica è nata in sordina, non per progetto ufficiale, e i programmatori hanno proprio modificato e semplificato il protocollo TFP. Solo cinque comandi sono usati nello scambio posta, che si svolge come segue:

1. Il client compie un’Active Open al porto TCP 25 del server, che stabilisce la connessione. Il server risponde con un messaggio di benvenuto (codice 220)

2. Il client s’identifica con il comando HELLO, il cui argomento è il proprio nome di dominio completo.

3. Il client invia il comando MAIL che identifica il mittente del messaggio e il comando RCPT che identifica il destinatario. Vi possono essere più RCPT per destinatari multipli.

4. Il contenuto del messaggio è inviato con il comando DATA. Il termine del messaggio è denotato da un singolo carattere punto sull'ultima riga.

5. Lo scambio è terminato dal comando QUIT.

Vi sono alcuni comandi aggiuntivi che tutte le implementazioni di SMTP devono supportare:

• RSET - abortisce la transazione corrente e risetta la connessione

• VRFY - verifica l'esistenza del destinatario senza inviare posta

• NOOP - nessuna operazione, ma forza un messaggio di ricezione dal server

Altri comandi sono utili, ma solo opzionali:

• EXPN - espande una lista di mail nei suoi destinatari

• TURN - inverte i ruoli client e server senza bisogno di una nuova connessione TCP.

COMPONENTI

Un messaggio di posta elettronica consta di tre componenti:

1. La busta. Questa è la coppia di messaggi MAIL e RCPT usati dallo MTA per l'invio.

2. La testata. È usata dal MUA. Un campo testata consiste nel nome del campo, il carattere due punti e il valore del campo. I campi più comuni sono Received, Message-ID, From, Date, Reply-To. I campi che iniziano coi caratteri X- sono definiti dall'utente.

3. Il corpo. È il contenuto del messaggio vero e proprio, ed è separato dalla testata da una linea vuota. Ogni linea può essere al massimo di 1000 caratteri.

La testata ed il corpo insieme si dicono anche il Contenuto del Messaggio. Per lo MTA il contenuto di un messaggio è opaco. Quando un MUA passa un muovo messaggio di posta al suo MTA, questi tenta un recapito immediato. Se la connessione con lo MTA remoto fallisce, molto spesso lo MTA locale riprova dopo un breve intervallo di tempo e poi continua a provare a intervalli regolari per alcuni giorni, prima di dichiarare il destinatario irraggiungibile.

SVILUPPI RECENTI

SMTP ESTESO

Il documento RFC1425 descrive una nuova versione di SMTP, ESMTP (Extended). Il client che desidera farne uso invia il comando EHLLO invece di HELLO. Un server che non riconosce il comando EHLLO e quindi le estensioni, semplicemente invierà un codice di errore.

DHCP (DYNAMIC HOST CONFIGURATION PROTOCOL)

I protocolli DHCP (Dynamic Host Configuration Protocol), nelle prime reti basate su TCP/IP, gli amministratori configuravano l’indirizzo di ogni nodo in un file o con una finestra di dialogo, indirizzi che rimanevano fissati se non configurati manualmente. Capitava così di configurare indirizzi in conflitto causando problemi alla rete. Per risolvere questi inconvenienti e facilitare il processo d’assegnazione degli indirizzi, venne sviluppato il DHCP. Il compito del protocollo è di permettere a stazioni che si collegano ad una rete IP di estrarre la loro configurazione da un server, allo scopo di ridurre il lavoro necessario di amministrazione della rete. In particolare, il server DHCP assegna i valori di configurazione all'atto del collegamento del computer richiedente. DHCP è basato sul protocollo BOOTP con cui mantiene parziale compatibilità all'indietro. La differenza principale è che mentre il server BOOTP richiede configurazione amministrativa manuale, DHCP permette l'allocazione dinamica di indirizzi di rete ai nuovi nodi che si collegano, il recupero e la riallocazione di indirizzi con un meccanismo di “affitto”. Il server DHCP mantiene un intervallo di indirizzi IP che amministra centralmente. È opportuno che in un dominio amministrato da servizio DHCP i singoli computer non compiano più decisioni autonome di selezione indirizzo IP, ma facciano riferimento al server centrale. Il servizio DHCP è descritto nei documenti RFC1541, RFC1533 ed RFC1532. DHCP supporta tre meccanismi di allocazione indirizzi IP:

• automatico - allocazione automatica di un indirizzo permanente

• manuale - configurazione manuale di indirizzi permanenti

• dinamico - allocazione automatica di indirizzi temporanei

MESSAGGIO DHCP

[pic]

Il campo Operazione vale 1 per un messaggio di Richiesta di boot e 2 per un messaggio di Responso. Segue il campo Tipo Indirizzo Hardware; i tipi sono definiti dallo RFC “Assigned Numbers”. Per Ethernet, il valore è 1. Il campo Lunghezza Indirizzo Hardware vale 6 per Ethernet, il campo Numero di Salti è tipicamente 0, ma può essere incrementato da un Relay Agent. Il campo ID Transazione è scelto casualmente dal client e serve ad identificare una richiesta specifica di parametri di boot. Il campo Secondi è inizializzato dal client al numero di secondi trasmessi dall'istante del boot. Il campo Indirizzo Cliente è normalmente vuoto ma può venire riempito dal client che richiede conferma dei parametri precedentemente ottenuti. Il campo Indirizzo Hardware viene riempito dal client. Il server riempie il campo Indirizzo Assegnato nel messaggio di Responso. Il campo Indirizzo Gateway è riempito se è in uso un router come Relay Agent. Il campo Identificativo Server è l'indirizzo del server da usare nel passo successivo del bootstrap del cliente. Un server DHCP può porre il proprio indirizzo in questo campo. Il campo Opzioni è a lunghezza variabile, con un minimo di 312 byte, che porta la lunghezza minima da supportare di un messaggio DHCP a 576 byte.

SERVIZI FORNITI

Il server DHCP fornisce un servizio di registrazione dei parametri di rete dei client, sotto forma di un record chiave-valore per ciascun client. Vi è come Protocollo, una serie di operazioni che si esplicano da quando il client invia un messaggio a quando comunica al Server di terminare un indirizzo IP con un messaggio DHCPRELEASE. I tempi di affitto sono rappresentati in secondi. Si assume che gli orologi del server e del client siano stabili. L'orologio di riferimento all'atto dell'inizio dell'affitto è quello del client. In caso di sfasamento il server comunica un tempo d'affitto più breve al client di quello che effettivamente registra.

PROTOCOLLO IMCP

L’ICMP (Internet Control Message Protocol) scambia messaggi di diagnostica e di errore, allo scopo di fornire feedback sulle operazioni di scambio pacchetti e di migliorare le prestazioni della rete. La specifica del protocollo ICMP è contenuta nel documento RFC792. La maggior parte dei messaggi ICMP vengono trasmessi da un router intermedio di percorso alla stazione trasmittente per indicare l'avvenuto scartamento di un sub pacchetto per vari motivi. È da notare che in caso di scartamento di un pacchetto ICMP stesso non viene inviato un altro messaggio ICMP, per evitare effetti valanga o loop infiniti. ICMP è implementato direttamente sopra IP e viene considerato un protocollo necessario della serie protocolli TCP/IP. Tutti i messaggi ICMP iniziano con una testata comune a 32 bit.

[pic]

Il campo Checksum è calcolato con lo stesso algoritmo della testata IP. Il campo Tipo esprime il tipo di messaggio, il campo Codice esprime una variante che dipende dal tipo. Sono definiti molti tipi di messaggi ICMP.

[pic]

MESSAGGI DIAGNOSTICI

I messaggi di tipo Time Exceeded, Destination Unreachable e Source Quench denotano tutti un problema operazionale risultante in un pacchetto scartato ed hanno lo stesso formato.

[pic]

Dopo il campo Non Usato segue una porzione del pacchetto scartato includente la sua intera testata e i primi 64 bit del suo campo dati. I messaggi Destination Unreachable vengono inviati da un router o host finale che non riesce a recapitare a destinazione il pacchetto. Il campo codice descrive l'esatto motivo:

• 0 - rete irraggiungibile

• 1 - host irraggiungibile

• 2 - protocollo irraggiungibile

• 3 - porto irraggiungibile

• 4 - frammentazione necessaria ma bit DF settato

• 5 - fallimento del source routing

I messaggi Time Exceeded vengono inviati quando il campo TTL di un pacchetto e' scaduto. Il codice indica il motivo preciso:

• 0 - TTL scaduto in transito

• 1 - TTL scaduto durante riassemblaggio frammenti

I messaggi Source Quench sono inviati da un router in stato di congestione. Il campo Codice è settato a zero. La stazione ricevente riduce subito (tipicamente alla metà) la velocità d’invio pacchetti, salvo incrementarla gradualmente in tempi successivi. Il messaggio Parameter Problem viene inviato quando il recapito è stato impossibile a causa di un errore nella testata IP.

[pic]

Il campo puntatore indica il byte del pacchetto originale dove si è verificato l'errore. Il codice può essere:

• 0 - testata IP invalida

• 1 - opzione mancante

I messaggi di tipo Echo ed Information servono a determinare la raggiungibilità di stazioni remote, con il comando Ping o simili.

TIMESTAMP

I messaggi Timestamp Request e Timestamp Reply servono alla sincronizzazione del tempo tra due stazioni remote.

[pic]

La stazione trasmittente invia un messaggio Timestamp Request in cui riempie il campo Timestamp Origine con l'ora dell'invio. La destinazione risponde con un messaggio Timestamp Reply in cui riempie il campo Timestamp Ricezione con l'ora di ricezione della richiesta e il campo Timestamp Trasmissione con l'ora di trasmissione del responso.

PING

ICMP include una semplice funzione di echo. Quando un router o host riceve un messaggio di tipo Echo Request, risponde con un messaggio Echo Reply. Entrambi i messaggi hanno lo stesso formato.

[pic]

Nel messaggio Echo Reply sono semplicemente invertiti i campi Indirizzo Sorgente e Indirizzo Destinazione, quindi vengono cambiati i campi Tipo e Checksum. I messaggi di Echo vengono inviati dal famoso applicativo Ping, che testa la raggiungibilità di una stazione remota ed i tempi di transito, fornendo semplici statistiche.

$ ping ds.

PING ds.: 100 data bytes

108 bytes from 198.45.45.10: icmp-seq=2. time=173. ms

108 bytes from 198.45.45.10: icmp-seq=0. time=5048. ms

108 bytes from 198.45.45.10: icmp-seq=1. time=4410. ms

108 bytes from 198.45.45.10: icmp-seq=3. time=2461. ms

108 bytes from 198.45.45.10: icmp-seq=8. time=150. ms

108 bytes from 198.45.45.10: icmp-seq=10. time=191. ms

108 bytes from 198.45.45.10: icmp-seq=11. time=218. ms

108 bytes from 198.45.45.10: icmp-seq=12. time=210. ms

108 bytes from 198.45.45.10: icmp-seq=13. time=140. ms

108 bytes from 198.45.45.10: icmp-seq=14. time=270. ms

108 bytes from 198.45.45.10: icmp-seq=15. time=168. ms

108 bytes from 198.45.45.10: icmp-seq=16. time=152. ms

108 bytes from 198.45.45.10: icmp-seq=17. time=199. ms

108 bytes from 198.45.45.10: icmp-seq=18. time=220. ms

--- ds. PING Statistics ---

20 packets transmitted, 14 packets received, 30% packet loss

round-trip (ms) min / avg / max = 140 / 1000 / 5048

La specifica ICMP originale prevede anche versioni semplificate dei messaggi Echo, chiamate Information Request ed Information Reply, in cui il campo Dati manca.

TRACEROUTE

Il programma Traceroute è uno strumento di debugging costruito su ICMP e IP che tenta di scoprire tutti i router intermedi di un percorso pacchetti da stazione sorgente a stazione destinazione. Consiste nell'invio di un pacchetto IP contenente un pacchetto UDP diretto ad un porto non usato, con valore iniziale del campo TTL (Tempo di Vita) settato a 1, ed incrementato progressivamente di uno. I router intermedi via via più scarteranno il pacchetto, poiché il suo TTL sarà scaduto ed invieranno un messaggio ICMP TTL Exceeded alla stazione trasmittente, la quale registra le statistiche di ciascun tentativo compiuto.

$ traceroute ds.

traceroute to ds. (198.45.45.10)

1 138.96.24.250 2 ms 2 ms 2 ms

2 196.51.208.2 2 ms 2 ms 2 ms

3 193.48.50.34 14 ms 10 ms 9 ms

4 192.93.43.93 21 ms 20 ms 21 ms

5 192.121.156.226 69 ms 52 ms 58 ms

6 140.222.58.2 125 ms * 147 ms

7 198.49.45.0 128 ms 144 ms 142 ms

PRINCIPI DI ROUTING

La connessione tra reti è fornita da stazioni multi-homed particolari dette router o, impropriamente, gateways. Queste stazioni forniscono un’interconnessione attiva tramite Protocolli di Routing o di Ricerca Percorso. Il compito di questi protocolli è di riempire la tabella di routing, la quale viene usata dal protocollo IP. In generale il compito dei protocolli di routing consiste di due parti: Inizializzazione e Manutenzione. Vale il concetto di Gateway di default: i pacchetti che non possono venire inviati ad una stazione specifica, poiché mancano informazioni al riguardo nella tabella di routing, vengono inviati al Gateway di default.

STRUTTURA ORIGINALE DELL’INTERNET

Agli inizi la rete Internet consisteva principalmente nella rete ARPAnet come dorsale principale, con qualche rete sussidiaria connessa tramite gateway principali d'accesso. Questi gateway venivano chiamati Core Gateway ed erano amministrati dallo Internet Network Operations Center, a differenza dei Noncore Gateway, amministrati da gruppi individuali. La dorsale era il punto di smistamento unico e centrale per traffico in transito tra due sottoreti. Tale architettura originaria è stata abbandonata per tre ragioni principali:

• richiesti protocolli più complessi all'aumentare della complessità;

• della topologia di rete;

• non ogni sito poteva avere un core gateway ;

• l'architettura non è scalabile: le tabelle di routing dei core gateway diventano intrattabili.

RETI BACKBONE ALLA PARI

L'introduzione di reti come la NSFnet (National Science Foundation) ha visto l'introduzione del concetto di Peer Backbone Network (Reti Dorsali alla Pari). Il routing tra dorsali alla pari pone particolari problemi:

• traffico tra due stazioni geograficamente vicine deve compiere un percorso breve;

• traffico tra due stazioni lontane e su dorsali diverse può prendere molti percorsi: quello ottimale può essere un circuito anche convoluto;

• tutti i gateway di collegamento tra le due dorsali devono avere tabelle di routing consistenti o si possono sviluppare dei routing loops.

GATEWAY TO GATEWAY PROTOCOL

Il protocollo GGP era usato dai core gateways originali. Non è più parte essenziale dei protocolli TCP/IP. GGP è un esempio della classe di protocolli di routing detti Vector Distance. L'informazione scambiata tra nodi GGP consiste in un insieme di coppie (N, D) ove N è un indirizzo IP di rete e D è una distanza (metrica) misurata in salti tra reti, o meglio tra gateway. La metrica può essere artificialmente inflazionata per denotare reti lente.

FORMATO MESSAGGI GGP

Il primo byte di ciascun messaggio identifica il Tipo. Vi sono 5 tipi di messaggi:

• tipo 12 - aggiornamento di routing

• tipo 2 - conferma positiva

• tipo 3 - conferma negativa

• tipo 8 - richiesta di echo

• tipo 0 - responso di echo

SISTEMI AUTONOMI

Siti individuali possono avere una struttura arbitrariamente complessa in cui non è possibile avere un core gateway per ogni singola rete interconnessa. Occorre, quindi, un meccanismo che consenta ai noncore gateways di informare il core gateway sull'esistenza e raggiungibilità di reti nascoste. Per il proposito del routing, un gruppo di reti e gateway controllate da una singola autorità amministrativa è detto un sistema autonomo (SA). Al suo interno, il sistema autonomo è libero di scegliere qualunque metodologia di routing. Al limite, anche la dorsale ARPAnet è un sistema autonomo. Spetta all'amministrazione del sistema autonomo garantire la consistenza del routing e a pubblicizzare la raggiungibilità dei sistemi interni all'esterno. Ad ogni sistema autonomo è ufficialmente assegnato un Autonomous System Number.

EXTERIOR GATEWAY PROTOCOL

Due gateways collegati si dicono vicini interni se appartengono allo stesso sistema autonomo, e vicini esterni se appartengono a due diversi sistemi autonomi. EGP ha tre caratteristiche principali:

• meccanismo di acquisizione dei vicini, ovvero accordo tra due gateways per mettersi alla pari e scambiarsi informazioni

• test continuo per verificare la raggiungibilità dei gateways vicini

• interscambio periodico di informazioni di aggiornamento routine.

FORMATO DELLA TESTATA

EGP definisce nove formati messaggio. Tutti i messaggi EGP iniziano con una testata comune:

[pic]

Dopo il campo Versione di EGP, segue il campo Tipo che identifica il tipo di messaggio, ed un campo Codice che dipende dal campo Tipo come sottospecifica. Il campo Stato contiene informazioni che dipendono dal tipo. Dopo il campo di controllo Checksum, calcolato col consueto algoritmo IP, segue l'Identificativo di Sistema Autonomo ed il numero di Sequenza del messaggio, per sincronizzare aggiornamenti e responsi.

MESSAGGI DI ACQUISIZIONE VICINI

Il campo codice identifica il tipo di messaggio:

• 0 - Acquisition Request

• 1 - Acquisition Confirm

• 2 - Acquisition Refuse

• 3 - Cease Request

• 4 - Cease Confirm

[pic]

Il campo Intervallo Hello indica ogni quanto tempo in secondi testare se il vicino è attivo. Il campo Intervallo di Polling è in secondi e controlla l'intervallo minimo tra due messaggi di aggiornamento. Gli intervalli di polling possono essere asimmetrici e possono cambiare nel tempo.

MESSAGGI DI RAGGIUNGIBILITÀ VICINI

Sono distinti due ruoli possibili, attivo e passivo. Una stazione attiva invia periodicamente messaggi di Hello e di Polling per determinare la raggiungibilità dell'altra. Una stazione passiva invece, ispeziona il campo di Stato di un messaggio di raggiungibilità inviatole.

[pic]

Il campo Codice 0 specifica un messaggio Hello, Codice 1 un messaggio I Heard You. La perdita di un messaggio in transito non viene subito interpretata come irraggiungibilità. EGP usa la regola del k-su-n: se k messaggi Hello consecutivi su n spediti non hanno la risposta I Heard You, allora la stazione remota viene dichiarata irraggiungibile. Similmente per il test di raggiungibilità. Questa lentezza di responso è per stabilizzare la rete: EGP usa un algoritmo Vector Distance, che risponde male a frequenti cambiamenti nello stato del routing. Perciò i messaggi di raggiungibilità sono molto più frequenti dei messaggi di aggiornamento di routing.

MESSAGGIO DI RICHIESTA DI POLLING

[pic]

Il campo Rete Sorgente IP specifica una rete comune ai due sistemi autonomi a cui i due gateways EGP sono entrambi connessi: le distanze in salti sono misurate a partire da questa rete.

MESSAGGIO DI AGGIORNAMENTO DI ROUTING

EGP permette di inviare informazioni di raggiungibilità solo delle reti sottoposte al Sistema Autonomo del gateway inviante.

[pic]

ALGORITMI DI ROUTING

VECTOR DISTANCE ROUTING

I protocolli Distance Vector sono relativamente semplici, molto diffusi, ma hanno parecchi inconvenienti pratici. Vengono spesso chiamati anche protocolli di Bellman-Ford. Siano dati un certo numero di router, ciascuno connesso con uno o più link ai router vicini, a formare un internet, con anche dei loop chiusi. Ciascun router ha visibilità diretta dei suoi vicini immediati, acquisita tramite protocolli semplici, ad interrogazione diretta, ed ha iniziato a compilare la sua tabella di routing. Della tabella di routing interessano in particolare i campi di Destinazione Finale, Successiva e Metrica. L'idea fondamentale di un protocollo Distance Vector è che ogni router invia ai vicini la propria tabella di routing. Ogni router, con i messaggi ricevuti, aggiorna la propria tabella di routing e poi la propaga a sua volta ai vicini, incluso le informazioni ricevute da altri. L'idea è semplice ed è un ottimo esempio di routing con informazione limitata, ma ha subito bisogno di alcuni aggiustamenti. Tipiche protezioni sono:

• inclusione di conferme alla propagazione dei messaggi di flooding;

• trasmissione dei messaggi di descrizione database su canali sicuri;

• tempo di validità massimo dei record del database non confermati regolarmente;

• protezione dei record da corruzione tramite checksum;

• autenticazione dei messaggi di propagazione record, ad esempio con password.

ROUTING INFORMATION PROTOCOL

Il protocollo RIP è un tipico esempio di protocollo Distance Vector, progettato come protocollo interno ad un sistema autonomo. Nonostante le sue debolezze, RIP è uno dei protocolli di routing più diffusi, e vi è una Versione 2 (RFC1338). Le principali caratteristiche di RIP sono:

• Le tabelle RIP contengono indirizzi internet a 32 bit. Non vi è specifica di tipo di indirizzamento. Gli host o i router devono essere in grado di separare l'indirizzo di host dall'indirizzo di rete o di sottorete. La metrica è il numero di salti attraverso router.

• RIP da'supporto sia a connessioni punto-punto che a reti broadcast.

• RIP usa il porto UDP 520 sia per la trasmissione e ricezione, è quindi un processo privilegiato.

• RIP invia messaggi ad un ritmo normale di 30 secondi. In caso di Triggered Updates il ritmo tipico è tra 1 e 5 secondi, distanziato casualmente.

PROTOCOLLO

L'operazione normale è l'invio di messaggi di responso in modo broadcast a intervalli regolari di 30 secondi o in seguito a richieste di aggiornamento. Alla ricezione di un responso, un router tenta di aggiornare la sua tabella di routing, che contiene i campi:

• indirizzo destinazione finale;

• indirizzo prossima destinazione;

• metrica;

• flag di aggiornamento recente;

• temporizzatori.

RIP VERSIONE 2

La Versione 2 di RIP ha compatibilità messaggio e protocollo all'indietro con la versione 1 e risolve o mitiga qualche tipico problema, pur rimanendo costretta dall'algoritmo Vector Distance.

OPEN SHORTEST PATH FIRST

Il protocollo OSPF deriva il suo nome dal fatto che si tratta di una specifica "aperta" di un protocollo di classe SPF (Shortest Path First). OSPF è un protocollo link-state e come tale include specifiche di database distribuito, procedura di flooding, definizione di adiacenza e record speciali per percorsi esterni. OSPF è stato progettato con supporto speciale per:

• reti broadcast, Ethernet o FDDI;

• reti non broadcast, come X.25 o ATM;

• suddivisione di reti grandi in aree.

BORDER GATEWAY PROTOCOL

ALGORITMI DI PATH VECTOR

Un algoritmo di Path Vector è molto simile in concetto ad un algoritmo Distance Vector, ma anziché diffondere solo l'informazione di raggiungibilità finale, propaga la lista completa di reti transitate verso la destinazione finale, o meglio dei Sistemi Autonomi (SA). Purtroppo i requisiti di banda per la trasmissione di percorsi che passano da A sistemi autonomi per raggiungere N reti finali varia come (A log A + N). La presenza al 1996 di almeno 30.000 reti in Internet significa che un algoritmo di Path Vector non è applicabile senza semplificazioni. I percorsi tra sistemi autonomi sono descritti da una serie di attributi, tra cui i più importanti sono la Lista di SA Attraversati, l'Origine, la Destinazione Successiva, il Marchio di Irraggiungibilità, la Metrica tra SA. Ogni attributo è descritto da due byte.

[pic]

Il primo byte contiene quattro flag:

• O - opzionale

• T - transitivo, anziché locale

• P - parziale, la proprietà non è stata pienamente compresa da tutti i router dei SA intermedi

• E - extra length, il campo lunghezza dell'attributo è di due byte anziché uno.

CARATTERISTICHE DI BGP

Il protocollo BGP è implementato su TCP e non su IP direttamente. Il vantaggio principale è la delega al TCP di tutte le funzioni di controllo errore. Per mantenere la garanzia di connettività, BGP invia messaggi sonda ad intervalli regolari.

TESTATA BGP

Ogni messaggio BGP è preceduto da una testata, lunga 19 byte.

[pic]

Il campo Lunghezza porta la lunghezza dell'intero messaggio inclusa la testata. Il Tipo può essere:

1. Open - apertura

2. Update - aggiornamento

3. Notification - notifica

4. Keepalive

Il campo Marker è usato per sicurezza ed il particolare algoritmo di generazione del marker è negoziato durante lo scambio iniziale.

CLASSLESS INTERDOMAIN ROUTING

PROBLEMI DI CRESCITA DELL’INTERNET

L'incremento esponenziale dell'Internet in tempi recenti ha posto una serie di stress relativi agli indirizzi IP a 32 bit, che sono principalmente:

• Esaurimento degli indirizzi in Classe B (ed A!)

• Esplosione delle tabelle di routing

• Inefficienza d'assegnazione degli indirizzi

La metodologia CIDR è stata sviluppata come risposta temporanea a questi problemi nell'attesa dell'affermarsi della nuova Versione 6 dei protocolli TCP/IP. La metodologia CIDR consiste in:

• Assegnazione, in luogo di un indirizzo di Classe B, di piu' indirizzi

• Contigui in Classe C

• Aggregazione delle tabelle di routing con l'introduzione del concetto di super rete.

AGGREGAZIONE DELLE TABELLE DI ROUTING

Le autorità preposte all'assegnazione di nuovi indirizzi IP hanno scopo a livello continentale e distribuiscono ciascuna indirizzi in un intervallo stabilito.

[pic]

L'autorità europea è il Network Coordination Center (NIC) del Reseaux IP Europeens (RIPE).

MULTICASTING

Il routing multicast è l'invio di un pacchetto IP ad un indirizzo di gruppo in modo da farlo ricevere a tutti i membri del gruppo e distribuiti in tutta Internet. Lo stesso risultato si può ottenere con una serie di trasferimenti punto-punto, ma il multicast permette la scoperta di risorse di rete e minimizza il carico di rete, perché e' adatto alle conferenze multimediali.

ROUTING DI MULTICASTING

FLOODING

L'algoritmo di flooding, di cui esistono varie versioni, consiste essenzialmente in:

• alla ricezione di un pacchetto controlla se è la prima volta che viene ricevuto

• se lo è ritrasmettilo su tutti i link tranne quello di provenienza.

È evidente l'importanza del controllo che sia la prima ricezione o si moltiplicherebbe all'infinito il traffico generato. OSPF e il servizio News implementano protocolli di flooding a livello applicativo. Sarebbe pensabile di implementare facilmente l'algoritmo direttamente a livello IP, ma vi sarebbero i requisiti:

• occorre mantenere una lista di pacchetti già transitati in un tempo almeno lungo quanto la massima durata di vita di un pacchetto

• la lista garantisce dal doppio invio ma non dalla doppia ricezione; il traffico di rete aumenta comunque.

L'algoritmo di flooding si usa quando il requisito principale è la robustezza.

IL MODELLO DOD

Il software di comunicazione di ciascuna stazione comunicante in rete è pensato come formato da più livelli sovrapposti. Due concetti sono implicati da un modello a strati:

• verticale, gerarchico: il software a livello superiore esegue richieste al livello sottostante e da questo riceve responsi

• orizzontale, alla pari: strati corrispondenti di macchine diverse conversano tramite lo stesso protocollo

L’ISO (International Standards Organization) ha preparato fin dal 1984 il Modello di Riferimento Open Systems Interconnection, a sette livelli.

[pic]

IL modello ISO/OSI è stato sviluppato corrispondentemente alla definizione della serie di protocolli X.25 per la commutazione di pacchetto. Nonostante le molte critiche e i molti elogi, il modello ISO/OSI è da considerarsi in generale di riferimento. Il modello a strati usato dai protocolli TCP/IP è precedente ad OSI, e viene chiamato modello Department of Defense (DoD) (Dipartimento della Difesa Americano), poiché data ai tempi dell'agenzia ARPA e' al suo sviluppo del prototipo di Internet.

[pic]

Il modello è a quattro strati. Sono da notare gli oggetti che vengono passati tra gli strati. Il livello inferiore è talvolta chiamato Livello Data Link. Le funzioni dei vari livelli sono le seguenti:

Applicativi – Programmi di interfaccia utente, suddivisi in Client e Server.

Trasporto - Fornisce la comunicazione tra le due stazioni terminali portanti gli applicativi (end-to-end communication), regola il flusso delle informazioni, e può fornire un trasporto affidabile, cioè con recupero errori.

Internet - Si occupa dello smistamento dei singoli pacchetti su una rete complessa e interconnessa, del reperimento delle informazioni necessarie allo smistamento, dello scambio di messaggi di controllo e di monitoraggio rete.

Interfacce Fisiche - Responsabile per l'interfacciamento del mezzo fisico, e per l'invio e ricezione su di esso dei pacchetti.

È da notare che gli oggetti fisici scambiati tra i livelli hanno un nome ben preciso, anche se è invalso l'uso generale di chiamare "messaggi" gli oggetti appartenenti ad applicativi, e "pacchetti" tutti gli altri.

PROPRIETÀ DEL MODELLO DOD

INAFFIDABILITÀ

La filosofia architetturale di TCP/IP è semplice: costruire una rete che possa sopportare il carico in transito, ma permettere ai singoli nodi di scartare pacchetti se il carico è temporaneamente eccessivo, o se risultano errati o non recapitabili.

PRINCIPIO DI LAYERING

L'oggetto ricevuto ad un livello n dalla stazione di destinazione è esattamente lo stesso spedito a livello n dalla sorgente.

[pic]

Questo rende facile il progettare del software unicamente ad un livello, con la confidenza di uniformità di trattamento in tutti i nodi di rete.

INCAPSULAMENTO

Gli oggetti definiti alle varie interfacce hanno una struttura definita, spesso consistente di una testata ed un'area dati.

[pic]

L'area dati di un oggetto a livello sottostante contiene per intero l'oggetto a livello soprastante. L'oggetto viene "incapsulato". Il protocollo ad un determinato livello si occupa solo dei campi della propria testata, e considera come puri dati i campi della testata dei protocolli soprastanti, che ha incapsulato.

INTERFACCE

Vi sono due importanti confini o interfacce nel Modello DoD:

• tra il livelli Applicativi e di Trasporto, ove si entra nel software di sistema operativo

• tra i livelli Internet ed Interfacce Fisiche, ove si iniziano ad usare gli indirizzi fisici.

[pic]

Nei protocolli TCP/IP in realtà i concetti separatori di livelli e di interfacce non sono così stretti come il modello richiederebbe. Vi sono sicuramente alcuni dati informativi che si propagano in entrambe le direzioni, verso l'alto e verso il basso, come il percorso di routing e la MTU del link. Questo rilassamento facilita l'ottimizzazione in velocità dei protocolli. In particolare si deve pensare alla "Serie" di protocolli TCP/IP, con enfasi sull'aspetto integrato di tale serie.

MULTIPLEXING

Più protocolli di trasporto interfacciano simultaneamente il protocollo IP. Più protocolli a livello Internet simultaneamente inviano pacchetti tramite il livello Interfacce Fisiche. In generale le informazioni a livello superiore vengono multiplessate a livello inferiore incapsulandole come dati ed inserendo in un campo della testata a livello inferiore l’informazione di come far avvenire la demultiplessazione.

[pic]

Gli strati intermedi, di Trasporto e di Internet, sono gli strati dei protocolli TCP/IP veri e propri.

ESEMPIO DI SESSIONE E-MAIL

USARE ELM

In un sistema UNIX, per spedire della posta si possono usare diversi programmi tra i quali elm, un'interfaccia interattiva per la posta elettronica. Elm può essere lanciato anche con delle opzioni, tra cui:

• a (Arrow) Indica il messaggio corrente tramite un puntatore invece di usare la barra evidenziatrice.

• c nome alias (Checkalias) Controlla l'esistenza di un alias, ritorna l'indirizzo ed il nome completo dell'alias, oppure avvisa della non esistenza.

• f path folder (Folder) Legge il folder specificato; il folder è il file-database elm crea con il nome della login del mittente del messaggio nella directory $HOME/Mail ($HOME variabile di shell).

• h (Help) Restituisce la lista delle opzioni possibili.

• i nome-file destinatario (Include) Include il file specificato nel messaggio da avviare alla persona specificata.

• m (Menu) Lancia elm senza includere il mini menu riassuntivo delle operazioni possibili.

• s subject destinatario (Subject) Specifica l'oggetto del messaggio che si vuole mandare.

• z (Zero) Non entra in elm se non ci sono messaggi nella casella postale.

Elm si presenta così

[pic]

I messaggi esistenti nella casella postale sono elencati in ordine temporale: stato del messaggio, data, mittente, numero di linee del messaggio e l'oggetto. Gli stati del messaggio possono essere:

• D Indica un messaggio cancellato (Deleted)

• N Identifica un nuovo messaggio (New)

• U Indica un messaggio urgente (Urgent), viene specificato nell'intestazione alla voce Priority

• P Posta privata (Private)

• C Posta confidenziale (Confidential)

• E Identifica un messaggio vecchio, morto. È possibile assegnare al messaggio una data di scadenza tramite la voce Expires nell'intestazione, se il messaggio non viene letto entro questa data esso 'muore', perde il suo significato (esempio un avviso di un convegno).

• A Per messaggi che associano un'azione specifica, viene specificato nell'intestazione alla voce Action.

Elm propone un mini-menu che riassume le operazioni più probabili. I comandi di elm possono essere:

? ----> Help - Premendo ? elm aspetta l'argomento del quale si vogliono spiegazioni:

Press the key you want help for, '?' for a key list, or '.' to exit help

Help for key:

Premendo ? ? si ottiene la lista di tutti i comandi possibili.

j,k ----> move up and down - j per selezionare il prossimo messaggio (in basso) k per selezionare il messaggio precedente (in alto)

return - Per leggere il messaggio corrente. Finita la lettura il messaggio, se era nello stato N passerà nello stato read (non marcato), ed il puntatore del messaggio corrente avanzerà di una posizione.

m ----> Mail - Per spedire un messaggio.

d ----> Delete - Serve per cancellare il messaggio corrente, sarà marcato con D.

r ----> Reply - Per rispondere automaticamente all'autore del messaggio. L'oggetto del messaggio (subject) che verrà spedito sarà preceduto da Re: .... Se non si è attivata l' opzione autocopy verrà chiesto se si desidera copiare il messaggio, se si, ogni linea di quest'ultimo sarà preceduta da una sequenza di caratteri prefissata definita nell' opzione prefix, di default è > Si è portati direttamente nell'editor per digitare il testo della risposta.

f ----> Forward - Serve per inoltrare il messaggio corrente ad un altra persona. Verrà chiesto se si vuole aggiungere qualcosa al messaggio.

q ----> Quit - Esce dall'applicazione chiedendo se si vogliono cancellare i messaggi marcati D e se si desidera spostare i rimanenti nei rispettivi folder.

x ----> Exit - Costituisce il modo più veloce per uscire da elm senza cambiare lo stato della casella postale.

s ---->Save - Salva il messaggio corrente in un file specificato o nel folder file, cioè nel file-database che elm crea nella directory $HOME/Mail con il nome della login dell'autore del messaggio. Dopo aver salvato il messaggio questo sarà cancellato, cioè marcato D, ed il puntatore del messaggio corrente aumenta di una posizione.

n ----> Next Message - Il puntatore del messaggio corrente avanza di una posizione e visualizza il messaggio.

h ----> Header - Come Return, cioè visualizza il messaggio, ma con tutta l'intestazione del messaggio (Headers).

a ----> Alias - Si entra nella modalità di gestione degli Alias.

o ----> Options - Si entra nella modalità di variazione delle Opzioni di elm.

! ----> Shell escape - Si usa per mandare un comando alla shell di lavoro senza uscire dall'applicazione.

La lista di tutti i comandi è ottenibile con ? ? cioè due volte help. Uscendo dall'applicazione elm chiede delle conferme:

• Se si desidera cancellare i messaggi etichettati con D

Delete message? (y/n) y l'impostazione della risposta può essere cambiata.

• Se si vuole spostare i messaggi già letti nei rispettivi folder.

Move read message to "received" folder? (y/n) n l'impostazione della risposta può essere cambiata.

SPEDIRE MESSAGGI

Per mandare un messaggio si usa il comando m (mail). Verrà richiesto:

• L'indirizzo del destinatario: È possibile usare anche un alias. Se non viene specificato (semplicemente con Return) la procedura termina.

Command: Mail

Send the message to:

• Il subject cioè l'argomento del messaggio se non viene specificato elm chiede se veramente si desidera procedere nell'operazione.

Command: Mail To: E-mail dell’utente

Subject of message:

• Copies to se si desidera copiare il messaggio a qualcuno. Se si, basta elencare tutti gli indirizzi o alias separandoli con uno spazio.

Command: Mail To: E-mail dell’utente

Subject of message: Oggetto

Copies to: esempio: manuale E-mail dell’utente

Dopo aver raccolto i dati relativi al messaggio, elm apre l'editor, che si è scelto, per poter digitare il testo del messaggio. Finito di digitare il file si può effettuare una scelta tra:

e)dit per rientrare in modalità editor.

s)end per spedire il messaggio. Verrà data conferma:

Mail send!

f)orget Dimentica il messaggio, lo cancella ed ritorna al livello principale.

h)eaders per cambiare gli header cioè l'intestazione del messaggio.

Message Header Edit Screen

T)o: studente

C)c: user_A@hotmail.it

B)cc:

S)ubject: prova

R)eply-to:

A)ction: E)xpires:

P)riority: Precede(n)ce:

I)n-reply-to:

Choose header, u)ser defined header, d)omainize, !)shell, or .

Choice:

• T --> serve per cambiare il destinatario del messaggio.

• C --> per poter modificare la lista delle persone alle quali si vuole copiare il messaggio.

• B --> Blind Copies to: viene fatta una copia del messaggio anche alle persone inserite in questo campo, ma non vengono citate nell'intestazione del messaggio alla voce Cc:, rimangono 'segrete'.

• S --> cambia il subject del messaggio

• R --> risponde a qualcuno

• A --> definisce un'azione, il messaggio sarà marcato con A e nell'intestazione del messaggio sarà indicata l'azione.

• E --> viene specificata una data entro la quale il messaggio perde di significato, e viene marcato con E. Ad esempio un avviso di un convegno, un appuntamento, etc ...

Elm accetta i seguenti formati di data:

Mon, 11 Jun 90

Jun 11, 90

11 Jun, 90

• P --> per scegliere la priorità del messaggio. Se maggiore di zero il messaggio viene marcato U urgente.

• n --> per scegliere la precedenza voluta.

• I --> se si tratta di una riposta in questo campo verrà indicato a chi si sta rispondendo.

• u --> permette di creare nuovi header che verranno aggiunti all'intestazione del messaggio.

• ! --> permette di dare un comando alla shell senza uscire dall'applicazione.

Per spedire messaggi di posta elettronica esiste una vera e propria etichetta delle vere e proprie regole di comportamento.

USARE GLI ALIAS

È possibile con elm creare degli alias, serve per non dover ogni volta ricordare l'intero indirizzo di una persona. Per entrare in questa modalità si usa il comando a dal livello principale di elm.

Alias mode: 39 aliases [ELM 2.4 PL23]

1 Mauro Cicognini, ing. Person mauro

2 Maria Alberta Alberti, prof. sci Person alberti

3 Claudia Beaumont, german Person claudia

4 Maresa Bertolo Person maresa

5 Alessio Bragadini, gest. Webit Person pisa

6 Walter Aprile Person walter

You can use any of the following commands by pressing the first character;

a)lias current message, n)ew alias, d)elete or u)ndelete an alias,

m)ail to alias, or r)eturn to main menu. To view an alias, press .

j = move down, k = move up, ? = help

Alias:

LE OPZIONI

Digitando o dal menu principale di elm è possibile cambiare alcune opzioni che sono salvate nel file di configurazione $HOME/.elm/elmrc .

-- ELM Options Editor --

C)alendar file : $HOME/calendar

D)isplay mail using : /usr/local/bin/less

E)ditor (primary) : /usr/bin/vi

F)older directory : $HOME/Mail

S)orting criteria : Reverse-Sent

O)utbound mail saved : A

P)rint mail using : /bin/cat %s | /usr/bin/lp

Y)our full name : studente

V)isual Editor (~v) : /usr/bin/vi

A)rrow cursor : OFF

M)enu display : ON

U)ser level : Beginning User

N)ames only : ON

Select letter of option line, '>' to save, or 'i' to return to index.

Command:

Per avere tutti i possibili comandi basta richiederla con l'help ? ?. Eccone alcuni fra i più comuni:

e ---> Editor - Cambia il tipo di editor per scrivere i messaggi.

d ---> Display mail using - Cambia il tipo di visualizzatore dei messaggi.

f ---> Folder - Cambia la directory contenente i folder, di default $HOME/Mail.

i, q ---> Ritorna al menu principale.

s ---> Sorting criteria - Cambia il criterio di ordinamento dei messaggi arrivati.

y ---> Your full name - Cambia il nome che compare nei messaggi spediti.

m ---> Menu display - Sceglie se desidera avere il mini menu che riassume i comandi principali, ON = si, OFF = no.

Per salvare le opzioni modificate si usa >

Per cambiare altre opzioni occorre accedere direttamente al file /.elm/elmrc nella propria Home directory.

ESEMPIO DI SESSIONE FTP

COME COLLEGARSI (FTP, Anonymous FTP)

Alla linea di comando del proprio host (sistema collegato in rete che offre un servizio), basta digitare

ftp [hostname]

oppure semplicemente 'ftp' ottenendo il prompt aprendo poi la connessione.

ftp

ftp> open [hostname]

Si considera segno di poca cortesia (etichetta della rete) collegarsi ad un sito durante l'orario d'ufficio. Questo perché il trasferimento di file in rete impegna molta potenza di calcolo. Ci sono siti ftp ai quali è possibile collegarsi 24 ore su 24. Severe restrizioni proibiscono l'accesso da parte di un client arbitrario a qualunque file, finché non ha ottenuto un login ed una password dal computer su cui il server opera. Per rendere possibile l'accesso a files pubblici, molti siti TCP/IP permettono l'FTP anonimo. Questo significa che un client non necessita di un account o una password, ma l'utente specifica "anonymous" o "ftp" come nome del login e guest o il proprio indirizzo di e-mail come password. Il server permette così login anonimi, ma restringe l'accesso solo ai files pubblici disponibili.

Per esempio, supponiamo che qualcuno abbia messo una copia on-line di un testo nel file tcpbook.tar in una sottodirectory utenti/studenti sulla macchina media2.die.unifi.it. Un utente logato in un altro sito come user_A può ottenere una copia del file eseguendo quanto segue:

% ftp media2.die.unifi.it

Connected to media2.die.unifi.it

220 media2.die.unifi.it FTP server (Version 6.8) ready.

Name (ftp.die.unifi.it:user_A) : anonymous

331 Guest login ok, send e-mail address as password.

Password: guest get utenti/studenti/tcpbook.tar bookfile

200 PORT command okay.

150 Opening ASCII mode data connection for tcpbook.tar (9895469 bytes).

226 Transfer complete.

9895469 bytes received in 22.76 seconds (4.3e+02 Kbites/s)

ftp> close

221 Goodbye.

ftp> quit

In questo esempio, l'utente specifica la macchina media2.die.unifi.it come argomento del comando FTP, così che il client apra automaticamente una connessione e ottenga subito l'autorizzazione. L'utente invoca l'FTP anonimo specificando il login anonimous e la password guest (anche se il nostro esempio mostra la password che l'utente digita, il programma ftp non la visualizza sullo schermo dell'utente). Dopo aver digitato un login ed una password, l'utente richiede una copia di un file usando il comando get. Nell'esempio, il comando get è seguito da due argomenti che specificano il nome del file remoto ed un nome per la copia locale. Il nome del file remoto è utenti/studenti/tcpbook.tar e la copia locale sarà collocata in bookfile. Una volta che il trasferimento è completato, l'utente digita close per rompere il collegamento con il server, e digita quit per abbandonare il client. Intervallati ai comandi digitati dall'utente ci sono dei messaggi informativi. I messaggi FTP iniziano sempre con un numero di tre cifre seguito dal testo. Molti di essi provengono dal server, mentre i restanti dal client locale. La sessione di esempio illustra anche un aspetto dell'FTP descritto precedentemente: la creazione di una nuova connessione TCP per il trasferimento dei dati. Il comando PORT del client riporta che un nuovo numero di porta TCP è stato ottenuto per poter essere usato come connessione dati. Il client invia le informazioni sulla porta al server sulla connessione di controllo; i processi di trasferimento dati ad entrambe le parti usano il nuovo numero di porta nel formare la connessione. Dopo che il trasferimento è completato, i processi di trasferimento dati ad entrambe le parti chiudono la connessione. Molti siti ftp aiutano con messaggi vari l'utente che cerca di connettersi, anche in caso d’errore. Se si possiede un account sulla macchina e si vogliono trasferire dei propri file, alla richiesta di name - password basta inserire i propri dati, aspettare di essere riconosciuti per poi entrare nella propria area di lavoro.

Per disconnettersi basta usare

ftp> bye

oppure

ftp> quit

I PRINCIPALI COMANDI DI FTP

Una volta connessi ad un sito ftp, si opera sull'host remoto. Fra i possibili comandi ce ne sono alcuni molto utili: dir o ls - Ritorna la lista dei file contenuti nella directory corrente con tutte le informazioni relative. La maggior parte dei siti di archivi contengono un documento 'README' (leggimi) che contiene informazioni riguardo al sito, indicazioni varie sulle risorse e come usarle etc... È buona norma (netiquette) prelevarlo e leggerlo, specie se è la prima volta che ci si collega in quel sito. Esempio:

ftp> dir

200 PORT command successful.

150 Opening ASCII mode data connection for /bin/ls.

total 42

drwxr-xr-x 11 root 10 1024 Feb 2 06:00 .

drwxr-xr-x 11 root 10 1024 Feb 2 06:00 ..

-rw-r--r-- 1 root root 931 Dec 29 1993 README

dr-xr-xr-x 3 root 10 1024 Apr 9 1994 bin

dr-xr-xr-x 3 root root 1024 Nov 24 20:30 etc

dr-xr-xr-x 7 root 10 1024 Jan 31 11:33 pub

drwxrwxrwt 2 root root 24 Feb 2 06:00 tmp

226 Transfer complete.

ftp>

Con PORT command successful ftp indica il riconoscimento del comando dir, e con Transfer complete indica il buon fine del comando.

cd [nome directory] - per cambiare directory. Nel caso specifico per salire di una directory si usa: in un sistema Unix cd .., in VMS cd [-]. Esempio:

ftp> cd pub

250-Please read the file README.BENCHMARK

250- it was last modified on Fri Dec 23 11:07:23 1994 - 41 days ago

250 CWD command successful.

ftp>

CWD (Change Working Directory) command successful, significa che il comando di cambio directory ha lavorato in modo corretto.

get [nome file] - Per prelevare un file. Nome file è il nome del file sul sistema remoto. Esempio:

ftp> get README

200 PORT command successful.

150 Opening BINARY mode data connection for README (931 bytes).

226 Transfer complete.

931 bytes received in 0.05 seconds (18.29 Kbytes/s)

ftp>

Una copia del file si troverà nella directory corrente del proprio sistema locale, la macchina dalla quale è stata aperta la connessione ftp. Se si desidera cambiare il nome al file, digitando: get [nome file] [nuovo nome ]. Per visualizzare un file remoto direttamente nella sessione di ftp si può usare il comando get con l'opzione -:

get [nome file] -

Ftp documenta ogni trasferimento indicando il buon fine dell'operazione e di quanto tempo ha impiegato.

put [nome file] - Per trasferire un file dal proprio sistema locale al sistema remoto (inverso di get), funziona solo se le directory hanno permessi di scrittura. Come il comando get può essere specificato un nome diverso.

mget *.[estensione] | [lettera]* - Per prelevare più di un file per volta specificando quelli voluti (es. *.txt tutti i file con estensione .txt). Ad ogni file verrà chiesta conferma.

mput *.[estensione] | [lettera]* - Per trasferire più file assieme (inverso di mget).

hash - Stampa '#' ogni buffer trasferito. Risulta essere molto comodo per lunghi trasferimenti per controllarne l'andamento. Esempio:

ftp> hash

Hash mark printing on (1024 bytes/hash mark). put BABY.gif

200 PORT command successful.

150 Opening BINARY mode data connection for BABY.gif.

########################################################################

226 Transfer complete.

74120 bytes sent in 0.23 seconds (309.22 Kbytes/s)

ftp> hash

Hash mark printing off.

prompt - Serve per disabilitare la richiesta di conferma di ogni singolo file nell'operazione mget o mput. Per ritornare allo stato originario basta ridare il comando. Esempio:

ftp> prompt

Interactive mode off.

ftp> prompt

Interactive mode on.

ftp>

size [nome file] - Mostra la grandezza di un file. Esempio:

ftp> size schema.dvi

213 288

ftp>

Esistono due differenti modalità di trasferimento: ASCII e binaria. La prima (ASCII) serve per trasferire solo file di testo, la seconda (binaria) per archivi, file eseguibili, immagini etc... Ftp ASCII fa anche la conversione di "a capo" che nei tre contesti UNIX, MS-DOS, MAC è rispettivamente LF, CR-LF, CR ed anche da ASCII a EBCDIC. Questo ha un significato storico abbastanza rilevante: la rete è nata per trasferire soprattutto della posta elettronica, file di testo, ed alcune macchine che funzionano da ponte fra i sistemi buttano l'ottavo bit di ogni byte. Nei files di testo non causa nessun danno perché non contiene niente di significativo, invece nei file binari è praticamente una catastrofe. Scegliendo la modalità binaria ftp converte automaticamente i files in modo che l'ottavo bit non contenga più niente di importante. Per cambiare la modalità si usano i comandi:

ascii o type ascii o semplicemente asc

ftp> asc

200 Type set to A.

binary o type binary o bin

ftp> bin

200 Type set to I.

ftp> type ascii

200 Type set to A.

Per ottenere aiuto si può usare il comando: help o ? anche dando il nome di un comando. Esempio:

ftp> help dir

dir list contents of remote directory

ftp> help type

type set file transfer type

ftp>

OSS: Normalmente i trasferimenti anonimi sono sempre registrati per motivi di sicurezza.

ESEMPIO DI SESSIONE TELNET

COME COLLERGARSI

Per iniziare una sessione di telnet basta dare il comando apposito, generalmente è:

telnet nome.domain

(indirizzo di rete della macchina a cui ci si collega

esempio: media2.die.unifi.it oppure 150.217.8.61)

Il sistema remoto avvia la procedura di “login”, viene richiesto di identificarsi dando login e password. Esempio:

> telnet media2.die.unifi.it

Trying...

Connected to media2.die.unifi.it.

Escape character is '^]'.

HP-UX media2 A.08.00 U 9000/855 (ttyp00)

login: studente

Password:

Per scollegarsi occorre usare il comando remoto di uscita dal sistema (in questo caso ad esempio exit), oppure usare la cosiddetta “Escape Sequence”, indicata all'inizio della connessione, molto spesso è '^]', cioè CTRL ]. Tramite questa sequenza sarà possibile riprendere il controllo della connessione, ad esempio in caso di panico, quando per qualche motivo la macchina remota non consente più di scollegarsi. Per chiudere la sessione di telnet si usa il comando close. Esempio:

123 studente > close

Connection closed.

È possibile ottenere un servizio di help in linea normalmente con il comando ?.

telnet> ?

ACCESSO DIRETTO AD UNA PORTA

I calcolatori su Internet hanno più di una porta, proprio come le case possono avere un portone principale e porte secondarie che danno accesso a zone particolari della casa (ad es. in garage). Il “portone” di un nodo di Internet corrisponde alla modalità standard con cui un host reagisce ad una richiesta di collegamento da parte di un client, (procedura di login). Le porte secondarie sono identificate da un numero. Con telnet è possibile collegarsi direttamente a queste porte dichiarando esplicitamente quella voluta. Esempio:

telnet ipo.tesi.dsi.unimi.it 4444 (la porta d'entrata al MUD del DSI: Little Italy)

Accedendo ad una porta specifica su un sistema, si viene catapultati in un ambiente chiuso programmato per offrire un servizio specifico. Se il servizio è pubblico non viene richiesta alcuna autoidentificazione del tipo login-password. Accedere a questi servizi (tecnicamente sopportati da un server) via telnet, che possono essere ad esempio archie, netfind, finger, whois, MUD, IRC, etc ...., costituisce una via alternativa ad un accesso tramite client, infatti telnet viene usato come client.

ARCHITETTURA CLIENT/SERVER

Si parla di architettura client-server tutte le volte che, in un sistema, un’entità offre un servizio, (il server), ed un'altra (il client) vi accede secondo una serie di regole, usufruendone. Quindi il server è il programma che accetta richieste da un altro programma, il client, esaudendole.

TELNET ATTRAVERSO WEB

Per realizzare collegamenti via telnet attraverso dei browser Web basta aprire una nuova connessione o creare un link usando l'url telnet://nome-sito ad esempio

telnet://hpcvbbs.cv. (Hewlett-Packard's Calculator Electronic Information Service)

POSTI TELNET INTERESSANTI

CATALOGHI DI BIBLIOTECHE

Diverse centinaia di biblioteche sparse in tutto il mondo, dalla Biblioteca pubblica Snohomish nello stato di Washington alla Biblioteca del Congresso, sono ora accessibili via telnet. Esistono diversi programmi di database in linea usati dalle biblioteche. Quello della biblioteca di Harvard è uno dei più facili da usare:

telnet hollis.harvard.edu

Un sistema di gestione particolarmente interessante è quello usato dall'Alliance of Research Libraries del Colorado, (CARL) il quale tiene dei database per altre biblioteche in tutto il Colorado, nell'America occidentale e persino a Boston.

telnet pac.

Basta seguire le semplici istruzioni di connessione. Quando si arriva al menu, digitando '72' (anche se tale opzione non e' contemplata) si arriverà al Pikes Peak Library District di Colorado Springs. Alcuni anni or sono, i bibliotecari di questa città pensarono bene di usare il programma di gestione anche per immagazzinare informazioni riguardanti la comunità. Ora, per avere notizie sulla città o su ordinanze municipali, basta digitare la parola che interessa ed ottenere i passi salienti di alcune leggi. Carl permette anche l'accesso alla biblioteca dell'Università delle Hawaii, la quale, parimenti a quella di Colorado Springs, consente di ottenere varie informazioni oltre a quelle di carattere prettamente bibliografico.

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download