Introduzione
Fino ad ora abbiamo visto come è strutturata una rete e come si misurano le prestazioni, tuttavia per poter comunicare non è sufficiente la presenta dei collegamenti (hardware) ma è necessario anche il software sotto forma di protocolli di comunicazione.
Protocollo
Un protocollo definisce le regole che il mittente e il destinatario, così come tutti i sistemi intermedi coinvolti, devono rispettare per essere in grado di comunicare.
In situazioni più complesse viene effettuato layering di protocolli, ovvero i compiti vengono suddivisi fra più livelli ognuno con un suo protocollo.
Struttura a Livelli
La strutturazione dei protocolli in livelli consente di suddividere un compito complesso in compiti più semplici.
TCP/IP
TCP/IP è una famiglia di protocolli attualmente utilizzata in Internet ed organizzata in uno stack (gerarchia) di livelli detti moduli.
Layering
Servizzi
Un servizio è un insieme di primitive che uno strato offre a quello superiore.
Definisce quali operazioni lo strato è in grado di offrire, ma non dice nulla di come queste operazioni sono implementate.
Stack protocollare
La pila TCP/IP è composta di cinque livelli:
Livello Applicazione
Protocollo che regola l’interazione tra applicazioni di rete, in questo livello i pacchetti sono chiamati messaggi.
Esempio protocolli: HTTP, SMTP, FTP, DNS
Trasporto
Si occupa del trasferimento dei messaggi da un applicazione ad un altra, in questo livello i pacchetti sono chiamati segmenti.
Esistono due protocolli:
TCP
affidabile, ma più lenta.UDP
non affidabile, ma più veloce.
Rete
Livello che implementa l’instradamento (routing) dei segmenti dall’origine alla destinazione, in questo livello i pacchetti sono chiamati datagrammi.
Esempio protocolli: IP
Link
Livello che trasmette datagrammi da un nodo a quello successivo sul percorso, in questo livello i pacchetti sono chiamati frame.
Esempio protocolli: Ethernet, Wi-Fi, PPP (Lungo un percorso sorgente-destinazione un diatagramma può essere gestito da protocolli diversi)
Fisico
Riguarda il trasferimento fisico dei singoli bit in un mezzo di trasmissione.
Dove si trova il software di rete?
Non tutti i sistemi contengono tutti i moduli infatti grazie al layering i sistemi implementano solo i livelli necessari per i loro compiti, riducendo la complessità:
- I terminali contengono tutto lo stack protocollare
- I switch contengono soltanto i moduli link e fisico
- I router rispetto agli switch contengono anche il modulo
rete
, perché si occupano del routing dei pacchetti.
Incapsulamento e decapsulamento
La sorgente effettua l’incapsulamento (prende il pacchetto dal livello superiore, lo considera come carico dati o payload e aggiunge un header o intestazione).
- Messaggio = nessuna intestazione
- Segmento = header trasporto + messaggio
- Datagramma = header rete + segmento
- Frame = header collegamento + datagramma
Osservazioni
- Il destinatario effettua il decapsulamento.
- Il router effettua sia incapsulamento che decapsulamento perché collegato a due link.
Multiplexing e Demultiplexing
Dato che lo stack protocollare TCP/IP prevede più protocolli nello stesso livello, è necessario eseguire il multiplexing alla sorgente e il demultiplexing alla destinazione.
Multiplexing - un protocollo può incapsulare (uno alla volta) i pacchetti ottenuti da più protocolli del livello superiore.
Demultiplexing - un protocollo può decapsulare e consegnare i pacchetti a più protocolli del livello superiore.
Indirizzi
Il modello TCP/IP prevede una comunicazione logica tra coppie di livelli, per questo è necessario avere un indirizzo sorgente e un indirizzo destinazione ad ogni livello.
Layering
Vantaggi
L’utilizzo di questa struttura a livelli ha permesso di rendere il sistema modulare, questo offre vantaggi come:
- Semplicità di design
- Possibilità di modificare un modulo in modo trasparente se le interfacce con gli altri livelli rimangono le stesse
- Possibilità per ciascun costruttore di adottare la propria implementazione di un livello purché i requisiti su interfacce rimangono soddisfatti.
Svantaggi
A volte necessario scambio di informazioni tra livelli non adiacenti (esempio: per ottimizzare app funzionante su wireless) non rispettando principio della stratificazione.