Modello OSI
L'Open System Interconnection (OSI) è uno standard stabilito dall'International Organization for Standardization (ISO) nel 1979 che stabilisce una pila di protocolli in 7 livelli.
Livelli
Obbiettivo: trasmettere un flusso di dati non strutturati attraverso un collegamento fisico, occupandosi della forma e del voltaggio del segnale. Ha a che fare con le procedure meccaniche e elettroniche necessarie a stabilire, mantenere e disattivare un collegamento fisico.
Obbiettivo: permettere il trasferimento affidabile di dati attraverso il livello fisico. Invia pacchetti di dati con la necessaria sincronizzazione ed effettua un controllo degli errori e delle perdite di segnale.
Questo livello si occupa di formare i dati da inviare attraverso il livello fisico, incapsulando i dati in un pacchetto provvisto di header (intestazione) e tail (coda), usati anche per sequenze di controllo.
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. Per ottimizzare l'invio degli ACK, si usa una tecnica detta Piggybacking, che consiste nell'accodare ai messaggi in uscita gli ACK relativi ad una connessione in entrata, per ottimizzare l'uso del livello fisico. I pacchetti ACK possono anche essere raggruppati e mandati in blocchi.
Questo livello si occupa anche di controllare il flusso di dati: in caso di sbilanciamento di velocità di trasmissione, si occupa di rallentare l'opera della macchina più veloce, accordandola all'altra e minimizzando le perdite dovute a sovraccarico.
Obbiettivo: 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.
È responsabile del routing (instradamento) dei pacchetti.
Obbiettivo: permettere un trasferimento di dati trasparente e affidabile (implementando anche un controllo degli errori e delle perdite) tra due host.
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 di arrivo.
Obbiettivo: controllare la comunicazione tra applicazioni. Stabilire, mantenere e terminare connessioni (sessioni) tra applicazioni cooperanti.
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.
Obbiettivo: trasformare 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.
Obbiettivo: interfacciare utente e macchina. Ogni layer individua un protocollo di comunicazione del livello medesimo. ISO/OSI realizza una comunicazione per livelli, ovvero dati due nodi A e B, il livello n del nodo A può scambiare informazioni col livello n del nodo B ma non con gli altri: ciò conferisce modularità al sistema e semplicità di implementazione e reimplementazione. Inoltre ogni livello realizza la comunicazione col livello corrispondente su altri nodi usando il PoS (point of service) del livello immediatamente sottostante. Sicché ISO/OSI incapsula i messagggi di livello n in messaggi del livello n-1. Così se A deve inviare, ad esempio, una e-mail a B, l'applicazione (liv. 7) di A propagherà il messaggio usando il layer sottostante (liv. 6) che a sua volta userà il PoS del layer inferiore, fino ad arrivare alla comunicazione sul mezzo fisico.
In tal modo si realizza una comunicazione multilivello che consente, ad esempio, di implementare algoritmi diversi per l'instradamento in rete pur disponendo di protocolli di trasporto connessi.
ISO/OSI è stato progettato per permettere la comunicazione in reti a 'commutazione di pacchetto', del tutto simili al paradigma TCP-UDP/IP usato in Unix e nella rete ARPAnet, poi divenuta Internet. La differenza sostanziale fra TCP/IP e ISO/OSI consiste nel fatto che nel TCP/IP il layer applicativo è esterno alla pila di protocolli (ovvero è una applicazione stand-alone che 'usa' TCP/IP per comunicare con altre applicazioni) , i layer sono dunque solo 4 (trasporto, rete, data-link, fisico) e i livelli sessione, presentazione, applicazione sono assenti perché implementati (eventualmente) altrove, cioè nell'applicazione stand-alone esterna.
ISO/OSI è uno stack di protocolli incapsulati, che sicuramente è più flessibile rispetto al paradigma di TCP/IP, ma soltanto perché risulta più astratto rispetto a questo. In pratica non esistono implementazioni 'complete' di ISO/OSI , a parte quelle proprietarie (ad esempio DECNET della Digital) e di interesse accademico.