Un protocollo di comunicazione è un insieme di regole formalmente descritte che definiscono le modalità di comunicazione tra una o più entità. Queste regole sono definite mediante specifici protocolli, dalle tipologie più varie e ciascuno con precisi compiti/finalità, a seconda delle entità interessate e del mezzo di comunicazione. Se le due entità sono remote, si parla di protocollo di rete.
I protocolli di comunicazione attualmente esistenti sono :
- HTTP e HTTPS
- TCP
- UDP
- IP
Ma in questo caso andremo a specificare solo UDP e TCP
Il protocollo TCP (Transmission Control Protocol) è un protocollo con modalità orientata alla connessione ed affidabile, mentre UDP (User Datagram Protocol) è un protocollo non orientato alla connessione e non affidabile.
Entrambi sono concernenti lo strato di trasporto, corrispondono al livello quattro della pila ISO/OSI, cioè la pila di protocolli attraverso i quali è ridotta la complessità implementativa di un sistema di comunicazione.
E’ costituita da strati (o livelli) che racchiudono uno o più aspetti fra loro correlati della comunicazione fra nodi di una rete. Gli strati sono in totale sette e vanno dal livello fisico sino al livello delle applicazioni attraverso cui, si realizza la comunicazione di più alto livello.
- Livello applicazione
- Livello presentazione
- Livello sessione
- Livello trasporto
- Livello rete
- Livello collegamento
- Livello fisico
- Leggi anche Modello ISO/OSI
In questo caso il livello che ci interessa è il livello di trasporto, esso ha il compito di raccogliere i dati provenienti da applicazioni diverse e trasmetterli attraverso un unico strato di rete (multiplexing), sia ricevere i dati dallo strato di rete e smistarli correttamente verso le diverse applicazioni (demultiplexing).
Consiste anche in un numero di porta identificativo, che determina univocamente un particolare processo applicativo in esecuzione su un host. Inoltre, il numero di porta su cui si inviano le richieste al server, è scelto secondo una convenzione, tramite la quale tutti i server di un certo tipo, devono utilizzare un numero di porta definito a priori tra le cosiddette well-known port.
Il processo Server si predispone a ricevere una richiesta eseguendo un’apertura passiva che si attua:
- Nel protocollo UDP, aprendo un socket di comunicazione ove si mette in ascolto sulla relativa porta, in attesa dell’arrivo di una richiesta;
- Nel protocollo TCP, aprendo un socket di comunicazione ove si mette in ascolto sulla relativa porta, in attesa dell’arrivo di una richiesta di apertura della connessione.
Invece, il processo Client quando è interessato ad un determinato servizio, esegue un’apertura attiva, tentando di collegarsi al processo Server che offre tale servizio:
- Nel protocollo UDP, aprendo un socket di comunicazione ed inviando direttamente la richiesta al server;
- Nel protocollo TCP, aprendo un socket di comunicazione ed inviando una richiesta di apertura della connessione.
Il client, deve conoscere l’indirizzo IP e il numero di porta usati dal server per potersi collegare al socket (identifica l’interfaccia (software) attraverso cui il livello di trasporto scambia dati con le applicazioni) di destinazione.
Altresì, viene detto indirizzo del socket, un numero di porta concatenato ad un indirizzo IP (es. 137.204.57.85:80).
Inoltre, nel trasporto UDP basta conoscere l’indirizzo del socket di destinazione, mentre l’indirizzo di quello sorgente serve per poter confezionare eventuali risposte.
Invece, nel trasporto TCP sono necessari entrambi gli indirizzi (sorgente-destinatario) componenti il socket, che identificano univocamente le connessioni attive. Infine, ritornando al protocollo UDP, esso è un protocollo non affidabile di tipo connectionless, concepito per tutte quelle applicazioni, che trasmettono pacchetti singoli, senza necessità di riscontro.