Un protocollo è un metodo standard che permette la comunicazione tra i processi (eventualmente su terminali diversi), cioè un insieme di regole e procedure da rispettare per emettere ricevere dei dati su una rete. Ne esistono differenti secondo quello che ci si aspetta dalla comunicazione. Alcuni protocolli saranno ad esempio specializzati nello scambio di file (il FTP), altri potranno servire per gestire semplicemente lo stato della trasmissione e degli errori (è il caso del protocollo ICMP), ecc.
Su internet, i protocolli usati fanno parte di un insieme di protocolli collegati fra loro, che prende il nome di TCP/IP. Esso contiene, fra l'altro i seguenti protocolli: HTTP; FTP; ARP; ICMP; IP; TCP; UDP; SMTP; Telnet; NNTP.
I protocolli vengono generalmente classificati in due categoria secondo il livello di controllo dei dati che si desidera avere:
I protocolli orientati connessione, si tratta di protocolli che operano un controllo di trasmissione dei dati durante una comunicazione stabilita fra due terminali. In uno schema simile, il terminale ricevitore invia delle ricevute di ritorno durante la comunicazione, così il terminale emettitore ha la garanzia della validità dei dati che invia. I dati sono quindi inviati sotto forma di flusso. TCP è un protocollo orientato connessione;
I protocolli senza connessione, si tratta di una modalità di connessione in cui il terminale emettitore invia dei dati senza prevenire il terminale ricevitore, e quest'ultimo riceve i dati senza inviare degli avvisi di ricezione. I dati sono così inviati sotto forma di blocchi (datagrammi). UDP è un protocollo senza connessione.
Un protocollo definisce unicamente il modo in cui i terminali devono comunicare, cioè la forma e la sequenza dei dati da scambiare. Un protocollo non definisce invece il modo di programmare un software in maniera che sia compatibile con il protocollo. Viene così detta implementazione la traduzione di un protocollo in linguaggio informatico.
Le specifiche dei protocolli non sono mai esaustive, anzi succede spesso che le implementazioni siano oggetto di una certa interpretazione delle specifiche, cosa che porta talvolta a delle specifiche di alcune implementazioni o peggio a delle incompatibilità o falle di sicurezza.
Foto: © Pixabay.