La comunicazione tra due utenti di una rete di computer implica la risoluzione di molteplici problemi e la realizzazione di una gran quantità di servizi, da parte d’opportuni software ed hardware della rete. Si deve garantire, ad esempio, che il singolo bit giunga dalla fonte al destinatario e il suo livello logico sia correttamente interpretato. Si deve suddividere opportunamente il flusso di bit in pacchetti in modo da contrassegnare opportunamente l’inizio e la fine dei vari dati, e distinguere i bit appartenenti ai dati veri e propri dai bit di controllo. Si deve individuare il percorso più efficiente fra due nodi della rete di computer, e così via. A tutto ciò corrisponde una notevole complessità nel progetto di una rete. Viceversa, la realizzazione di hardware e software che si occupino soltanto d’aspetti particolari della comunicazione fra computer in rete, deve essere facilitata da un’opportuna standardizzazione, in modo che il nuovo prodotto sviluppato s’integri in maniera facile con l’hardware e il software già esistente.
Ciò si ottiene mediante un’organizzazione gerarchica delle reti in più strati o livelli come nella figura seguente. Ogni strato ha lo scopo di fornire servizi allo strato superiore. Esso scherma la struttura degli strati inferiori per cui il software e l’hardware degli strati superiori non hanno alcuna necessità di avere informazioni sulla natura degli strati inferiori. Per fare un esempio, è lo stesso meccanismo per il quale un programma che gira su un computer non ha la necessità di conoscere la precisa struttura del computer stesso, ma, per gestire la tastiera e il video, fa riferimento ai servizi offerti dal sistema operativo.
Lo strato x di una macchina comunica con lo strato omologo di un altro computer seguendo regole e convenzioni che consentono un dialogo corretto e che prendono il nome di protocolli. La comunicazione fra strati o livelli adiacenti avviene, invece, attraverso interfacce che definiscono le operazioni primitive e servizi che uno strato offre allo strato superiore.
Ogni strato comunica con lo strato omologo dell’altro computer coinvolto nella comunicazione ma tale comunicazione è in realtà virtuale. In effetti, i dati non vengono inviati direttamente all’altro strato ma vanno allo strato inferiore e giù giù fino al mezzo fisico, dal quale passano all’altro computer e risalgono negli strati superiori.
Facciamo un esempio “non elettronico”. Supponiamo che ci sia stata una guerra fra Cina e Corea. Ora ci sono le trattative di pace condotte da due delegazioni. Ogni delegazione risiede in un palazzo diverso. I componenti della delegazione cinese parlano soltanto cinese, così come i componenti della delegazione coreana parlano soltanto coreano. La delegazione cinese utilizza un interprete che parla cinese, inglese e francese. La delegazione coreana utilizza un interprete che conosce coreano, inglese e francese. La delegazione cinese “sta comunicando” con al delegazione coreana, inviandole messaggi che seguono le regole dei protocolli della diplomazia, ma, in realtà, essa non invia direttamente i messaggi alla delegazione coreana. I messaggi vengono passati all’interprete attraverso un’interfaccia costituita da una segretaria. Lo strato “interprete” della delegazione cinese comunica con o strato “interprete” della delegazione coreana usando un protocollo che implica che i messaggi scambiati siano in lingua inglese. Per comunicare, i due interpreti passano i messaggi ad uno strato dattilografo che si occupa di battere i messaggi a macchina. Una volta che il messaggio è pronto passa dallo strato “dattilografo” allo strato “collegamento fisico” che è costituito da un sistema di posta pneumatica. Come si vede dall’esempio, tutto il meccanismo è del tutto trasparente per le due delegazioni. Se, ad esempio, si sostituisce il sistema della posta pneumatica con un sistema di piccioni viaggiatori, le due delegazioni non se n’accorgono, né devono porsi il problema di come avviene l’implementazione della comunicazione.
Nel campo delle reti si utilizza uno standard a strati denominato modello OSI (Open System Interconnection) sviluppato dall’ISO (International Standard Organization). Questo modello prevede sette strati
Lo strato fisico si occupa della trasmissione dei singoli bit lungo la linea di trasmissione. A questo livello ci si occupa di tutte le problematiche che consentono la corretta trasmissione dei bit dal ricevente al destinatario. Si stabilisce, ad esempio, i livello di tensione che rappresenta il valore logico 1 e quello che rappresenta il valore logico 0; la durata del singolo bit, la sincronizzazione di trasmettitore e ricevitore, l’organizzazione delle interfacce fisiche fra computer e linea, ecc.
Si occupa di stabilire una corretta comunicazione fra due computer di una rete. Organizza i dati in pacchetti o frame individuati da bit o caratteri di inizio e fine, implementa sistemi di rilevamento di errori nella trasmissione dei pacchetti, si occupa di stabilire una corretta connessione fra i due computer, stabilisce delle regole affinché un computer più veloce non sommerga di dati un computer più lento, introduce dei metodi per garantire che i pacchetti trasmessi siano stati ricevuti, ecc.
Si occupa fondamentalmente di stabilire il miglior percorso possibile fra due computer di una rete. Questo percorso, attraverso altri nodi della rete, può essere definito staticamente e rimanere fisso per tutta la durata della sessione di lavoro, oppure può variare dinamicamente in funzione delle condizioni di utilizzo della rete.
Il livello di trasporto si occupa sostanzialmente di nascondere il livello di rete all’utente. Occorre tener presente che, nel caso di reti estese geograficamente, il livello di rete è di proprietà di società di telecomunicazioni per cui gli utenti della rete non possono intervenire sulle prestazioni dei primi strati. Il livello di trasporto si deve occupare di garantire un collegamento di qualità fra due utenti rendendolo indipendente da eventuali difetti del livello di rete. Maggiore sarà la qualità offerta dal livello di rete, minori saranno i compiti del livello di trasporto e viceversa. In genere si ha una connessione di trasporto per ogni connessione di rete. Se, però, il traffico fra i due utenti è elevato, il livello di trasporto può creare più connessioni di rete fra le quali suddividere il traffico fra i due utenti. Se, viceversa il livello di traffico fra le connessioni di trasporto è limitato, il livello di trasporto può multiplexare più connessioni di trasporto su un’unica connessione di rete.
Lo strato di sessione offre ulteriori servizi alla comunicazione fra due utenti. Un servizio fondamentale è, ad esempio, la sincronizzazione. Se si stanno trasferendo dei dati fra due computer e si ha un’interruzione della connessione, si dovrebbe ricominciare il trasferimento dei dati dall’inizio. Per evitare questo, il livello di sessione introduce dei punti di controllo nella serie di dati da trasmettere, in modiche, in caso di guasto, la trasmissione riprenda dall’ultimo punto di controllo.
Lo strato di presentazione.
Questo è il primo strato che si occupa del “significato” dei dati. Con stringhe di bit si possono rappresentare dati della natura più diversa: testi, numeri in virgola fissa, numeri in virgola mobile, ecc, che possono essere rappresentati con codifiche diverse. Lo strato di presentazione si occupa di rendere compatibili le rappresentazioni dei dati negli scambi fra computer che utilizzano codifiche diverse. Altri aspetti di cui si può occupare il livello di sessione sono la compressione dei dati, e la crittografia.
Lo strato di applicazione è l’interfaccia verso l’utente finale e gli offre una serie di servizi di alto livello come il trasferimento dei file, la posta elettronica, ecc.
Entità: è l’elemento attivo (hardware
o software) di ciascuno strato. Se è un elemento del livello di applicazione si
chiama entità di applicazione, se è un elemento attivo del livello di trasporto
si chiama entità di trasporto e così via. Due entità su macchine diverse,
appartenenti allo stesso livello si dicono entità paritarie.
SAP (Service Access Point): uno
strato, per utilizzare un servizio del livello inferiore deve fare riferimento
ad un indirizzo che contraddistingue questo servizio.
IDU (Interface data unit): i dati
vengono inviati da un livello all’altro, racchiusi in pacchetti detti IDU. Una
IDU si compone della SDU (Service Data Unit), che costituisce i dati veri e
propri e una parte detta ICI (Interface Control Information). Per il
trasferimento dei dati spesso si rende necessario suddividere una SDU in
pacchetti detti PDU (Protocol Data Unit), dotati di intestazioni, in modo che,
in ricezione, si possa ricostruire la SDU originaria unendo le varie PDU.