INTERconnected NETworks
Come sappiamo, il protocollo definito dal servizio di posta elettronica
si chiama SMTP (Simple Mail Transfer Protocol); quasi tutta la posta su Internet
viene trasportata da un punto all'altro usando questo protocollo.
SMTP definisce il formato del contenuto della posta, compresa l'intestazione
e la formattazione del corpo testo. Inoltre, definisce come come inoltrare
i messaggi partendo dal computer del mittente fino ad arrivare alla macchina
(detta mailer) di raccolta posta della rete di destinazione.
Una volta giunti è compito di un altro protocollo, il POP o Post Office Protocol
(vedi seguito) portare il messaggio sul personal del destinatario (ammesso
che questo personal NON sia un mailer). E' interessante notare che SMTP è
un protocollo a 7 bit. In altre parole, tutti i caratteri inviati utilizzando
SMTP devono avere un codice ASCII minore di 127. Per il testo solitamente
non esistono problemi; diventa difficile riuscire a inviare dei grafici, dei
programmi o altri file binari. Ecco perché spesso vengono usati dei metodi
di codifica come ad esempio uuencode e BinHex. Questi metodi "impacchettano"
i dati a 8 bit in partenza in un flusso di dati a 7 bit e li estraggono di
nuovo dall'altro lato. Per ovviare a questo limite di SMTP è stato definita
l'estensione MIME: Multipurpose Internet Mail Extensions che consente di trasmettere
file binari come messaggi di posta.
Non tutti i programmi di posta riconoscono i file MIME; ecco perchè per leggere
la posta è consigliabile l'uso di browser.
POP è diventato necessario perchè ben pochi computer di oggi agiscono come
mailer; anzi spesso ce n'è uno solo per edificio. Il motivo è semplice: spesso
i personal computer non sono accesi e quindi non possono ricevere la posta.
Per usare la metafora dell'ufficio postale, il mailer (computer sempre accesi)
è l'ufficio postale e il personal computer è il destinatario. Quando la posta
arriva, viene inserita nella memoria dell'ufficio postale e quando la si vuole
controllare bisogna collegarsi con l'ufficio postale, scaricare la propria
posta e poi sconnettersi. Dopo averci dato i nostri messaggi, l'ufficio postale
può cancellare la sua copia.
Da ora in poi inizia una accurata e dettagliata ricerca sui Protocolli con numerosi collegamenti a altri siti che vi forniranno ulteriori informazioni.
Reti di calcolatori - Nozioni di base
Protocolli di comunicazione
La progettazione di una rete di calcolatori necessita di molta accortezza e può presentare una complessità maggiore di quella che si possa immaginare. Nella realizzazione di un progetto di una rete si devono, infatti, considerare, ai fini della flessibilità, molteplici e rilevanti aspetti tra i quali oltre alle già menzionate architetture hanno importanza rilevante i protocolli. Diventa quindi fondamentali tenere presente dei fattori seguenti:
· Architetture proprietarie - esistono molte reti proprietarie che hanno grande diffusione a livello nazionale e internazionale e che non possono certamente essere ignorate, anche se non sono degli standard. Esse sono progettate in base a scelte indipendenti ed arbitrarie dei costruttori. Sono noti gli esempi IBM/SNA e Digital/DECnet-IV, già citate in Architettura delle reti.
· Standard "de facto" - un esempio estremamente significativo è il TCP/IP, protocollo di rete a larghissima diffusione anche se non riconosciuto da nessun organismo internazionale di standardizzazione. Altro esempio è Ethernet v.2.0, che è oggi la rete locale più diffusa, spesso confusa con lo standard IEEE 802.3.
· Standard "de iure" - emessi da organismi internazionali, quali l'ISO (International Standard Organization) e il CCITT (Comité Consultatif International de Telegraphie et Telephonie). Tra i protocolli standardizzati da questi organismi spiccano IEEE/ISO 802 (per le reti locali) e l'OSI (Open Systems Interconnection).
In questa sezione saranno illustrati i protocolli di rete: dopo gli aspetti generali si vedranno in dettaglio lo standard "de iure" ISO/OSI e TCP/IP
§ Appendice A - Approfondimento su Trasmission Control Protocol
§ Appendice B - Approfondimento su Internet Protocol
In un sistema di trasmissione dati è necessario stabilire una serie di regole hardware e software, denominate protocolli, indispensabili per assicurare un corretto collegamento e funzionamento tra apparato trasmittente e ricevente.
La parte essenziale delle funzioni di un protocollo per garantire il trasferimento delle informazioni tra due o più computer interconnessi, chiamate nel loro complesso DLC (Data Link Control), è raggruppabile in un insieme che assicura la funzionalità del collegamento. Tali funzioni sono:
§ formazione del collegamento e suo abbattimento al termine della fase di trasferimento dati;
§ controllo di correttezza dei dati ricevuti;
§ segnalazione di ricezione corretta o errata verso la stazione trasmittente e gestione della fase di reinvio dei messaggi errati;
§ gestione della fase di polling (invito a trasmettere) o selecting (invito a ricevere);
§ gestione dei comandi di reset del collegamento, sconnessione o sospensione della trasmissione.
A queste funzioni essenziali, presenti in qualsiasi tipo di protocollo, si affiancano nei protocolli di più alto livello, altre funzioni tra le quali:
§ gestione della bufferizzazione dei messaggi ricevuti od inviati mediante la loro inserzione in apposite aree di memoria tampone, che permettono di ovviare alla momentanea indisponibilità della linea o della quale ne permettono uno sfruttamento più efficace;
§ gestione della rete mediante interventi di riconfigurazione nel caso di momentaneo fuori servizio di alcuni terminali o di loro impossibilità a soddisfare la mole di lavoro richiesto;
§ conversione dei codici per permettere la presentazione del messaggio ricevuto in modo compatibile con il codice di presentazione del terminale;
§ gestione del collegamento con il calcolatore host;
§ emulazione del protocollo di alto livello di un calcolatore host.
Questi due gruppi di funzioni, dei quali il primo è essenziale, possono coesistere nello stesso livello di protocollo, nel senso che lo stesso pacchetto software realizza tutte le funzioni descritte, oppure possono costituire livelli differenti dialoganti tramite opportune aree di memoria.
Gli standard ISO ed ECMA suddividono la struttura di un protocollo come formata da sette livelli, di cui i primi quattro costituiscono i cosiddetti livelli di trasporto, permettono, cioè, l'effettivo invio e ricezione dei messaggi, mentre i rimanenti tre costituiscono i cosiddetti livelli di controllo della sessione di comunicazione, di presentazione ai terminali in modo intelligibile e di controllo di eventuali processi applicativi, se presenti.
In generale, un protocollo, a secondo della complessità delle funzioni realizzate, sarà costituito da uno o più di questi livelli.
E' da notare che ogni livello non è conscio del significato del messaggio che gli proviene dal livello superiore e di quali siano le elaborazioni che su di esso compie il livello inferiore e ciò perché è in grado di interpretare correttamente solamente messaggi provenienti da livelli di analogo valore.
Con il progresso tecnologico nel campo delle telecomunicazioni, il problema dell'incompatibilità hardware e software ha sollecitato l'istituzione di organismi internazionali composti da tecnici specialisti di vari settori, in grado di emanare regole e norme che consentano il corretto funzionamento di apparecchiature tra loro collegate, anche se di costruttori diversi.
Uno di questi organismi, il più importante, è l'ISO (International Standard Organization).
Considerato che i protocolli devono garantire, fra l'altro, la compatibilità tra i segnali elettrici dei terminali DTE (Data Terminal Equipement) e DCE (Data Communication Equipement), la correttezza della trasmissione con eventuale possibilità di rivelazione e correzione degli errori, ecc., in sede internazionale è stato messo a punto dall'ISO un sistema di riferimento, denominato modello OSI - Open System Interconnection, che ha unificato in modo sistematico i protocolli di comunicazione nella trasmissione dati.
Architettura dei livelli del modello ISO/OSI
Il modello ISO/OSI raggruppa i protocolli di comunicazioni in sette livelli secondo lo schema rappresentato in figura 10.
§ I protocolli di basso livello (1 - 4) hanno funzioni legate al trasporto dei segnali fra trasmettitore e ricevitore.
§ I protocolli d'alto livello (5 - 7) svolgono funzioni software d'elaborazione e trattamento dei dati.
In un sistema di trasmissioni dati non tutti i livelli sono sempre presenti distintamente nel collegamento; ciò dipende fondamentalmente sia dal tipo di rete utilizzata (commutata, dedicata, punto-punto, multipunto, ecc.) che dalle specifiche costruttive dei computer impiegati (omogeneità nella struttura dei dati, compatibilità software, ecc.).
1. Livello fisico
A questo livello sono definiti gli standard e le interfacce di comunicazioni meccaniche ed elettriche come, ad esempio, la RS-232C.
2. Livello di linea (Data link)
In questo livello sono definite le procedure d'inizializzazione, sincronismo, rivelazione d'errori con protocolli di tipo BSC, HDLC, ecc.
Gli aspetti più importanti di tali protocolli sono rappresentati dalle regole di riconoscimento e correzione degli errori e dalle modalità di colloquio tra le varie periferiche.
3. Livello di rete
Consente di mettere in comunicazione due sistemi di elaborazione che possono essere localizzati anche su reti geograficamente diverse, cioè sistemi di elaborazione non necessariamente collegati direttamente attraverso un supporto fisico.
Il Livello Rete maschera al livello adiacente superiore (Trasporto) tutta una serie di problemi quali la commutazione e l'instradamento attraverso nodi intermedi, consentendo così l'apertura di connessioni di rete tra due sistemi terminali tra i quali non esiste necessariamente una connessione diretta.
4. Livello di trasporto
Il livello trasporto è responsabile del controllo della trasmissione end-to-end cioè tra il mittente ed il destinatario originari. Le principali funzioni logiche svolte da questo livello sono:
§ definire ed ottimizzare i collegamenti tra utenti;
§ gestire l'apertura e la chiusura dei collegamenti;
§ scegliere il percorso ottimale lungo la rete;
§ rivelare e correggere i dati errati di trasmissione.
5. Livello di sessione
Stabilisce, gestisce e termina sessioni di comunicazione tra entità dell'adiacente superiore Livello di Presentazione. Definisce le modalità per individuare l'indirizzo dell'utente, interrompe il collegamento e lo riattiva in qualunque momento e per qualsiasi causa. Definisce, inoltre, il tipo di collegamento (half-duplex, full-duplex, ecc.).
6. Livello di presentazione
Garantisce che l’informazione inviata dal Livello Applicazione di un sistema di elaborazione sia leggibile dal corrispondente Livello Applicazione di un altro sistema.
7. Livello di applicazione
Il Livello Applicazione nel
modello OSI è il livello più vicino all’utente.
Definisce le procedure, gli archivi e i pacchetti software applicativi che
l'utente può utilizzare, anche se fisicamente allocati su altri terminali
di rete.
In generale, i livelli N comunicano attraverso i corrispondenti protocolli di livello N: ogni livello deve quindi mostrare un'interfaccia ben definita a quello immediatamente superiore.
Lo schema nella figura sotto riassume
bene il concetto appena espresso.
Ogni livello aggiunge un'intestazione (header) alle informazioni originarie;
queste saranno interpretate dal corrispondente livello nel sistema ricevente
secondo i protocolli di quel livello.
Figura 11. |
TCP/IP (Transfer Control Protocol/Internet Protocol)
TCP/IP è un protocollo open standard, ovvero le sue specifiche sono libere e utilizzabili da chiunque e ciò ha permesso il rapido diffondersi di implementazioni per ogni sistema operativo e piattaforma, implementazioni spesso distribuite gratuitamente o integrate in modo nativo nello stesso sistema operativo.
Il TCP/IP è indipendente dal modo in cui la rete è fisicamente realizzata: una rete TCP/IP può appoggiarsi indifferentemente su una rete locale Ethernet, su una linea telefonica, su un cavo in fibra ottica ATM, su una rete di trasmissione satellitare, considerato che consente di integrare facilmente diverse tecnologie hardware in una unica struttura logica di comunicazione, come è avvenuto per Internet.
TCP/IP è, inoltre, un protocollo di comunicazione che risolve in maniera molto efficiente le problematiche di ogni sistema telematico:
§ sfruttare al meglio le risorse di comunicazione disponibili;
§ permettere un indirizzamento efficiente e sicuro;
§ garantire il buon fine della comunicazione con la massima sicurezza;
§ permettere lo sviluppo di risorse e servizi di rete evoluti e facilmente utilizzabili dall'utente.
Il TCP/IP in realtà è un protocollo a strati, costituito da un vero e proprio insieme di protocolli di comunicazione, ognuno con un compito specifico, organizzati in maniera gerarchica.
Per la precisione TCP/IP si basa su un modello a quattro strati:
§ rete fisica;
§ indirizzamento dei computer e dell'invio dei dati;
§ controllo e organizzazione dei dati per la trasmissione;
§ applicazioni e servizi di rete per l'utente.
Figura 12. |
TCP/IP può essere visto come una sorta di servizio di recapito basato su un meccanismo a scatole cinesi: al momento della spedizione i dati sono "avvolti" in una scatola, che riporterà all'esterno alcune indicazioni sul contenuto, questa scatola viene inserita in un'altra, con all'esterno un altro tipo di indicazioni e così via.
Al momento della ricezione le scatole vengono "aperte" una dopo l'altra, ricavando da ognuna le informazioni su di essa riportate (figura 12).
Qualsiasi interazione tra due computer di una rete che utilizza il protocollo TCP/IP è costituita dalla "confezione" e dall'invio di una serie di "scatole".
Il gruppo di protocolli TCP/IP in senso stretto non si occupa della gestione diretta della infrastruttura hardware della rete.
Esistono una serie di specifiche che descrivono in che modo ogni singola architettura fisica di rete possa interfacciarsi con il TCP/IP.
Ad esempio per la rete Ethernet, il tipo di rete locale più diffusa, ci sono l'Address Resolution Protocol (ARP) e lo Standard for the Transmission of IP Datagrams over Ethernet Networks.
Le implementazioni software dei protocolli TCP/IP, normalmente, integrano queste tecnologie, e dunque permettono di creare reti su qualsiasi tipo di supporto fisico.
La trasmissione dei dati e la gestione del traffico tra i vari computer in una rete TCP/IP sono governati dall'IP, Internet Protocol. [illustra dettagli]
In una rete a commutazione di pacchetto i dati viaggiano in blocchi di dimensione definita: un datagramma IP è per default grande 1500 byte. Ma è chiaro che assai raramente i dati scambiati dagli utenti avranno dimensioni pari o inferiori a quelli dei piccoli pacchetti IP.
Ad ovviare a questi limiti interviene il protocollo che gestisce l'organizzazione dei dati e il controllo della trasmissione, il TCP, Transmission Control Protocol. [illustra dettagli]
Grazie allo strato dei servizi applicativi, Internet offre all'utente una molteplicità di servizi e di applicazioni che facilitano l'uso della rete e lo scambio o il reperimento di informazioni; dalla posta elettronica allo scambio di file, e numerosi altri servizi.
Ogni singolo servizio di rete si basa su un dato protocollo, specifico di quel particolare servizio.
I servizi telematici di Internet, in particolare, si basano sull'architettura client-server.
Tra i vari protocolli specifici delle applicazioni abbiamo ad esempio il Simple Mail Transfer Protocol (SMTP) per la posta elettronica, il File Transfer Protocol (FTP) per il trasferimento di file, e il protocollo su cui si basa World Wide Web, denominato HyperText Transfer Protocol (HTTP).
Quando l'utente richiede un certo documento o file situato in un dato computer della rete, il client invia una richiesta al server attraverso il TCP/IP. Il server, ricevuta la richiesta, ricerca i dati desiderati, e li invia al computer su cui è installato il client.
È quest'ultimo che si occupa di presentare opportunamente i dati sul video per facilitare l'interazione con l'utente.
Transmission Control Protocol
Se la dimensione del blocco di dati da inviare eccede la dimensione di un singolo pacchetto (come avviene di norma) il TCP è in grado di suddividerlo, in fase di invio, in una catena di pacchetti, e di ricomporlo in fase di ricezione.
Quando il modulo TCP riceve dei
dati da trasmettere da parte di una certa applicazione del livello superiore,
suddivide il flusso di dati in segmenti; ad ogni segmento viene aggiunta una
intestazione (TCP header) che specifica che tipo di applicazione ha
prodotto il flusso di dati e a che punto del flusso appartiene il blocco in
questione.
In questo modo il TCP ricevente sarà in grado di ricomporre i dati nella loro
sequenza e di passarli alla applicazione giusta.
Ma il TCP svolge anche un'altra importante funzione: assicura che la trasmissione dei dati vada a buon fine, esercitando un controllo sulla comunicazione.
Per fare questo il modulo TCP
del computer A che invia stabilisce un contatto diretto con il suo
pari (peer) B che riceve.
La comunicazione inizia con una richiesta rivolta da A a B di
prepararsi a ricevere dati.
In caso di risposta positiva A inizia il trasferimento del primo segmento
di dati, e poi attende che B invii un segnale di conferma di aver ricevuto
tutti i dati inviati.
Se questo non avviene o se B dichiara di avere ricevuto solo una parte
dei dati inviati, A ritrasmette i segmenti perduti.
Naturalmente questo schema semplifica
il vero funzionamento delle transazioni TCP, e offre un'idea solo teorica
delle comunicazioni in rete.
L'essenziale è tuttavia, che un meccanismo di questo tipo permette alla maggior
parte delle comunicazioni di andare a buon fine.
Si pensi che, ad esempio, su Internet ogni giorno avvengono miliardi di transazioni:
ci si può rendere conto della efficienza e dell'importanza di questo sistema.
Internet Protocol
Il protocollo IP ha il compito
di impacchettare i dati in uscita e di inviarli, trovando la strada migliore
per arrivare ad un particolare computer tra tutti quelli connessi alla rete.
Le informazioni necessarie a questo fine sono inserite in una intestazione
(header) IP che viene aggiunta ad ogni pacchetto di dati.
La tecnica di inviare i dati suddivisi
in pacchetti (datagrammi) recanti tutte le informazione sulla loro
destinazione (commutazione di pacchetto) è una caratteristica specifica delle
reti di tipo TCP/IP,
che sono appunto dette reti a commutazione di pacchetto. In questo
modo è possibile usare lo stesso tratto di cavo fisico per far passare molte
comunicazioni diverse, sia che provengano da più persone che operano sullo
stesso computer, sia che provengano da più computer collegati a quel tratto
di rete. Mai nessuno occuperà un certo tratto di rete fisica per intero, come
invece avviene nella comunicazione telefonica. Questa tecnica di trasmissione
dei dati permette una grande efficienza nella gestione dei servizi di rete:
infatti se per una qualche ragione una singola sessione di invio si interrompe,
il computer emittente può iniziare un'altra transazione, per riprendere in
seguito quella iniziale.
Il secondo compito del protocollo IP è l'invio dei dati per la "via
migliore".
Per fare in modo che la comunicazione vada a buon fine è necessario che ogni
singolo computer abbia un indirizzo univoco, che lo identifichi senza alcuna
ambiguità, e che indichi la via per raggiungerlo tra i milioni di altri computer
della rete.
A questo fine viene impiegato uno schema di indirizzamento dei computer
collegati in rete, che si basa su un sistema di indirizzi numerici.
Su Internet, ad esempio, ogni computer è dotato di un indirizzo numerico costituito
da quattro byte, ovvero da quattro sequenze di 8 cifre binarie.
Normalmente esso viene rappresentato in notazione decimale come una sequenza
di quattro numeri da 0 a 255 (tutti valori decimali rappresentabili con 8
bit), separati da un punto.
Ad esempio:
192.151.202.72
Questi indirizzi numerici hanno
una struttura ben definita: la parte sinistra dell'indirizzo indica una certa
sottorete nell'ambito di Internet, e la parte destra indica il singolo host
di quella sottorete.
La esatta distribuzione dei quattro byte tra indirizzo di rete e indirizzo
di computer dipende dalla "classe" della rete.
Esistono cinque classi di rete designate con le lettere A, B, C, D, E e di
queste solo le prime tre classi sono utilizzate effettivamente su Internet.
Una rete di classe A, ad esempio,
usa il primo byte per indicare la rete, e i restanti tre byte per indicare
i singoli nodi.
Una rete di classe C, invece, usa i prime tre byte per indicare la rete e
l'ultimo per lo specifico computer. Inoltre, poiché il riconoscimento del
tipo di indirizzo viene effettuato sul primo byte, esistono dei vincoli sul
valore che esso può assumere per ogni classe.
Per capire meglio lo schema di indirizzamento di Internet è sufficiente pensare
alla normale struttura di un indirizzo postale scritto come nei paesi anglosassoni,
con il numero civico prima: 2,Via Fori Imperiali, Roma, Italia.
Anche qui abbiamo quattro byte: "Italia, Roma, Via Fori Imperiali"
svolge la funzione di un indirizzo di rete, "2" corrisponde
all'indirizzo del computer. Un indirizzo di classe C, insomma!
Una analogia con un indirizzo di classe A potrebbe essere: "Italia, Presidenza
della Repubblica".
L'analogia con il sistema postale
è molto più profonda di quanto non potrebbe sembrare.
Il sistema di recapito dei pacchetti di dati attraverso la rete, infatti,
è funzionalmente simile al modo in cui un servizio postale tradizionale organizza
il recapito delle lettere (i nostri pacchetti di dati).
Quando, infatti, il protocollo IP di un computer riceve dei dati da inviare
ad un certo indirizzo, per prima cosa guarda alla parte dell'indirizzo che
specifica la rete: se è quello della rete locale, i dati sono inviati direttamente
al computer che corrisponde all'indirizzo; se invece l'indirizzo di rete è
esterno, i dati vengono inviati ad un computer speciale denominato gateway
o router che a sua volta li invierà al gateway,
da lui conosciuto, competente per un certo indirizzo di rete: ogni sottorete
di Internet ha dunque almeno un gateway.
Allo stesso modo, quando si spedisce una lettera questa arriva all'ufficio postale locale (il gateway); se la lettera ha un indirizzo di competenza di un altro ufficio postale, sarà inviata a questi, che si preoccuperà di recapitarla al destinatario.
L'ufficio postale locale non conosce
gli indirizzi di tutti gli altri uffici postali locali del mondo.
Se una lettera è indirizzata ad esempio in Spagna, l'ufficio locale la spedirà
prima all'ufficio nazionale delle poste, che a sua volta manderà tutta la
corrispondenza indirizzata alla Spagna al suo omologo spagnolo, il quale farà
procedere la lettera verso l'ufficio postale locale, che infine la recapiterà
al destinatario.
Internet funziona così.
Il gateway locale, infatti, ha un elenco di altri gateway per
ogni indirizzo di rete che conosce, più un gateway per tutti gli altri
indirizzi.
Normalmente i gateway conosciuti direttamente sono su parti contigue
nella topologia di rete (che non necessariamente corrisponde alla contiguità
geografica).
L'assegnazione effettiva degli
indirizzi di rete viene curata da un organismo internazionale, il Network
Information Service (NIS), il quale a sua volta delega ad enti nazionali
la gestione degli indirizzi di rete nei vari paesi.
In Italia tale gestione è curata dal GARR-NIS.
La cura degli indirizzi di ogni singolo nodo è affidata ai gestori (system
manager) delle varie reti.
Una conseguenza del complicato,
ma pur efficiente, schema di indirizzamento di Internet è che gli indirizzi
sono limitati.
Tanto per avere una idea: gli indirizzi di classe A sono stati esauriti da
molto tempo, quelli di classe B quasi e non vengono più assegnati, quelli
di classe C cominciano ad essere assegnati con sempre più difficoltà.
Con gli attuali ritmi di crescita si corre seriamente il rischio di esaurire
entro pochi anni tutti gli indirizzi disponibili.
Per questa ragione è stato sviluppata
recentemente una versione evoluta del protocollo IP, denominato "IP
Next Generation", o "IP 6", basata
su un sistema di indirizzamento a 64 bit.
Le possibili combinazioni sono decisamente superiori al numero di abitanti
del pianeta.
Il nuovo protocollo IPNG è alla base delle sperimentazioni di Internet
2.