Modello OSI

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search
Il modello di riferimento OSI

Il modello OSI (acronimo di Open Systems Interconnection, conosciuto anche come modello ISO/OSI), in telecomunicazioni e informatica, è uno standard stabilito nel 1984 dall'International Organization for Standardization (ISO), il principale ente di standardizzazione internazionale, il quale sentì la necessità[1] di produrre una serie di norme tecniche per legge per reti di calcolatori avviando il progetto per la definizione di un modello di riferimento a formato aperto per l'interconnessione di sistemi di computer (Basic Reference Model o standard ISO 7498[2]).

Tale modello stabilisce per l'architettura logica di rete, ovvero per le funzioni di comunicazione delle telecomunicazioni o di sistemi informatici, una struttura a strati composta da una pila di protocolli di comunicazione di rete suddivisa in 7 livelli, i quali insieme eseguono tutte le funzionalità della rete, seguendo un modello logico-gerarchico. A livello implementativo lo standard de facto affermatosi per architetture di rete a livelli è invece il TCP/IP[3][4].

Caratteristiche[modifica | modifica wikitesto]

Magnifying glass icon mgx2.svgLo stesso argomento in dettaglio: Sistema client-server, Commutazione di pacchetto e Architettura di rete.
Parallelo fra imprese (livelli superiori) e sistema postale (livelli inferiori) e il modello ISO/OSI.

Il modello ISO/OSI, concepito per reti di telecomunicazioni a commutazione di pacchetto, è costituito da una pila (o stack) di protocolli attraverso i quali viene ridotta la complessità implementativa di un sistema di comunicazione per il networking. In particolare ISO/OSI è costituito da strati (o livelli), i cosiddetti layer, che definiscono e racchiudono in sé a livello logico uno o più aspetti fra loro correlati della comunicazione fra due nodi di una rete. I layer sono in totale 7[5] e vanno dal livello fisico (quello del mezzo fisico, ossia del cavo, delle onde radio, fibra ottica o qualsiasi altro sistema trasmissivo) fino al livello delle applicazioni, attraverso cui si realizza la comunicazione di alto livello[1].

Ogni layer individua un protocollo di comunicazione del livello medesimo. ISO/OSI realizza una comunicazione per livelli, cioè 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. Ogni livello in trasmissione realizza la comunicazione col livello corrispondente sui nodi di transito o destinatari usando il SAP (service access point) del livello immediatamente sottostante. Sicché ISO/OSI incapsula i messaggi 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 SAP del layer inferiore, fino ad arrivare alla comunicazione ovvero alla trasmissione sul canale o mezzo fisico trasmissivo.

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 e scegliere ed adattare protocolli e relativi algoritmi alla particolare rete di telecomunicazioni da realizzare. Tutto ciò conferisce modularità al sistema con maggiore semplicità di progettazione e gestione della rete ovvero possibilità di migliorare, sviluppare e dunque eventualmente sostituire i protocolli dei vari strati cioè implementare e reimplementare con dei protocolli ciascuna delle rispettive funzionalità logiche lasciando inalterate le funzioni altrui.

Al fine di ottenere un miglioramento dell'attuale modello può risultare interessante la possibilità di trarre vantaggio da uno scambio di informazioni nell'ambito della stessa pila protocollare, tra gli strati non adiacenti.[6] Questa possibilità prende il nome di Cross-Layer (CL) ed è interessante soprattutto nelle comunicazioni radio per la natura stessa variabile del mezzo trasmissivo; sta riscuotendo un notevole interesse negli ultimi anni soprattutto per la riduzione dei consumi di energia nelle comunicazioni Wireless[7]. L'idea fondamentale del concetto Cross-layer è di introdurre la capacità, nei vari protocolli di comunicazione, di scambiarsi informazioni per adattarsi agli specifici stati del collegamento della rete. A differenza del modello OSI classico, non si vogliono più prendere solo delle contromisure preventive o meccanismi di controllo successivi ad un determinato evento verificatosi nella rete, bensì si cerca di decidere in modo interattivo con essa sfruttando le informazioni comuni a tutti gli strati.

Elenco e funzioni dei livelli[modifica | modifica wikitesto]

Esempio di incapsulamento dal primo all'ultimo livello (in arabo)

Livello 1: fisico (Physical Layer)[modifica | modifica wikitesto]

Obiettivo: trasmettere un flusso di dati non strutturati attraverso un collegamento fisico, occupandosi della forma e dei livelli di tensione del segnale. Ha a che fare con le procedure meccaniche ed elettroniche necessarie a stabilire, mantenere e disattivare un collegamento fisico.[8]

Semplicemente: si occupa di controllare la rete, gli hardware che la compongono e i dispositivi che permettono la connessione.

In questo livello si decidono:

A questo livello lavorano i modem e gli hub.

Livello 2: collegamento dati (Datalink Layer)[modifica | modifica wikitesto]

Obiettivo: 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.[8]

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. Questa frammentazione dei dati in specifici pacchetti è detta framing e i singoli pacchetti sono i frame.

Come controllo di 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 riscontro/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 (controllo di flusso): in caso di sbilanciamento della velocità di trasmissione tra mittente e destinatario, si occupa di rallentare l'operazione della macchina più veloce, accordandola all'altra e minimizzando così le perdite dovute a sovraccarico sul destinatario.

La sua unità dati fondamentale è il frame.

A questo livello lavorano gli switch e i bridge.

Livello 3: rete (Network Layer)[modifica | modifica wikitesto]

Obiettivo: rendere i livelli superiori indipendenti dai meccanismi e dalle tecnologie di trasmissione usate per la connessione e prendersi carico della consegna a destinazione dei pacchetti.[8]

È responsabile di:

  • routing: scelta ottimale del percorso di rete da utilizzare per garantire la consegna delle informazioni dal mittente al destinatario, scelta svolta dal router attraverso dei particolari algoritmi di Routing e tabelle di routing.
  • conversione dei dati nel passaggio fra una rete ed un'altra con diverse caratteristiche, come il protocollo di rete utilizzato (internet-working). Deve, quindi:
    • tradurre gli indirizzi di rete;
    • valutare la necessità di frammentare i pacchetti dati se la nuova rete ha una diversa Maximum Transmission Unit (MTU);
    • valutare la necessità di gestire diversi protocolli attraverso l'impiego di gateway.

La sua unità dati fondamentale è il datagram.

A questo livello lavorano i router.

Livello 4: trasporto (Transport Layer)[modifica | modifica wikitesto]

Obiettivo: permettere 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.[8]

Si occupa di:

  • stabilire, mantenere e terminare una connessione, garantendo il corretto e ottimale funzionamento della sottorete di comunicazione.
  • controllo della congestione: evitare che troppi pacchetti dati arrivino allo stesso router contemporaneamente con effetto di perdita di pacchetti stessi.

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 segmento, user datagram o pacchetto.

Livello 5: sessione (Session Layer)[modifica | modifica wikitesto]

Obiettivo: controllare la comunicazione tra applicazioni. Instaurare, mantenere ed abbattere connessioni (sessioni) tra applicazioni cooperanti. Si occupa anche della sincronia di invio/ricezione messaggi.[8]

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.

Livello 6: presentazione (Presentation Layer)[modifica | modifica wikitesto]

Obiettivo: 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.[8]

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).

Livello 7: applicazione (Application Layer)[modifica | modifica wikitesto]

Obiettivo: interfacciare utente e macchina.[8]

Fornisce un insieme di protocolli che operano a stretto contatto con le applicazioni. Potrebbe essere errato identificare un'applicazione utente come parte del livello applicazione.

I protocolli delle applicazioni tipiche di questo livello realizzano operazioni come ad esempio:

Elenco protocolli per livello[modifica | modifica wikitesto]

Il Modello ISO-OSI completo con l'attraversamento dei router nella rete di accesso e trasporto con gli host agli estremi

Elenco non esaustivo di protocolli di rete e/o tecnologie appartenenti ai vari livelli ISO/OSI:

Livello 1: fisico[modifica | modifica wikitesto]

Livello 2: link[modifica | modifica wikitesto]

Livello 3: rete[modifica | modifica wikitesto]

Livello 4: trasporto[modifica | modifica wikitesto]

Livello 5: sessione[modifica | modifica wikitesto]

Livello 6: presentazione[modifica | modifica wikitesto]

Livello 7: applicazione[modifica | modifica wikitesto]

I livelli visti precedentemente sono una suddivisione concettuale, ma la loro implementazione non è uniforme; infatti il livello fisico e quello di collegamento di solito sono presenti sulla scheda di interfaccia della rete, mentre il livello di rete ha un'implementazione mista hardware-software.

Confronto con il TCP/IP[modifica | modifica wikitesto]

Magnifying glass icon mgx2.svgLo stesso argomento in dettaglio: Suite di protocolli Internet.
Confronto tra ISO/OSI e TCP/IP

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, precorritrice di Internet, paradigma quest'ultimo affermatosi come standard nell'ambito networking.

Il modello ISO/OSI non è rigido: costituisce, piuttosto, un punto di riferimento per le architetture di rete a pacchetto, che possono distanziarsi più o meno da esso. La differenza sostanziale fra TCP/IP e ISO/OSI consiste nel fatto che nel TCP/IP i livelli di presentazione e di sessione sono esterni alla pila di protocolli (cioè è un'applicazione stand-alone che "usa" TCP/IP per comunicare con altre applicazioni). I livelli sono dunque solo quattro:

Note[modifica | modifica wikitesto]

  1. ^ a b Il modello ISO/OSI, su fis.unipr.it. URL consultato il 31 maggio 2016 (archiviato il 31 maggio 2016).
  2. ^ ISO 7498
  3. ^ Denenberg, 1990.
  4. ^ Davey e Houghton, 2016.
  5. ^ Internetworking Basics, su www.cisco.com. URL consultato il 28 agosto 2016 (archiviato dall'url originale il 12 giugno 2018).
  6. ^ Cross-Layer (PDF), su netlab.caltech.edu. URL consultato il 1º settembre 2018 (archiviato dall'url originale il 1º settembre 2018).
  7. ^ (EN) Cross-Layer Optimization for Energy-Efficient Wireless Communications (PDF), su liye.ece.gatech.edu (archiviato dall'url originale il 16 novembre 2017).
  8. ^ a b c d e f g I livelli del sistema OSI

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Controllo di autoritàGND (DE4201284-3