Handshake TCP a tre vie (SYN, SYN-ACK,ACK)

โšก Riepilogo intelligente

L'handshake a tre vie TCP รจ il rituale di impostazione della connessione con cui inizia ogni sessione TCP. Un client e un server si scambiano pacchetti SYN, SYN-ACK e ACK per sincronizzare i numeri di sequenza e confermare che entrambe le parti siano pronte prima che venga inviato un singolo byte di dati dell'applicazione.

  • ๐Ÿ“จ Conosci i quattro tipi di messaggio: SYN avvia la connessione, ACK la conferma, SYN-ACK combina entrambi e FIN la termina.
  • ๐Ÿ” Segui questi tre passaggi: SYN client โ†’ SYN-ACK server โ†’ ACK client; la sessione viene stabilita solo dopo l'arrivo del terzo pacchetto.
  • ๐Ÿ”ข I numeri di sequenza sono importanti: Ciascuna parte sceglie un numero di sequenza iniziale; l'altra parte lo conferma aggiungendo uno, mantenendo cosรฌ ordinato il flusso di byte.
  • ๐Ÿšช Piano di demolizione: Dopo il trasferimento dei dati, TCP chiude la connessione con coppie FIN/ACK per rilasciare il socket su entrambe le estremitร .
  • ๐Ÿค– Utilizzare l'intelligenza artificiale per l'analisi dei pacchetti: Gli assistenti IA spiegano Wireshark cattura, segnala gli ACK mancanti ed evidenzia i SYN flood o le connessioni semiaperte.

Handshake a tre vie TCP

Cos'รจ l'handshake a tre vie TCP?

Migliori Handshake a tre vie TCP รจ la procedura che un client e un server utilizzano su un Rete TCP/IP per stabilire una connessione affidabile prima che vengano scambiati dati dell'applicazione. Come suggerisce il nome, si compone di tre fasi in cui entrambe le parti si scambiano pacchetti di sincronizzazione (SYN) e di conferma (ACK) e concordano sui numeri di sequenza iniziali che utilizzeranno.

La fase di handshake รจ progettata in modo che entrambi gli endpoint possano avviare, negoziare e chiudere i socket TCP in modo simmetrico. Una volta completata la fase di handshake, la connessione diventa full-duplex: entrambe le parti possono inviare e ricevere in parallelo finchรฉ una delle due non invia un segnale FIN per chiudere la sessione.

Tipi di messaggi TCP

Quattro bandiere di controllo compaiono ripetutamente durante la fase di handshake e disconnessione.

Messaggio Descrizione
SYN Avvia una connessione e sincronizza i numeri di sequenza tra i dispositivi.
ACK Conferma all'altra parte che il segmento precedente รจ stato ricevuto.
SIN-ACK Un messaggio combinato: un SYN dal dispositivo locale piรน un ACK del SYN precedente del peer.
END Utilizzato per terminare una connessione in modo corretto.

Processo di handshake a tre vie TCP

Il traffico TCP inizia sempre con un handshake a tre vie. Il client avvia la conversazione richiedendo una sessione al server.

Diagramma dell'handshake a tre vie TCP

Diagramma di una stretta di mano a tre vie.

  • Passo 1 โ€” SIN: Il client invia un segmento con il flag SYN impostato. In questo modo comunica al server "Voglio iniziare la comunicazione" e propone un numero di sequenza iniziale.
  • Passaggio 2 โ€” SYN-ACK: Il server risponde con un segmento in cui sono impostati entrambi i flag SYN e ACK. L'ACK conferma la ricezione del SYN da parte del client, mentre il SYN propone al server il proprio numero di sequenza iniziale.
  • Passaggio 3 โ€” ACK: Il client conferma il SYN-ACK del server con un ACK finale. La connessione รจ ora stabilita ed entrambe le parti possono iniziare transmitdati dell'applicazione ting.

Esempio del mondo reale

Esempio pratico di handshake a tre vie TCP

Ecco un esempio pratico con numeri di sequenza concreti.

  • L'host X avvia la connessione inviando un pacchetto TCP SYN al server. Il pacchetto contiene un numero di sequenza iniziale casuale, ad esempio, 4321 โ€” questo segna l'inizio del flusso di byte che l'Host X invierร .
  • Il server riceve il SYN e risponde con un SYN-ACK. Il numero ACK รจ il numero di sequenza dell'Host X incrementato di 1 (4322), e il SYN propone il numero di sequenza iniziale del server.
  • L'host X risponde con un ACK finale il cui numero di riconoscimento รจ il numero di sequenza del server incrementato di 1.

Una volta completato lo scambio di dati, TCP chiude la connessione con una sequenza FIN/ACK a quattro vie in modo che entrambi gli endpoint possano rilasciare il socket in modo pulito.

Perchรฉ TCP necessita di un handshake a tre vie

La stretta di mano non รจ solo una formalitร : risolve tre problemi concreti legati al trasporto affidabile di flussi di byte:

  • Sincronizzazione del numero di sequenza: Entrambi i peer apprendono il numero di sequenza iniziale dell'altro lato, che รจ ciรฒ che TCP utilizza per rilevare segmenti persi o fuori sequenza.
  • Accordo sullo stato della connessione: il terzo ACK conferma che il SYN-ACK del server รจ arrivato, quindi nessuna delle due parti inizia a inviare dati finchรฉ entrambe non sono nella STABILITO stato.
  • Protezione contro i pacchetti duplicati: Numeri di sequenza iniziali casuali e stati di handshake temporizzati impediscono che segmenti obsoleti provenienti da una sessione precedente vengano accettati per errore.

Problemi comuni con l'handshake TCP

La stretta di mano รจ robusta, ma puรฒ interrompersi in modi identificabili. Gli ingegneri di rete in genere riscontrano uno dei seguenti problemi:

  • Attacchi di tipo SYN flood: Un client malevolo invia migliaia di SYN senza rispondere ai SYN-ACK, saturando la tabella delle connessioni del server. I cookie SYN rappresentano la difesa standard.
  • Connessioni semiaperte: Quando si perde il terzo ACK, la connessione rimane semiaperta e viene infine chiusa da un timeout.
  • Firewall o NAT interrompono il flusso di dati durante il trasferimento: I dispositivi intermedi con stato che perdono lo stato possono scartare i pacchetti SYN-ACK e costringere il client a ritentare la connessione.
  • RST ripristina: Se il server non รจ in ascolto sulla porta richiesta, risponde a un SYN con un RST, che chiude immediatamente il tentativo.

DOMANDE FREQUENTI

Due messaggi non bastano a dimostrare che entrambe le parti abbiano concordato i numeri di sequenza iniziali e siano pronte a inviare i dati. Il terzo ACK conferma la ricezione del SYN-ACK del server, garantendo che entrambi gli endpoint raggiungano lo stato ESTABLISHED prima che i dati vengano trasmessi.

SYN รจ un singolo flag che avvia la conversazione e propone un numero di sequenza iniziale. SYN-ACK combina un SYN con una conferma del precedente SYN del peer, completando la sincronizzazione in un unico pacchetto.

Un attacco SYN flood sovraccarica un server inviando numerosi pacchetti SYN senza completare l'handshake. Le connessioni semiaperte riempiono la coda di backlog e bloccano gli utenti legittimi. I cookie SYN rappresentano la soluzione standard per mitigarne l'attacco.

Il protocollo TCP chiude una connessione con un handshake a quattro vie costituito da scambi di FIN e ACK. Ciascuna direzione viene chiusa in modo indipendente, consentendo a una delle due parti di terminare l'invio dei dati anche dopo che l'altra ha chiuso la propria metร .

Il numero di sequenza iniziale รจ un valore a 32 bit scelto casualmente da ciascun endpoint per il proprio flusso di byte. Esso funge da inizializzatrice per il contatore utilizzato per rilevare segmenti mancanti o duplicati e per difendersi dai pacchetti contraffatti.

No. UDP รจ senza connessione e invia datagrammi senza alcun handshake. Questo lo rende piรน veloce e leggero di TCP, ma le applicazioni devono gestire autonomamente l'affidabilitร , l'ordinamento e il controllo della congestione.

Gli assistenti IA annotano le acquisizioni di pacchetti, classificano i retransmits e RST e rilevano i flood SYN. โ€‹โ€‹Traducono Wireshark I filtri traducono le informazioni in un linguaggio semplice e suggeriscono il passaggio diagnostico successivo per i problemi di connettivitร .

Sรฌ. Gli assistenti di programmazione AI trasformano una richiesta in linguaggio semplice in un Python Scapy oppure uno script netcat che attiva e ispeziona l'handshake a tre vie, quindi spiega ogni riga in modo che gli ingegneri possano esaminarla prima di eseguirla.

Riassumi questo post con: