Prima di tentare di descrivere l'architettura a livelli di internet, vediamo un'analogia.
Se si dovesse descrivere il sistema che consente a una persona di viaggiare con una compagnia aerea, si direbbe che c'è un momento in cui si acquista il biglietto, si imbarca il bagaglio, ci si reca al gate, si decolla, l'aereo si instrada verso la destinazione, (giunti a destinazione) si atterra, si esce dal gate, si ritira il bagaglio e si esce dall'aeroporto (biglietto).
Dopodiché i passi si ripetono all'inverso per tornare indietro.
Queste fasi consentono ad un viaggiatore di partire da un'origine verso una destinazione. Si possono suddividere le fasi di questo sistema in livelli:
Si noti che ogni livello funziona in modo autonomo. E che tutti i livelli insieme rendono possibile il viaggio. I livelli cooperano in un certo modo tra di loro, ma senza ostacolarsi. Se si è muniti di biglietto si può imbarcare il bagaglio, imbarcato il bagaglio si può entrare al gate e se si è entrati al gate si può decollare, una volta decollati ci si può instradare verso la destinazione. Il vantaggio di una suddivisione a livelli di questo tipo permette l'aggiornamento dei livelli in maniera indipendente dagli altri. Per esempio il fatto che variano le modalità con cui si consegna il bagaglio, non vuol dire che varia il modo in cui si fa il biglietto.
Internet è organizzata in livelli. I livelli possono essere implementati per via hardware o software.
Per la descrizione dei livelli sarà utilizzato un approccio top-down, ovvero partendo prima dal livello più in alto (applicazione) fino al livello più in basso (fisico).
Di questo livello fanno parte tutti quei protocolli di rete (HTTP, SMTP, …) tramite il quale le applicazioni (nei sistemi periferici) comunicano. Anche il protocollo DNS fa parte di questo livello. Chiameremo messaggi i pacchetti di informazioni scambiati a questo livello.
Di questo livello fanno parte due protocolli: TCP e UDP. Entrambi trasferiscono i messaggi tra punti periferici del livello di applicazione.
Questo livello si occupa di trasferire (a livello di rete) da un host all'altro i segmenti (ricevuti dal livello sovrastante) in cui è specificato l'indirizzo di destinazione. In questo livello è contenuto anche il protocollo IP e vari protocolli di instradamento per la scelta del percorso più adatto da far intraprendere ai datagrammi.
In questo livello si instrada un datagramma attraverso una serie di router tra la sorgente e la destinazione. Ad ogni nodo, il livello di rete, passa il datagramma al livello sottostante, che lo trasporta al nodo successi. In questo nodo, il livello di collegamento passa il datagramma al livello di rete superiore.
I servizi forniti da questo livello dipendono dallo specifico protocollo utilizzato. Alcuni protocolli garantiscono la consegna affidabile (che è diverso da quello omonimo di TCP che fornisce consegna affidabile da un sistema periferico all'altro). Esempi del livello di collegamento sono: ethernet, Wi-Fi. I pacchetti a questo livello sono chiamati frame.
Mentre il compito del livello di collegamento è trasferire interi frame da un elemento della rete a quello adiacente, il ruolo del livello fisico è trasferire i singoli bit del frame da un nodo a quello successivo. In base alla tipologia del mezzo trasmissivo la modalità con cui viaggiano i bit varia. Mezzi trasmissivi (fibra ottica, doppino in rame,…)
La figura sopra illustra il concetto di incapsulamento.
Un messaggio a livello di applicazione
A ciascun livello un pacchetto ha due tipi di campi: