# Suite di protocolli Internet

La suite di protocolli Internet, in informatica e in telecomunicazioni, indica una famiglia di protocolli di rete legati da dipendenze d'uso su cui si basa il funzionamento logico della rete Internet. Chiamata a volte, per sineddoche, suite di protocolli TCP/IP, in funzione dei due più importanti protocolli in essa definiti: il Transmission Control Protocol (TCP) e l'Internet Protocol (IP), il rispettivo modello di architettura di rete a strati rappresenta lo standard de facto nell'ambito delle reti dati in contrapposizione allo standard de iure rappresentato invece dal modello OSI.

## Storia

Nei primi anni settanta del XX secolo, la Defense Advanced Research Project Agency (DARPA) finanziò l'Università di Stanford e la BBN (Bolt, Beranek and Newman) per lo sviluppo di un insieme di protocolli di comunicazione da utilizzarsi per lo sviluppo di reti a commutazione di pacchetto, per l'interconnessione di calcolatori eterogenei. Fu così che nacque l'Internet Protocol Suite i cui due protocolli più noti sono il TCP (Transmission Control Protocol) e l'IP (Internet Protocol).
Il protocollo IP provvede a fornire il sistema di indirizzamento dei nodi terminali della rete, assegnando a ciascuno un nome univoco, formato da quattro gruppi di cifre. Al livello immediatamente superiore, il protocollo TCP provvede a gestire il flusso dell'informazione tra i due nodi. Si fa riferimento a questa architettura di rete con la sigla TCP/IP o IP/TCP (quest'ultima non è quasi mai usata). I creatori di tali protocolli di trasmissione, tuttora utilizzati nel web, sono nello specifico Robert Kahn e Vinton Cerf, a cui l'ex Presidente degli Stati Uniti George W. Bush ha consegnato la Presidential Medal of Freedom, ovvero la più alta tra le onorificenze civili a stelle e strisce, il 9 novembre 2005. I due studiosi non sono nuovi a questo genere di premiazioni: all'inizio del 2005 è stato assegnato loro il prestigioso 2004 A.M. Turing Award, equivalente del Premio Nobel nel settore dell'Information Technology.
Cerf e Kahn hanno sviluppato lo standard per la trasmissione di pacchetti via rete nel 1973, mentre lavoravano a un progetto di sviluppo dei sistemi di comunicazione voluto dalla Defense Advanced Research Projects Agency. Attualmente, Vint Cerf collabora con Google alla creazione di standard per le future applicazioni e nel frattempo si dedica allo sviluppo di nuovi protocolli di comunicazione interplanetaria per il Jet Propulsion Lab della NASA. Robert Kahn, invece, dopo 13 anni di servizio presso la DARPA è diventato presidente della Corporation for National Research Initiatives (CNRI).
Questi protocolli, utilizzabili gratuitamente da tutti perché di pubblico dominio fin dall'inizio, ottennero un elevato successo (utilizzati da un gruppo di ricercatori per ARPAnet).
Questo genera alcune ambiguità dovute al fatto che il nome più corretto sarebbe “Internet Protocol Suite”. Per esempio succede di sentir parlare di servizi basati su TCP/IP anche quando in realtà, invece di TCP, viene usato un protocollo alternativo, UDP, anch'esso appartenente all'Internet Protocol Suite. In genere il TCP viene utilizzato per quelle applicazioni che richiedono un servizio orientato alla connessione, come ad esempio la posta elettronica e il file sharing, mentre l'UDP prende sempre più piede per le applicazioni in tempo reale come l'on-line gaming o lo streaming audio e video; la differenza fra i due protocolli risiede nella maggiore affidabilità nel trasporto dei dati di TCP, che offre una serie di servizi appositamente pensati (gestione del flusso, della congestione, etc.), mentre UDP punta molto sulla velocità di trasmissione a scapito dell'affidabilità. Si tenga quindi sempre presente che la sigla TCP/IP è di utilizzo talmente comune da essere utilizzata, talvolta, anche quando esistono termini alternativi più corretti.
L'architettura adottata dalla rete Internet è il TCP/IP che si è quindi imposto come standard de facto proprio grazie alla diffusione e ai massicci investimenti legati a Internet.

## Descrizione

Tale suite può essere descritta per analogia con il modello OSI, che descrive i livelli (layer) della pila di protocolli. In una pila di protocolli ogni livello risolve una serie di problemi che riguardano la trasmissione di dati e fornisce un ben definito servizio ai livelli più alti. I livelli più alti sono logicamente più vicini all'utente e funzionano con dati più astratti, lasciando ai livelli più bassi il compito di tradurre i dati in forme mediante le quali possono essere fisicamente manipolati e trasmessi infine sul canale di comunicazione.
Il modello Internet è stato prodotto come una soluzione a un problema ingegneristico pratico in quanto si è trattato di aggiungere via via strati protocollari all'architettura di rete delle reti locali per ottenere un'interconnessione efficiente e affidabile. Il modello OSI, in un altro senso, invece è stato l'approccio più teorico-deduttivo ed è stato anche prodotto nel più vecchio modello di rete.
Per comprendere la struttura della suite TCP/IP, si utilizza una schematizzazione a livelli. Ogni livello esegue una specifica serie di operazioni; a ogni livello inferiore, ci si avvicina sempre più dall'interfaccia utente (quella con cui interagiamo) all'interfaccia di rete. Il messaggio trasmesso è modificato di conseguenza.
A differenza del modello OSI sono presenti quattro livelli invece di sette; partendo dall'alto:
* livello di applicazione;
* livello di trasporto;
* livello di rete;
* livello di accesso alla rete.
Essendo importante la distinzione fra livello di collegamento e livello fisico, è possibile utilizzare un modello ibrido che distingue i due strati e porta il numero di livelli a cinque.

### Livello di applicazione

Il primo livello è quello dell'applicazione: esso rappresenta l'interfaccia con l'utente e abilita, ad esempio, la consultazione di pagine web, stabilendo e gestendo le sessioni di lavoro dei processi client tra il nostro browser e il server web.
Il protocollo di trasporto TCP mette in coda i messaggi generati da client e server e li trasmette sotto forma di pacchetti su una connessione full-duplex; il buon fine della spedizione è attestato da una ricevuta di ritorno o riscontro. Anche questo è un collegamento virtuale tra le due applicazioni, i cui dettagli sono demandati al successivo livello, detto di trasporto.

### Livello di trasporto

Quindi, il livello di trasporto offre un servizio al livello delle applicazioni avvalendosi dei servizi del sottostante livello di rete (e in particolare dell'Internet Protocol). Per gestire molteplici processi attivi nel trasferimento dati sul medesimo nodo (o computer), cioè più sessioni di navigazione attive, il livello di trasporto (TCP o UDP) utilizza più numeri di porta. TCP nell'invio dei pacchetti usa il meccanismo della finestra scorrevole (sliding window). Una serie di pacchetti viene inviata da TCP seguendo delle regole ben precise:
* a ogni finestra di pacchetti spedita il trasmettitore fa partire un timeout;
* il ricevitore invia per ogni pacchetto ricevuto un segnale di riconoscimento (ACK) indicando il successivo pacchetto atteso;
* il trasmettitore considera quindi spediti tutti i pacchetti precedenti;
* se il timeout scade oppure sono ricevuti 3 ACK duplicati, TCP presume che si sia verificata la perdita di uno o più pacchetti e provvede a implementare opportune strategie di ritrasmissione dei dati e di controllo della congestione. Questa è una tecnica molto importante perché fornisce un canale di comunicazione affidabile. Inoltre TCP contiene meccanismi per gestire la congestione e il controllo di flusso.

### Livello di rete (o internet)

Internet Protocol (IP) è il protocollo di InterNetworking del modello DOD/DARPA (secondo il modello OSI è classificato nel livello di rete) che si occupa di gestire l'indirizzamento dei nodi e l'instradamento: a ciascun nodo viene infatti assegnato un indirizzo IP che lo identificherà in modo non ambiguo in rete; le funzionalità di instradamento, invece, consentono di selezionare il percorso migliore per veicolare un messaggio verso un dato nodo destinatario, noto che sia il suo indirizzo IP.

### Livello di accesso alla rete

Sotto il livello internet, il modello di riferimento TCP/IP specifica solo che ci deve essere un livello di accesso alla rete in grado di spedire i pacchetti IP. Nel modello OSI questo strato corrisponde ai primi due livelli: il livello di collegamento e il livello fisico.
Al livello di collegamento si decide come fare il trasferimento del messaggio per ogni singolo tratto del percorso: dal computer del web browser al primo router, dal primo router al secondo, dal secondo al terzo, e così via fino al computer del server. Questo è un collegamento virtuale tra due computer (o router) adiacenti. Anche in questo caso le interfacce di comunicazione dei nodi adiacenti saranno individuate per mezzo di un indirizzo univoco, usualmente denominato indirizzo MAC.
Il livello fisico trasmette il messaggio sul canale di comunicazione usualmente sotto forma di segnali elettrici o elettromagnetici, sebbene sia anche possibile utilizzare onde acustiche (come ad esempio nelle reti di sensori sottomarine).