Quindicesima puntata del nostro viaggio
Con questa tappa concludiamo la sezione dedicata a discutere i principali elementi dello scenario di elaborazioni realizzate mediante la partecipazione di più agenti, ormai attualissimo a causa dell’ubiquità di Internet, e denominato computazione distribuita. Dopo il post introduttivo a questa tematica, abbiamo affrontato i tre concetti fondamentali della cooperazione, sincronizzazione e consenso. Questo post di chiusura affronta un aspetto più tecnologico ma altrettanto rilevante, quello dei protocolli di comunicazione.
Sotto questo nome sono comprese tutte le regole che definiscono come due o più esecutori si coordinano per scambiare informazioni. Non essendo persone in carne e ossa che, se parlano uno stesso linguaggio e fanno parte di una stessa comunità sociale, hanno appreso nel corso della loro esperienza di vita le regole per interagire con gli altri, devono essere istruiti fino all’ultimo dettaglio.
In un certo senso, i protocolli di comunicazione sono come i vari galatei di conversazione che vi sono nei diversi ambienti sociali. Nel mondo delle corti reali, assai diffuse a livello europeo nel XVIII secolo, era previsto, ad esempio, che fossero il re o la regina a rivolgere per primi la parola a chi veniva presentato. Durante la conversazione bisognava usare i termini appropriati e, nel congedarsi, non bisognava girare le spalle. Quando i nostri figli sono piccoli gli insegniamo a salutare quando si entra in un ambiente dove vi sono altre persone e a non interrompere gli adulti quando parlano (o, almeno, a farlo con modi opportuni).
I protocolli di comunicazione degli automi dell’informatica svolgono concettualmente la stessa funzione e hanno avuto un ruolo fondamentale fin dagli albori di questa tecnologia.
Sono sostanzialmente fatti di due parti. La prima è un insieme di regole che specificano la successione dei passi di interazione. Un esempio banale della vita normale: prima si saluta, poi si chiede come va, poi si fa una specifica domanda, poi si ringrazia, infine si saluta. La seconda è un insieme di regole che definiscono la struttura delle comunicazioni scambiate. Continuando l’esempio di prima, si può specificare che il saluto sia abbreviato e costituito solo dal termine di saluto (“ciao” oppure “salve”) o strutturato con “termine di saluto” (p.es: buongiorno) seguito dal “titolo” (p.es. dottoressa) seguito dal “nome completo” (p.es.: Paola Rossi).
Tra i protocolli moderni più famosi usati nell’informatica, di cui anche molti non informatici hanno sentito parlare, ci sono:
– HypertText Transfer Protocol (= protocollo per il trasferimento di ipertesti – HTTP) che è alla base dello scambio di pagine web;
– Transmission Control Protocol (= protocollo per il controllo della trasmissione – TCP) che è uno dei protocolli fondamentali per la gestione delle comunicazioni su Internet;
– Internet Protocol (= protocollo di Internet – IP) che è il protocollo che consente alle diverse reti di comunicazione di scambiarsi dati per realizzare l’Internet che conosciamo;
– File Transfer Protocol (= protocollo per il trasferimento di file – FTP) che costituisce il protocollo di base per trasferire file generici da una macchina all’altra sulla rete.
Ad esempio il protocollo HTTP prevede, come regole che specificano l’interazione, che chi voglia ricevere una pagina web invii una richiesta alla macchina che la possiede (trascurando i dettagli di come questa richiesta venga inviata) e che tale macchina risponda con la pagina o un messaggio di errore. Per quanto riguarda la struttura delle comunicazioni scambiate, sia la richiesta che la risposta hanno un formato testuale, cioè sono rappresentate mediante la codifica ASCII (ne abbiamo parlato nel post sulla rappresentazione dei dati).
La richiesta deve avere, semplificando, la seguente struttura:
– un metodo di richiesta (scelto tra un elenco predefinito),
– un indirizzo della pagina (il termine preciso è “identificatore univoco di risorsa”, in inglese uniform resource identifier = URI),
– l’indicatore della versione del protocollo,
– eventuali informazioni aggiuntive (sono gli header di richiesta = intestazioni della richiesta),
– un corpo del messaggio (che può essere vuoto).
La risposta deve avere il seguente formato:
– una riga di stato, che contiene un codice a 3 cifre che caratterizza il successo della risposta o una condizione di errore (il famoso “codice 404”, che quasi tutti avranno incontrato almeno una volta nella loro esperienza di navigazione su Internet e che corrisponde alla situazione di “pagina non trovata”, descrive appunto una condizione di errore) o situazioni intermedie che qui non trattiamo,
– informazioni aggiuntive relative al tipo di macchina che risponde e al tipo di contenuto restituito (sono gli header di risposta = intestazioni della risposta),
– il contenuto della risposta (ovviamente in caso di successo).
Con il prossimo post apriremo la trattazione di un nuovo tema, quello della virtualizzazione, che è sempre state presente nell’informatica fin dai suoi albori, ma che recentemente ha conosciuto, sotto la forma della tecnologia del cloud, un’esplosione senza precedenti.
( I post di questa serie sono basati sul libro dell’Autore La rivoluzione informatica: conoscenza, consapevolezza e potere nella società digitale, al quale si rimanda per approfondimenti. I lettori interessati al tema possono anche dialogare con l’Autore, su questo blog interdisciplinare, su cui i post vengono ripubblicati a partire dal terzo giorno successivo alla pubblicazione in questa sede. )