16.5 Lo stack OSI
Il modello che è stato la pietra miliare nella definizione degli stack di protocolli di rete, ma di cui non
esiste nessuna implementazione pratica, è il modello OSI (Open System Interconnection) proposto
da ISO,
che si suddivide nei 7 livelli di seguito elencati (v. anche fig. 16.3)
-
1. Physical Il livello fisico è sotto il dominio dell’ingegneria più che dell’informatica.
Sulla base del mezzo di trasmissione utilizzato vengono individuate la natura
e le caratteristiche del segnale da utilizzare per la trasmissione dei dati
(modulazione/demodulazione, conversione digitale/analogica e viceversa, ...).
Questo livello si preoccupa di trasformare i dati da inviare negli appositi segnali
elettrici o elettromagnetici che vengono fisicamente inviati sulla rete e di convertire
i segnali ricevuti negli equivalenti dati digitali.
-
2. Data link Il livello di collegamento gestisce la metodologia di acceso al mezzo
trasmissivo. Stabilisce se la trasmissione può essere iniziata o meno (per esempio
controlla se c’è già qualche altro sistema che sta già impegnando il mezzo di
comunicazione). Inoltre si preoccupa che le informazioni arrivino a destinazione
in maniera corretta, aggiungendo alle informazioni da trasmettere dei codici di
controllo di basso livello.
-
3. Network Il livello di rete ha il compito di attuare la strategia di instradamento per
far giungere i dati a destinazione. Marca i dati con l’identificativo del mittente e del
destinatario. Ogni interfaccia di comunicazione di rete che riceve dei dati confronta
l’identificativo del destinatario con il proprio, in modo da riconoscere se i dati sono
destinati a lei. In caso affermativo passa i dati al livello superiore, altrimenti scarta
il messaggio, ignorandolo.
-
4. Transport Il livello di trasporto si preoccupa di scomporre lo stream di dati da
inviare in pacchetti più piccoli per occupare la rete in maniera intelligente (senza
renderla inaccessibile agli altri sistemi magari per qualche minuto se la quantità di
dati da trasmettere è elevata). Viceversa si deve anche preoccupare di ricostruire
lo stream di dati a partire dai pacchetti ricevuti nel corretto ordine con cui sono
stati inviati. Quindi in ogni pacchetto saranno inserite informazioni addizionali
per identificare l’ordine di invio di un pacchetto rispetto agli altri. Si preoccupa
inoltre di gestire errori di comunicazione (inserimento e controllo di checksum)
ed implementa i meccanismi necessari per richiedere quello che eventualmente è
andato perduto nella comunicazione.
-
5. Session Il livello di sessione ha la responsabilità di gestire la comunicazione, ovvero
implementa il protocollo al livello più elevato: si preoccupa di assicurarsi che
l’interfaccia di comunicazione di rete a cui si vogliono spedire i dati sia pronta a
riceverli (inviando un segnale tipo un ping) ed alla fine della comunicazione manda
un segnale di chiusura (tipo un altro ping) in modo che il destinatario sappia che la
comunicazione è terminata e possa effettuare le operazioni opportune (liberazione
di risorse di memoria dedicate alla comunicazione, ...).
-
6. Presentation Il livello di presentazione ha la responsabilità di gestire la la
conversione dei dati da inviare secondo lo standard di codifica del sistema di
destinazione. I sistemi che devono comunicare possono essere diversi (per esempio
Windows e Unix), quindi i dati potrebbero avere codifiche diverse (es. ASCII e
EBCDIC). A questo livello avviene la conversione nella codifica opportuna. In
realtà non esistono implementazioni di questo livello, quindi la codifica deve essere
fatta a livello di applicazione.
-
7. Application Il livello di applicazione è appunto il livello da cui le applicazioni
“vedono” la rete, ovvero il livello più astratto. Un’applicazione deve soltanto
indicare quali informazioni inviare ed a chi inviarle. L’applicazione che desidera
inviare un certo stream di dati ad un’altra applicazione presente su di un altro
sistema, connesso in rete tramite un’opportuna interfaccia di rete, invierà lo stream
dal livello 7 al livello 6 e per lei il gioco è fatto (non si preoccupa di ciò che avviene
dopo) L’applicazione “vede” soltanto l’interfaccia con il livello 6 e nient’altro. In
realtà lo stream da inviare viene processato ad ogni livello dal 6 fino all’1 che
si preoccupa effettivamente di inviarlo sulla rete. Dall’altra parte, l’interfaccia di
rete ricevente riceve le informazioni trasmesse e queste passeranno dal livello 1 al
livello 7 dopo opportuni controlli e ricostruzioni, per fornire così lo stream inviato
all’applicazione ricevente.
[da completare ...]