In questo articolo, I modelli e le architetture di rete, spiego come sia possibile risolvere diverse problematiche legate alle reti (scelta del mezzo fisico, controllo degli errori, affidabilità, sicurezza) ed, in particolare, come sia possibile raggiungere l’obiettivo di trasmettere un messaggio da un host mittente ad uno destinatario
Indice dei contenuti
- Capitolo 1: Organizzare la complessità delle reti
- Capitolo 2: Il modello ISO/OSI
- Capitolo 3: Lo stack TCP/IP
Capitolo 1: Organizzare la complessità delle reti
Le reti di comunicazione sono nate con l’obiettivo di rendere possibile la trasmissione di dati tra macchine, anche fisicamente distanti tra loro, e di favorire la condivisione delle risorse. La realizzazione di una rete è, tuttavia, un’attività complessa che richiede di affrontare numerose problematiche: dal mezzo fisico necessario per trasmettere i segnali, alla gestione degli errori di trasmissione; dall’identificazione dei sistemi coinvolti, fino alla garanzia di sicurezza e affidabilità della comunicazione.
Affrontare questa complessità in modo unitario risulterebbe proibitivo. Per questo motivo, i progettisti hanno adottato un approccio modulare, suddividendo il problema in parti più semplici, ciascuna delle quali è gestita da moduli indipendenti ma cooperativi. L’obiettivo ultimo rimane quello di garantire il trasferimento affidabile di un messaggio da un mittente a un destinatario.
Il modello di rete a strati: Un approccio sistematico
Per semplificare la progettazione e l’implementazione delle reti, è stato introdotto il modello di rete a strati (o a livelli). Questo modello suddivide la comunicazione tra sistemi in funzioni elementari, ciascuna delle quali è assegnata a un livello specifico. Ogni livello ha il compito di risolvere una parte del problema complessivo, collaborando con gli altri per raggiungere l’obiettivo comune.
Un’analogia con la programmazione informatica
La progettazione a livelli trova corrispondenza nella metodologia top-down utilizzata in programmazione. Quando si affrontano problemi complessi, si tende a scomporli in sottoproblemi più semplici, risolti attraverso moduli funzionali. Questo approccio consente di evitare di progettare soluzioni monolitiche, difficili da gestire, e permette di concentrarsi su aspetti specifici del problema.
Tuttavia, tale suddivisione richiede la definizione di regole precise per la comunicazione tra i vari moduli, sia per quanto riguarda i dati scambiati, sia per le modalità di input e output. Allo stesso modo, i modelli a livelli per le reti definiscono un sistema strutturato per ridurre la complessità della comunicazione tra macchine.
Un’analogia con la gestione di spedizioni
Un esempio pratico della suddivisione del lavoro in compiti più semplici può essere trovato nel processo di spedizione. Immaginiamo il responsabile acquisti di un’azienda italiana che desidera ricevere informazioni su un prodotto di una società americana. La comunicazione richiede diverse fasi:
- Ruoli definiti: Identificare chi si occupa di specifici compiti, come il traduttore o l’addetto alle spedizioni.
- Servizi tra le persone: Stabilire le attività svolte da ciascun ruolo, ad esempio la traduzione o il ritiro presso l’ufficio postale.
- Regole operative: Stabilire procedure standardizzate, come inserire una lettera in una busta e apporvi un francobollo.
Analogamente, il modello a strati suddivide il processo di comunicazione in compiti distinti e coordinati.
Il modello a strati: Struttura e funzionamento
Il modello a strati è tradizionalmente rappresentato in verticale, come una pila di livelli. Ogni livello comunica con il corrispondente livello dell’altro sistema (peer level) attraverso protocolli specifici. Allo stesso tempo, interagisce direttamente solo con i livelli immediatamente superiori e inferiori.
Comunicazione tra livelli:
- Logica (peer-to-peer): Ogni livello comunica con il livello corrispondente del sistema remoto attraverso protocolli, ma in realtà il messaggio passa attraverso gli strati intermedi.
- Fisica (livelli adiacenti): Ogni livello elabora il messaggio ricevuto dal livello superiore, aggiungendo o rimuovendo informazioni, e lo trasmette al livello inferiore attraverso una interfaccia
Ogni livello accede ai servizi offerti dal livello sottostante
Questa modularità garantisce flessibilità e indipendenza tra i livelli. Qualsiasi modifica a uno strato non richiede modifiche agli altri, purché l’interfaccia tra livelli rimanga invariata.

Vantaggi del modello a strati
Il successo del modello a strati deriva dai suoi numerosi vantaggi:
- Riduzione della complessità: Grazie all’introduzione di livelli di astrazione.
- Indipendenza dei livelli: Ogni livello ha un ruolo specifico e non è vincolato agli altri.
- Interazione tramite interfacce: Ogni livello offre servizi al superiore e utilizza quelli del sottostante, senza interessarsi al modo in cui le funzioni interne sono implementate.
- Progettazione modulare: È possibile aggiungere nuovi servizi modificando solo il livello interessato.
- Flessibilità nei protocolli: Ogni livello può adottare protocolli diversi, ottimizzati per specifici compiti.
Problematiche affrontate dai livelli
Ogni livello si occupa di un aspetto specifico della comunicazione, come:
- Identificazione delle entità peer.
- Modalità di trasferimento (simplex, half-duplex, full-duplex).
- Controllo degli errori e dell’ordine di invio.
- Gestione del flusso e adattamento delle velocità di trasmissione.
- Instradamento e frammentazione dei pacchetti.
Questi aspetti saranno approfonditi nelle specifiche relative ai protocolli utilizzati nelle reti moderne, come quelle TCP/IP.
Il principio dell’incapsulamento
L’incapsulamento (encapsulation) è un principio fondamentale nelle architetture di rete basate sul modello a strati. Questo processo permette ai livelli della comunicazione di aggiungere informazioni utili per lo svolgimento delle funzioni specifiche. Quando un messaggio (M) passa dal livello superiore al livello immediatamente inferiore, viene arricchito con un header (H), ovvero un set di dati che contiene informazioni necessarie per gestire e instradare il pacchetto.
Ad esempio, un messaggio proveniente dal livello 5 viene elaborato dal livello 4, che aggiunge il proprio header (H4). L’insieme risultante, formato da M + H4, viene quindi inviato al livello 3 come pacchetto completo.
Lato ricezione: Decapsulamento
Nel ricevere un pacchetto dati, il livello 4 estrae l’header H4 per ottenere le informazioni necessarie al proprio funzionamento, inviate dalla peer entity dell’host mittente. Successivamente, i dati rimanenti, privi dell’header H4, vengono trasmessi al livello superiore (livello 5), completando il processo di decapsulamento.
Una eccezione al principio di incapsulamento si verifica solo nei primi e ultimi livelli, che non aggiungono né modificano gli header.

Caratteristiche delle architetture di rete
Un’architettura di rete è il quadro concettuale che consente la comunicazione tra computer. Per realizzare un’architettura efficiente, è necessario seguire tre passaggi fondamentali:
- Definizione del modello di riferimento: Si stabilisce il numero di strati, le funzioni svolte da ciascuno e le relazioni tra essi.
- Descrizione dei servizi: Si identificano i servizi che ogni strato fornisce a quelli superiori e inferiori.
- Formalizzazione dei protocolli e delle interfacce: Si specificano le modalità di implementazione e di interazione tra i livelli.
Protocol Data Unit (PDU)
Nella comunicazione tra sistemi, l’insieme dei dati scambiati, noto genericamente come “messaggio” o “pacchetto,” assume una definizione più formale nel contesto del modello a strati: la Protocol Data Unit (PDU). Ogni protocollo standard deve specificare il formato della sua PDU, dettagliando gli elementi che costituiscono i dati trasmessi.
Primitive di servizio
Le primitive di servizio sono le operazioni che un livello utilizza per interagire con quello immediatamente sottostante. Servono a:
- Richiedere un servizio in trasmissione.
- Ricevere informazioni in ricezione.
I principali parametri delle primitive includono dati da trasferire, destinazione, caratteristiche del servizio e altro. Le primitive più comuni sono:
- Connect Request: Richiesta di connessione con specifica dei parametri (ad esempio, dimensione massima dei pacchetti).
- Connect Indication: Segnalazione al destinatario della richiesta di connessione.
- Connect Response: Risposta del destinatario che accetta o rifiuta la connessione.
- Connect Confirm: Conferma dell’esito della richiesta di connessione.

Distinzione tra funzioni, servizi e primitive
- Funzioni: Operazioni interne svolte da un livello per gestire i dati.
- Servizi: Offerti su un’interfaccia tra livelli adiacenti per garantire la comunicazione.
- Primitive: Meccanismi che attivano i servizi e permettono l’interazione tra i livelli.
Questa distinzione è essenziale per comprendere il ruolo di ciascun componente nel modello a strati e per garantire la modularità e l’efficienza dell’architettura di rete.
Capitolo 2: Il modello ISO/OSI
Un modello di riferimento per le reti di computer
Il modello ISO/OSI (Open Systems Interconnection) è stato sviluppato nel 1978 dall’International Organization for Standardization (ISO) con l’obiettivo di definire una struttura formale per l’interconnessione tra computer. Pubblicato nel documento ISO 7498, il modello ISO/OSI è oggi un punto di riferimento universale per le reti di comunicazione.
Il modello si basa su una struttura a strati, suddividendo le funzioni di rete in sette livelli distinti, ciascuno con responsabilità specifiche e interdipendenti. Questo approccio facilita la progettazione, il funzionamento e l’interoperabilità tra sistemi, garantendo che ogni livello si concentri su un aspetto fondamentale della comunicazione.
La suddivisione in strati
I sette livelli del modello ISO/OSI sono:
- Lower Layers (livelli inferiori): I primi tre strati sono orientati alla rete e garantiscono le comunicazioni a livello di infrastruttura.
- Intermediate Layer (livello intermedio): Il quarto livello separa l’ambiente della rete da quello delle applicazioni.
- Upper Layers (livelli superiori): Gli ultimi tre strati sono dedicati alle funzioni di applicazione e interazione diretta con l’utente.
Il principio dell’incapsulamento è centrale nella comunicazione tra due host. Durante la trasmissione, ogni livello aggiunge il proprio header ai dati, mentre nel processo inverso, al livello di ricezione, ogni strato analizza e rimuove il suo header, trasmettendo il payload al livello superiore.

I sette livelli del modello ISO/OSI
1. Physical Layer (Livello fisico)
Gestisce la trasmissione di una sequenza di bit attraverso un mezzo fisico, come cavi elettrici, fibre ottiche o segnali radio. Le sue principali funzioni includono:
- Definizione delle caratteristiche fisiche delle interfacce e del mezzo trasmissivo.
- Rappresentazione dei bit come segnali da trasmettere.
- Sincronizzazione tra mittente e destinatario per garantire una comunicazione senza interruzioni.
- Organizzazione della topologia fisica della rete.
Apparati: Schede di rete (NIC) e hub.
2. Data Link Layer (Livello di collegamento dati)
Rende affidabile il collegamento fisico tra due dispositivi della stessa rete. Si occupa di:
- Suddividere i dati in frame, ciascuno con un header che identifica mittente e destinatario.
- Controllare il flusso per prevenire la congestione.
- Correggere errori di trasmissione.
- Gestire l’accesso al mezzo trasmissivo condiviso.
Apparati: Bridge e switch.
3. Network Layer (Livello di rete)
Responsabile dell’instradamento dei pacchetti attraverso diverse reti. I suoi compiti principali includono:
- Suddividere i dati in packet o datagram.
- Utilizzare indirizzi logici come l’indirizzo IP per comunicazioni tra reti.
- Instradare i pacchetti verso la destinazione.
Apparati: Router.
4. Transport Layer (Livello di trasporto)
Assicura la consegna end-to-end dei messaggi tra mittente e destinatario. Si occupa di:
- Identificare il processo corretto attraverso numeri di porta.
- Suddividere i messaggi in segmenti e riassemblarli al destinatario.
- Controllare il flusso e gli errori su scala end-to-end.
- Gestire la connessione orientata (connection-oriented) o non orientata (connectionless).
5. Session Layer (Livello di sessione)
Controlla e gestisce il dialogo tra i sistemi, suddividendo le interazioni in sessioni. I suoi compiti principali includono:
- Sincronizzare il flusso dei dati.
- Introdurre checkpoint per facilitare la ripresa delle comunicazioni in caso di interruzioni.
6. Presentation Layer (Livello di presentazione)
Garantisce la correttezza sintattica e semantica dei dati. Funzioni principali:
- Conversione dei dati in un formato comune per la trasmissione.
- Crittografia e decrittografia delle informazioni.
- Compressione dei dati per ottimizzare la trasmissione di file di grandi dimensioni.
7. Application Layer (Livello applicativo)
Offre un’interfaccia utente per accedere ai servizi di rete come posta elettronica, trasferimento di file e terminale remoto. La PDU a questo livello è chiamata message.
L’uso di OSI nelle reti
Il modello ISO/OSI è adottato universalmente come modello di riferimento per l’organizzazione delle architetture di protocolli. Tuttavia, i protocolli definiti per i livelli Network e Transport del modello OSI hanno riscontrato scarso successo. Al contrario, l’architettura TCP/IP, anch’essa strutturata a strati, si è rapidamente imposta come standard grazie alla diffusione di Internet.
I protocolli chiave dell’architettura TCP/IP, come IP per il livello Network e TCP per il livello Transport, sono incompatibili con quelli del modello OSI ma rappresentano un’alternativa valida e complementare. Per quanto riguarda la struttura generale, i due modelli sono equivalenti.
Capitolo 3: Lo stack TCP/IP
3.1 I livelli di TCP/IP
L’architettura TCP/IP deve il suo nome ai due protocolli fondamentali che la compongono: IP (Internet Protocol) e TCP (Transmission Control Protocol). Comunemente nota come Internet protocol suite o Internet protocol stack, questa architettura rappresenta una struttura a strati, in cui ciascun livello svolge funzioni specifiche attraverso protocolli dedicati.
A differenza del modello ISO/OSI, lo stack TCP/IP si basa su quattro livelli (in realtà negli ultimi anni si è passati ad un modello a 5 livelli), che corrispondono con alcune differenze ai sette strati del modello OSI. Questa differenza ha ragioni storiche: i protocolli IP e TCP sono stati sviluppati prima dell’introduzione del modello OSI, che definisce in modo rigoroso le funzioni di ciascun livello. Al contrario, i livelli di TCP/IP sono più flessibili, consentendo l’uso di protocolli indipendenti, scelti in base alle necessità specifiche.

I quattro livelli del modello TCP/IP
Vediamo in dettaglio i livelli del modello TCP/IP, con le loro funzioni principali e le analogie con il modello OSI.
1. Network Access Layer (Livello di accesso alla rete): Chiamato anche Physical Layer, questo strato consente l’utilizzo di risorse di rete diverse. Comprende le funzioni dei livelli Fisico, Data Link, e in parte Network del modello OSI (limitatamente agli aspetti legati al funzionamento della singola rete).
- Funzioni principali: gestisce il mezzo fisico per la trasmissione dei dati e l’indirizzamento fisico (MAC Address).
- Apparati: schede di rete, hub, bridge e switch.
2. Internet Layer (Livello di rete): Conosciuto come IP Layer, è responsabile dell’instradamento dei pacchetti e dell’interconnessione delle reti. Include le funzioni relative all’Internetworking e fornisce un servizio connectionless.
- Protocollo chiave: IP (Internet Protocol), che utilizza indirizzi logici per identificare i dispositivi nelle reti globali (indirizzi IP).
- Apparati: router.
3. Transport Layer (Livello di trasporto): Detto anche TCP Layer, si occupa della comunicazione end-to-end (E2E) tra host mittente e destinatario.
- Fornisce due tipi di servizi:
- Connection-oriented: tramite il protocollo TCP, che garantisce l’affidabilità della trasmissione (gestione degli errori e controllo di flusso).
- Connectionless: tramite il protocollo UDP (User Datagram Protocol), che consente una trasmissione più rapida ma meno affidabile.
- Apparati: software nei dispositivi di rete.
4. Application Layer (Livello applicativo): Questo livello corrisponde agli ultimi tre strati del modello OSI (Sessione, Presentazione e Applicazione). Gestisce i servizi per l’utente finale, come:
- Posta elettronica (SMTP).
- Navigazione web (HTTP/HTTPS).
- Trasferimento file (FTP).
Confronto con il modello OSI
Lo stack TCP/IP è talvolta rappresentato con cinque strati, dove il livello Physical viene suddiviso in Physical e Data Link per riflettere meglio la corrispondenza con il modello OSI.
Nel 1983 TCP/IP diventa l’architettura ufficiale di Internet e nel corso degli anni ha avuto diverse evoluzioni che riguardano principalmente il livello network:
- Versione 4: suddivisione in classi degli indirizzi IP (formati da 4 byte, in notazione decimale puntata)
- Versione 5: mai utilizzata a causa del costo elevato per implementare le tante modifiche
- Versione 6: da IPv4 a IPv6 (indirizzi a 128 bit)
Lascia un commento