Rete

Quali sono i passaggi in una stretta di mano TCP??

Quali sono i passaggi in una stretta di mano TCP??

TCP o Transmission Control Protocol è un protocollo di livello di trasporto standard che Internet utilizza per trasmettere dati. Request For  Comments  (RFC) 793 definisce il TCP come un protocollo affidabile e orientato alla connessione. Poiché è orientato alla connessione, è necessario stabilire un percorso o una connessione prima di trasmettere qualsiasi dato. TCP utilizza un meccanismo di handshake a tre vie per stabilire una connessione tra due dispositivi. In questa guida vedremo come funziona il meccanismo di handshake a tre vie. Vediamo prima i problemi con il modello di handshake a due vie.

Problemi con il modello di stretta di mano bidirezionale

Il modello di handshake bidirezionale non è riuscito a causa di un vecchio problema di pacchetti duplicati. Supponiamo che un vecchio pacchetto duplicato arrivi alla macchina server. Questo vecchio pacchetto è arrivato da una connessione precedentemente chiusa e contiene un numero di sequenza "z". Ad un certo punto durante la nuova connessione, il server sta accettando un pacchetto con un numero di sequenza "z". Quando riceve questo vecchio pacchetto con lo stesso numero di sequenza "z", accetta inconsapevolmente questo vecchio pacchetto e scarta il pacchetto effettivo dalla nuova connessione.

Nel caso sopra, se non è in corso una connessione tra client e server, l'arrivo di un vecchio pacchetto di richiesta di connessione duplicato causa ancora problemi. Se il server riceve un tale pacchetto, risponderà con un pacchetto SYN+ACK. Questo pacchetto verrà scartato dal client perché non intendeva connettersi. Ma il server entrerà nello stato di deadlock, in attesa che il client invii i dati.

Un altro problema è che se un host C invia una richiesta di connessione al server impersonando il client, il server risponderà con un ACK al client. Il client scarterà questo pacchetto 'ACK' e dirà al server di terminare la connessione. Durante questo intervallo di eventi, l'host C può lanciare un attacco di spoofing inviando molti pacchetti.

Il modello di handshake a tre vie in TCP/IP

Il modello di stretta di mano a tre vie è molto importante. Se non lo usiamo e iniziamo a inviare dati direttamente, l'applicazione ricevente potrebbe iniziare a ricevere pacchetti duplicati. L'attaccante può avere la possibilità di lanciare attacchi (come DDoS) tra una connessione. La procedura di handshake a tre vie viene avviata da una macchina e l'altra parte risponde ad essa. La seguente convenzione viene utilizzata per spiegare questa procedura:

“Se un sito riceve un pacchetto con il numero di sequenza 'x', risponderà con il numero ACK 'x+1'."

Riepiloghiamo i passaggi eseguiti nell'handshake a tre vie tra un computer client e un computer server:

Passo 1. Nella prima stretta di mano, il client invia un pacchetto di richiesta di connessione SYN con un numero di sequenza iniziale casuale ('x') al server.

Passo 2. Nella seconda stretta di mano, il server risponde con un pacchetto SYN che ha un numero di sequenza casuale ('y') e un pacchetto ACK con un numero di sequenza ('x+1') per confermare il numero di sequenza iniziale ('x') inviato dal cliente.

Passaggio 3. Nella terza stretta di mano, il client invierà un pacchetto ACK con un numero di sequenza ('y+1') al server per riconoscere il pacchetto SYN ('y') inviato dal server.

Passaggio 4. Entrambe le estremità sono ora sincronizzate e possono iniziare a trasmettere i dati in modo indipendente. [1]

La procedura di handshake a tre vie TCP è ancora valida se entrambe le parti avviano contemporaneamente il processo di inizializzazione. In tale situazione, ogni macchina, dopo aver inviato un pacchetto "SYN", riceverà un segmento "SYN" senza alcun riconoscimento. Se un vecchio pacchetto "SYN" duplicato arriva al destinatario, potrebbe sembrare al destinatario che sia in corso un processo di avvio della connessione allo stesso tempo. Possiamo usare i pacchetti "reset" per rimuovere questa ambiguità.

Terminazione della connessione TCP

Entrambi i lati possono terminare una connessione TCP. Per questo, qualsiasi lato può trasmettere un segmento TCP con il bit FIN impostato. Ciò significa che il lato mittente non ha più dati da inviare. Il lato ricevente riconoscerà questo pacchetto FIN inviando un pacchetto di riconoscimento. Questo chiuderà la connessione da un lato (lato mittente). Ora il destinatario utilizzerà gli stessi passaggi per terminare la connessione per suo conto. Questo chiuderà completamente la connessione.

Problemi con il modello di stretta di mano a tre vie

Nel caso in cui un ACK dal client al server venga perso o bloccato nella terza fase di handshake, il client non sarà a conoscenza di questa situazione. Il client presumerà che la connessione sia stata stabilita e inizierà a inviare i dati. Il server è ancora in attesa dell'ACK, che è già stato perso, quindi scarterà i dati ricevuti dal client. [2]

Conclusione

In questa guida, abbiamo appreso le procedure di connessione TCP utilizzando un handshake a tre vie. Abbiamo anche visto il problema dei pacchetti duplicati associati alla procedura di handshake a due vie e come è stato risolto con un modello di handshake a tre vie. Molti ricercatori hanno contribuito a vari documenti di ricerca per migliorare il modello di stretta di mano a tre vie e superare i problemi ad esso associati.

Riferimenti

  1. Hsu, F., Hwang, Y., Tsai, C., Cai, W., Lee, C., & Chang, K. (2016). TRAP: un server di handshake a tre vie per stabilire la connessione TCP. Scienze applicate, 6(11), 358. https://doi.org/10.3390/app6110358
  1. Qin-Min Ma, Shou-Yin Liu, Xiao-jun Wen. (2016). Protocollo di handshake a tre vie TCP basato sull'entanglement quantistico. Journal of Computers, 27 (3), 33-40, doi:10.3966/199115592016102703004
I 5 migliori mouse per computer ergonomici per Linux
L'uso prolungato del computer provoca dolore al polso o alle dita?? Soffri di rigidità articolare e devi continuamente stringerti la mano? Senti un do...
Come modificare le impostazioni del mouse e del touchpad utilizzando Xinput in Linux
La maggior parte delle distribuzioni Linux viene fornita con la libreria "libinput" per impostazione predefinita per gestire gli eventi di input su un...
Rimappa i pulsanti del mouse in modo diverso per software diversi con X-Mouse Button Control
Forse hai bisogno di uno strumento che possa cambiare il controllo del tuo mouse con ogni applicazione che utilizzi. In questo caso, puoi provare un'a...