Il protocollo TCP/IP è un argomento legato alla questione della nascita del web. Secondo alcuni la Rete è un'invenzione del Dipartimento della Difesa Statunitense, o meglio della sua agenzia incaricata dello sviluppo di nuove tecnologie militari (DARPA). Altri affermano che internet è nata al CERN di Ginevra, su esigenza della comunità di scienziati che avevano bisogno di scambiare dati tra laboratori fisicamente distanti l'uno dall'altro. Come al solito la verità è nel mezzo, e hanno ragione un po' tutti: la questione sarà più chiara una volta che avremo compreso lo scopo del protocollo TCP/IP.

La trasmissione dei dati su internet può essere suddivisa in livelli, a seconda di quando vogliamo “zoomare” e guardare in dettaglio. Ad alto livello ci sono computer (client e server) che comunicano tra loro a livello di applicazioni, basandosi soprattutto sul protocollo HTTP. Il protocollo HTTP si occupa di decidere dove e come viaggiare, e possiamo paragonarlo alle persone e merci che viaggiano sulle autostrade o ferrovie. Se persone e merci corrispondono al protocollo HTTP, a cosa corrisponde il mezzo di trasporto scelto dal viaggiatore? Anche la trasmissione del protocollo HTTP avviene attraverso un mezzo di trasporto, che si occupa “fisicamente” di trasportare le informazioni da un posto all'altro. Nel caso di internet il protocollo più usato a questo scopo è il TCP/IP, ovvero il Trasmission Control Protocol e Internet Protocol.

L'analogia con i mezzi di trasporto umani non finisce qui. Autovetture e treni hanno bisogno di una infrastruttura su cui viaggiare: le macchine viaggiano su strada, i treni sui binari. Allo stesso modo la trasmissione dei dati via TCP/IP necessita di un'infrastruttura di rete sulla quale poter viaggiare, come ad esempio la tecnologia Ethernet. Riassumendo:

LIVELLO FUNZIONE ESEMPIO ANALOGIA
Alto Applicazione HTTP Uomini, animali o merci
Medio Trasporto TCP/IP Auto, bus o treni
Basso Rete Ethernet Strade o ferrovie

La tabella è un'esemplificazione, ma introduce bene i concetti che ci interessano. Nella realtà è possibile identificare più di tre livelli: Il modello ISO/OSI ad esempio considera una pila di protocolli suddivisa in sette strati, ma questo livello di dettaglio non ci serve al momento. Vediamo invece come l'argomento ci permette di risolvere la disputa (apparente) sulle origini del web. E' vero, l'agenzia americana DARPA ha inventato il protocollo TCP/IP durante gli anni settanta, gettando le basi per la realizzazione di reti informatiche su scala mondiale. Ed è anche vero che verso la fine degli anni ottanta il CERN ha inventato il protocollo HTTP per scambiare dati ad alto livello, basandosi sull'ormai consolidato TCP/IP. Chi è venuto prima, l'uovo o la gallina? Senza un protocollo di trasporto non potremmo trasmettere pagine web tra un computer e l'altro, ma senza l'invenzione dell'HTTP i computer sarebbero in grado solo di scambiarsi qualche messaggio, via chat o via mail, e non sarebbe possibile navigare un sito web o leggere questo articolo.

E' importante sottolineare che l'analogia appena vista è solamente indicativa, perché tra il funzionamento del web e il nostro modo di viaggiare esiste una sostanziale differenza: nel mondo reale sono persone e merci a viaggiare fisicamente, mentre ferrovie e strade rimangono ferme. Sul web avviene il contrario: a viaggiare fisicamente sono i dati dei livelli inferiori, ovvero i pacchetti di rete scambiati al livello più basso (Ethernet, WiFi, PPP ecc.). Sappiamo bene che sui cavi (o fibre ottiche) viaggiano segnali elettrici, e non codici alfa-numerici. I livelli superiori, come ad esempio l'HTTP, sono quindi livelli logici, composti da “atomi” la cui natura fisica risiede nei livelli di rete sottostanti (per la cronaca: livello fisico e livello di collegamento).

Se la distinzione tra entità logiche e fisiche non fosse chiara, possiamo ricorrere ad un'altra analogia, questa volta considerando la pagina stampata di un libro o rivista. A livello fisico esistono solo la carta, l'inchiostro e probabilmente il fissante che tiene tutto assieme. Siamo noi esseri umani a dare significato, con una certa “logica”, a quell'insieme di puntini neri, creando strutture di caratteri, parole e frasi compiute. Avviene lo stesso sul web: al livello più basso abbiamo segnali elettrici, che i livelli superiori interpretano prima come byte, poi come caratteri, e infine come pagine HTML, man mano che si sale di livello.

Detto questo, possiamo enumerare le proprietà più importanti del protocollo TCP/IP

  • Il protocollo TCP/IP è l'unione di due tecnologie diverse. Al livello rete (inferiore) abbiamo gli indirizzi IP, che costituiscono la rete vera e propria. Al livello trasporto (superiore) abbiamo il TCP, che si occupa di controllare e ottimizzare la trasmissione dei pacchetti sulla rete sottostante
  • Orientamento alla connessione: prima di inviare qualsiasi pacchetto, mittente e destinatario devono stabilire una connessione. Questo non avviene, ad esempio, nel protocollo UDP
  • Frazionamento di un messaggio in pacchetti, detti segmenti TCP. Il protocollo si occupa di garantire che i segmenti arrivino correttamente e nel giusto ordine
  • Controllo di errore e controllo della congestione: il TCP/IP è abbastanza intelligente da scovare eventuali errori di trasmissione (per mezzo di un checksum associato a ciascun singolo pacchetto) e risolvere eventuali “ingorghi stradali” provocati da un traffico superiore alla capacità di rete
  • Bidirezionalità e multiplazione. E' possibile trasmettere dati in entrambe le direzioni contemporaneamente (trasmissione Full-Duplex), e aprire più connessione simultaneamente tra due host (associando un numero di porta ad ogni connessione)

Non è necessario comprendere a fondo tutte caratteristiche del TCP/IP per lavorare sul web. E' però utile avere almeno una vaga idea dell'argomento, specialmente se dobbiamo configurare un web server, gestire un sistema in hosting o una VPS, perché il comportamento di un server dipende spesso dagli strati più inferiori della rete. Basta guardare un url del tipo

http://localhost:8080

per capire che, da qualche parte, c'è qualcuno che si occupa di smistare la trasmissione dei pacchetti sulla porta giusta (in questo caso la 8080). Quel "qualcuno" è proprio il protocollo TCP/IP, che sfrutta il meccanismo delle porte (simili alle corsie autostradali) per consentire ai livelli superiori (in questo caso l'HTTP) di viaggiare simultaneamente sullo stesso canale di trasmissione.