Un three-way handshake è usato principalmente per creare una connessione TCP socket per trasmettere dati in modo affidabile tra dispositivi. Per esempio, supporta la comunicazione tra un browser web sul lato client e un server ogni volta che un utente naviga su Internet.
Non appena un client richiede una sessione di comunicazione con il server, un processo di handshake a tre vie avvia il traffico TCP seguendo tre passi.
Le tre fasi di una stretta di mano a tre vie
Fase 1: viene stabilita una connessione tra server e client
Prima di tutto, viene stabilita una connessione tra server e client, quindi il server di destinazione deve avere porte aperte che possano accettare e iniziare nuove connessioni. Il nodo client invia un pacchetto dati SYN (Synchronize Sequence Number) su una rete IP a un server sulla stessa rete o su una rete esterna.
Questo pacchetto SYN è un numero di sequenza casuale che il client vuole usare per la comunicazione (per esempio, X). L’obiettivo di questo pacchetto è chiedere/informare se il server è aperto per nuove connessioni.
Step 2: Il server riceve il pacchetto SYN dal nodo client
Quando il server riceve il pacchetto SYN dal nodo client, risponde e restituisce una ricevuta di conferma – il pacchetto ACK (Acknowledgement Sequence Number) o pacchetto SYN/ACK. Questo pacchetto include due numeri di sequenza.
Il primo è quello di ACK, che è impostato dal server a uno in più del numero di sequenza che ha ricevuto dal client (per esempio X+1).
Il secondo è il SYN inviato dal server, che è un altro numero di sequenza casuale (per esempio, Y).
Questa sequenza indica che il server ha riconosciuto correttamente il pacchetto del client, e che sta inviando anche il proprio per essere riconosciuto.
Step 3: Il nodo client riceve il SYN/ACK dal server e risponde con un pacchetto ACK
Il nodo client riceve il SYN/ACK dal server e risponde con un pacchetto ACK. Ancora una volta, ogni parte deve riconoscere il numero di sequenza ricevuto incrementandolo di uno.
Ora tocca al client riconoscere il pacchetto del server aggiungendo uno al numero di sequenza (in questo caso, Y+1), e reinviarlo al server.
Al completamento di questo processo, la connessione è creata e l’host e il server possono comunicare.
Tutti questi passi sono necessari per verificare i numeri di serie originati da entrambe le parti, garantendo la stabilità della connessione.
Siccome entrambi gli host devono riconoscere i parametri di connessione dell’altra parte, un segmento mancante o fuori ordine può essere rapidamente individuato prima che il processo di trasferimento dati effettivo sia iniziato.
0 commenti