Il modello ISO-OSI (Open Systems Interconnection) è una struttura concettuale che descrive le funzioni di un sistema di comunicazione di rete, suddivise in sette strati (o livelli), organizzati in modo gerarchico (pila protocollare). Questa pila protocollare vede il livello più alto, il livello 7 (applicazione), interfacciarsi direttamente con l’utente, mentre il livello più basso, il livello 1 (fisico), si interfaccia con il messo fisico di trasmissione.
Ogni strato definisce un insieme specifico di funzioni che operano su diversi tipi di informazione. Ciascuno strato utilizza i servizi offerti dallo strato immediatamente sottostante e, a sua volta, fornisce servizi allo strato immediatamente superiore.
I 4 strati superiori (Trasporto, Sessione, Presentazione ed Applicazione) sono detti “Host Layer” e le loro funzioni sono principalmente relative all'interoperabilità tra le applicazioni software utilizzate per generare e/o leggere i messaggi (i dati) trasmessi.
I 3 strati inferiori (Fisico, Collegamento Dati e Rete) sono detti “Media Layer” e sono organizzati per fornire il supporto di rete e sono gli unici utilizzati anche dai dispositivi intermedi (come router, hub, switch,…).
Lo strato fisico si occupa di trasmettere i singoli bit sul mezzo trasmissivo (da un nodo di partenza ad un nodo di arrivo).
Definisce le caratteristiche elettriche (correnti), fisici (impulsi luminosi) o radio che sono coinvolte nel trasporto dei bit dalla NIC (Network Interface Card) di un host al mezzo trasmissivo e viceversa.
Le schede di rete variano a seconda della topologia di rete e del protocollo utilizzato, oltre che dal tipo di cavo da connettere. Di solito una scheda ha un solo un tipo di connettore; se ne ha più di uno, viene detta “combo”.
Lo Strato di Collegamento dati si occupa della trasmissione affidabile e priva di errori di frame di bit tra un nodo e il successivo.
Le Funzioni dello strato 2 includono:
framing dei dati (incapsulamento del datagramma ricevuto dal livello di rete superiore in frame per trasmissione al livello fisico inferiore),
controllo degli errori utilizzo di meccanismi come il CRC (Cyclic redundancy Check) inserito nel "Trailer" del frame per verificare l'integrità dei dati,
gestione degli indirizzi fisici utilizzo degli indirizzi MAC (Media Access Control) dei due host comunicanti
de-framing estrazione del datagramma dal frame per inviarlo allo strato di rete superiore.
Un frame comprende le seguenti componenti:
ID del destinatario. Indirizzo MAC dell’host di destinazione o del gateway predefinito. L’indirizzo MAC (Media Access Control) è un numero esadecimale univoco di 12 cifre.
ID del mittente. Indirizzo MAC del mittente.
Informazioni di controllo. Includono dati come l’effettivo tipo di frame e informazioni sull’instradamento e la segmentazione.
CRC (Cyclic Redundancy Check). Serve a verificare che il frame di dati sia arrivato privo di errori all’host destinatario.
L’indirizzo MAC è un numero esadecimale univoco di 12 cifre assegnato al costruttore dell’hardware da un organismo internazionale preposto (ad es. FF: B5: 53: A2: 33: C6 ).
I protocolli MAC definiti in relazione alla topologia della rete come Ethernet (IEEE 802.3) con CSMA/CD (Carrier Sense Multiple Access with Collision Detection) e Token Ring (IEEE 802.5) hanno l'obiettivo di:
garantire un’alta velocità di trasmissione dei messaggi,
garantire un uso intensivo del canale di comunicazione,
garantire il più basso ritardo possibile nella trasmissione o ritrasmissione del messaggio.
Lo strato della rete determina il modo migliore per spostare i dati (organizzati in pacchetti) da un host all’altro (routing), attraversando più reti, se necessario.
Gestisce:
- l’indirizzamento logico dei singoli nodi comunicanti nella rete (es. gli indirizzi IP)
- la traduzione degli indirizzi logici in indirizzi fisici (gli indirizzi MAC)
- l'utilizzo di protocolli connection oriented (X.25) o connectionless (IP)
- l’instradamento dei messaggi (packet) verso la destinazione finale.
Lo strato di trasporto è responsabile della connessione logica tra il processo dell’applicazione dell’host mittente ed il processo dell’applicazione dell’host destinatario.
Le sue funzioni includono:
segmentazione e riassemblaggio: lo strato 4 segmenta i dati prodotti dal mittente (che provengono dal livello di sessione) e trasmette i segmenti allo strato di rete inferiore. In ricezione, riassembla i segmenti ricevuti dallo strato 3 di rete in un flusso verso il livello di sessione.
indirizzamento dei processi: gestisce l'identificazione dei processi applicativi.
controllo della connessione: stabilisce, mantiene e termina le connessioni.
controllo del flusso: regola la velocità di trasmissione tra processi per evitare sovraccarichi.
controllo degli errori: assicura l'integrità dei dati trasmessi.
Lo strato della sessione consente a due applicazioni, anche su host fisicamente separati, di stabilire, gestire e terminare una connessione per la comunicazione, chiamata sessione ( intesa come periodo di comunicazione (tra login e logout) tra due o più interlocutori).
La sessione assicura che i messaggi scambiati siano ricevuti con un alto grado di attendibilità. Le funzioni realizzate sono:
controllo del dialogo tra due sistemi (modalità half-duplex o full-duplex)
sincronizzazione dei processi
funzioni di sicurezza, per assicurare che i due host siano autorizzati a comunicare attraverso la rete.
Un esempio di interfaccia di programmazione che opera a livello di sessione è il Socket, che stabilisce porte, protocolli e indirizzi dei due host che si apprestano a comunicare su rete.
Lo strato di presentazione determina il modo in cui i dati sono “formattati“ nello scambio tra due computer in rete, responsabile di:
traduzioni,
cifratura/decifratura,
compressione/decompressione
codifiche dei dati per le conversioni dei set di caratteri e dei protocolli.
I dati ricevuti dallo strato dell’applicazione vengono tradotti in un formato intermedio comunemente riconosciuto (detto formato canonico).
Alcuni formati di presentazione comuni sono:
ASCII. L’American Standard Code for Information Interchange è un set di caratteri codificati ad 8 bit, usato per definire tutti i caratteri alfanumerici.
XDR. L’eXtended Data Representation è usata da applicazioni come RPC, NFS e NIS per fornire un formato universale per la trasmissione di testi tra computer che si servono di rappresentazioni diverse (per es. ASCII ed EBCDIC).
MIME. Multipurpose Internet Mail Extensions, utilizzato per specificare il tipo di contenuto dei file (es. allegati email).
Nello strato dell'applicazione sono definite collezioni di protocolli di comunicazione per attività a livello di utente come posta elettronica, trasferimento file (FTP), login remoto, DNS, WWW, ecc…
Lo strato dell’applicazione si occupa fondamentalmente di consentire ai programmi utente di accedere ai servizi di rete. Per usare questo strato dell’applicazione, un programma utente deve avere una componente di comunicazione che richieda risorse di rete.
Di seguito sono riportati alcuni esempi di programmi e servizi che coinvolgono lo strato dell’applicazione:
Posta Elettronica. programmi che consentono l'accesso ai servizi di comunicazione di rete. Esempi di prodotti di questo tipo sono Lotus Notes e MS Exchange Server.
Applicazioni per teleconferenze. permettono agli utenti di riunirsi virtualmente con video, voce, etc. Un programma di questo tipo è MS Net Meeting.
World Wide Web. Attraverso i browser, gli utenti possono accedere a informazioni provenienti da località remote in vari formati (testo, immagini, video, suoni). Applicazioni tipiche sono Apache Web Server, e altri web server tradizionali.