In telecomunicazioni e informatica l'Open Systems Interconnection (meglio conosciuto come modello ISO/OSI) è uno standard per reti di calcolatori stabilito nel 1978 dall'International Organization for Standardization, il principale ente di standardizzazione internazionale, che stabilisce per l'architettura logica di rete un'architettura a strati composta da una pila di protocolli suddivisa in 7 livelli, i quali insieme espletano in maniera logico-gerarchica tutte le funzionalità della rete.
1°livello-livello fisico
Semplicemente: si occupa di controllare la rete, gli hardware che la compongono e i dispositivi che permettono la connessione.
In questo livello si decidono:
Le tensioni scelte per rappresentare i valori logici
La durata in micro-secondi del segnale elettrico che identifica un bit
La modulazione e la codifica utilizzata
L'eventuale trasmissione simultanea in due direzioni
La forma e la meccanica dei connettori usati per collegare l'hardware al mezzo trasmissivo
2°livello-Collegamento
Permettere il trasferimento affidabile di dati attraverso il livello fisico. Invia frame di dati con la necessaria sincronizzazione ed effettua un controllo degli errori e delle perdite di segnale. Tutto ciò consente di far apparire, al livello superiore, il mezzo fisico come una linea di trasmissione esente da errori di trasmissione.
Questo livello si occupa in primis di formare i dati da inviare attraverso il livello fisico, incapsulando il pacchetto proveniente dallo strato superiore in un nuovo pacchetto provvisto di un nuovo header (intestazione) e tail (coda), usati anche per sequenze di controllo.
Questo livello si occupa anche di controllare il flusso di dati (controllo di flusso): in caso di sbilanciamento della velocità di trasmissione tra mittente e destinatario, si occupa di rallentare l'opera della macchina più veloce, accordandola all'altra e minimizzando così le perdite dovute a sovraccarico.
La sua unità dati fondamentale è il frame.
3°Livello-Rete
Rende i livelli superiori indipendenti dai meccanismi e dalle tecnologie di trasmissione usate per la connessione. Si occupa di stabilire, mantenere e terminare una connessione, garantendo il corretto e ottimale funzionamento della sotto-rete di comunicazione.
È responsabile di:
routing: scelta ottimale del percorso da utilizzare per garantire la consegna delle informazioni
gestione della congestione: evitare che troppi pacchetti arrivino allo stesso router contemporaneamente
conversione dei dati nel passaggio fra una rete ed un'altra con diverse caratteristiche (internet working). Deve, quindi:
tradurre gli indirizzi
valutare la necessita' di frammentare i dati se la nuova rete ha una diversa Maximum Transmission Unit (MTU)
valutare la necessita' di gestire diversi protocolli attraverso l'impiego di gateway
La sua unità dati fondamentale è il pacchetto.
Come controllo d'errore, per ogni pacchetto ricevuto, il destinatario invia al mittente un pacchetto ACK (acknowledgement, conferma) contenente lo stato della trasmissione: il mittente deve ripetere l'invio dei pacchetti mal trasmessi e di quelli che non hanno ricevuto risposta.
4°Livello-Trasporto
Permette un trasferimento di dati trasparente e affidabile (implementando anche un controllo degli errori e delle perdite) tra due host. È il primo livello realmente end-to-end, cioè da host sorgente a destinatario.
A differenza dei livelli precedenti, che si occupano di connessioni tra nodi contigui di una rete, il Trasporto (a livello logico) si occupa solo del punto di partenza e di quello finale.
Si occupa anche di effettuare la frammentazione dei dati provenienti dal livello superiore in pacchetti, detti 'segmenti' e trasmetterli in modo efficiente ed affidabile usando il livello rete ed isolando da questo i livelli superiori. Inoltre, si preoccupa di ottimizzare l'uso delle risorse di rete e di prevenire la congestione.
La sua unità dati fondamentale è il messaggio.
5°Livello-Sessione
Controlla la comunicazione tra applicazioni. Instaurare, mantenere ed abbattere connessioni (sessioni) tra applicazioni cooperanti. Si occupa anche della sincronia di invio/ricezione messaggi.
Esso consente di aggiungere, ai servizi forniti dal livello di trasporto, servizi più avanzati, quali la gestione del dialogo (mono o bidirezionale), la gestione del token (per effettuare mutua esclusione) o la sincronizzazione (inserendo dei checkpoint in modo da ridurre la quantità di dati da ritrasmettere in caso di gravi malfunzionamenti).
Si occupa anche di inserire dei punti di controllo nel flusso dati: in caso di errori nell'invio dei pacchetti, la comunicazione riprende dall'ultimo punto di controllo andato a buon fine.
6°Livello-Presentazione
Trasforma i dati forniti dalle applicazioni in un formato standardizzato e offrire servizi di comunicazione comuni, come la crittografia, la compressione del testo e la riformattazione.
Esso consente di gestire la sintassi dell'informazione da trasferire. E sono previste tre diverse sintassi:
astratta (definizione formale dei dati che gli applicativi si scambiano).
concreta locale (come i dati sono rappresentati localmente)
di trasferimento (come i dati sono codificati durante il trasferimento).
7°Livello-Applicazione
Interfaccia utente e macchina.
Fornisce un insieme di protocolli che operano a stretto contatto con le applicazioni. È errato identificare un'applicazione utente come parte del livello applicazione.
I protocolli delle applicazioni tipiche di questo livello realizzano operazioni come:
Trasferimento di file;
Terminale virtuale;
Posta elettronica;