Lezione 3 di 4 · 7 min
L’handshake TCP e la vita di una connessione
Come due computer concordano di parlare prima che uno dei due invii dati reali, come terminano la conversazione, e cosa vede davvero un firewall che osserva nel mezzo.
Prima che il tuo Mac invii un solo byte della richiesta di una pagina web, ha già scambiato tre brevi messaggi con il server. Quello scambio, l’handshake TCP a tre vie, è ciò che trasforma le promesse di affidabilità di TCP dalla lezione precedente in una connessione reale e tracciabile tra due macchine.
Tre messaggi prima della prima parola
RFC 9293, l’attuale specifica TCP, descrive il processo come uno scambio sincronizzato: “la sincronizzazione richiede che ciascuna parte invii il proprio numero di sequenza iniziale e ne riceva una conferma tramite riconoscimento dal peer TCP remoto.”
- SYN. Il dispositivo che apre la connessione invia un segmento con il flag SYN impostato, portando un numero di sequenza iniziale.
- SYN-ACK. L’altra parte risponde con il proprio SYN, più un riconoscimento del primo numero.
- ACK. Il primo dispositivo riconosce quella risposta. RFC 9293 nota che “poiché i passaggi 2 e 3 possono essere combinati in un singolo messaggio, questo si chiama handshake a tre vie (o a tre messaggi).” Una volta completato, entrambe le parti considerano la connessione ESTABLISHED e iniziano a inviare dati reali.
Il Centro di apprendimento di Cloudflare offre una versione in linguaggio semplice della stessa idea, usando un’email come esempio: “prima, la sorgente invia un pacchetto SYN di ‘richiesta iniziale’ al server di destinazione per avviare il dialogo. Poi il server di destinazione invia un pacchetto SYN-ACK per accettare il processo. Infine, la sorgente invia un pacchetto ACK alla destinazione per confermare il processo, dopo di che il contenuto del messaggio può essere inviato.”
Terminare una connessione in modo pulito
La chiusura è più deliberata dell’apertura. RFC 9293 spiega che “la normale sequenza di chiusura TCP consegna in modo affidabile i dati in buffer in entrambe le direzioni” prima che la connessione termini: ciascuna parte invia un segmento FIN una volta che non ha più dati da inviare, l’altra parte lo riconosce, e solo una volta che entrambe le direzioni hanno finito la connessione si chiude completamente. Segue un breve periodo di attesa (TIME-WAIT), così che un pacchetto ritardato e vagante della vecchia connessione non possa essere scambiato per parte di una nuova.
Cosa vede un firewall nel mezzo
Un firewall con stato, il tipo integrato nella maggior parte dei router e in macOS stesso, non ha bisogno di ispezionare ogni pacchetto per prendere una decisione. La spiegazione di Cloudflare sui firewall lo descrive così: “salva le informazioni relative alle connessioni aperte e usa queste informazioni per analizzare il traffico in entrata e in uscita, invece di ispezionare ogni pacchetto.” Nella pratica, questo significa che osserva il SYN che apre una connessione, ricorda che questa app ha chiesto una risposta, e poi lascia rientrare silenziosamente il SYN-ACK corrispondente; una risposta che non corrisponde a nessun SYN in uscita viene scartata. È anche così che un firewall può distinguere una risposta normale da un tentativo di connessione non richiesto che arriva dal nulla, il che è la base per bloccare il traffico in entrata indesiderato.
Nulla di questo scambio è cifrato da TCP stesso; SYN, SYN-ACK e ACK sono visibili in forma semplice a chiunque osservi il percorso di rete, incluso il tuo router Wi-Fi. Cosa sia nascosto o meno dipende dal livello sopra TCP, come TLS per un sito HTTPS, trattato separatamente nel corso su come funziona internet.
Da ricordare
- Le connessioni TCP si aprono con un handshake a tre vie: SYN, poi SYN-ACK, poi ACK, secondo RFC 9293.
- Solo dopo che l’handshake si completa le due parti iniziano a scambiare dati reali.
- Chiudere una connessione è uno scambio bidirezionale di segmenti FIN così che i dati in buffer vengano consegnati prima che la connessione termini.
- Un firewall con stato traccia quali SYN sono usciti così può riconoscere e consentire le risposte corrispondenti, e scartare quelle non richieste.
- L’handshake stesso non è cifrato; è visibile a chiunque sul percorso di rete.
Mettiti alla prova
1. Qual è l’ordine corretto dell’handshake TCP a tre vie?
- ACK, SYN, SYN-ACK
- SYN, SYN-ACK, ACK — Esatto.
- SYN-ACK, SYN, ACK
- FIN, SYN, ACK
RFC 9293 descrive la parte che si connette inviando prima SYN, l’altra parte rispondendo con SYN-ACK, e la parte che si connette confermando con ACK.
2. Quando iniziano a fluire i dati reali dell’applicazione su una connessione TCP?
- Prima che venga inviato il SYN
- Solo dopo che l’handshake a tre vie si completa — Esatto.
- Durante il passaggio SYN-ACK
- I dati fluiscono continuamente senza handshake
L’handshake esiste per sincronizzare i numeri di sequenza prima che una delle due parti si fidi abbastanza della connessione da inviare dati reali.
3. Come decide un firewall con stato di consentire un pacchetto di risposta in entrata?
- Consente tutti i pacchetti in entrata per impostazione predefinita
- Controlla se il pacchetto corrisponde a una connessione che questo dispositivo ha aperto, ricordata dal precedente SYN in uscita — Esatto.
- Ispeziona il contenuto del pacchetto alla ricerca di parole chiave
- Guarda solo la porta di destinazione, mai lo stato della connessione
Cloudflare descrive un firewall con stato come uno che “salva le informazioni relative alle connessioni aperte” per riconoscere le risposte legittime invece di ispezionare ogni pacchetto da zero.
4. L’handshake TCP stesso è cifrato?
- Sì, sempre
- No, è semplice e visibile a chiunque sul percorso di rete — Esatto.
- Solo il SYN è cifrato
- Solo sulle connessioni HTTPS
TCP fornisce ordine e affidabilità, non riservatezza. La cifratura, quando presente, proviene da un livello sopra TCP come TLS.
Mettilo in pratica con FireAI
Metti in pratica questa lezione sul tuo Mac.
- Scopri dove un’app invia dati, sulla Mappa del mondo — Vedi esattamente con quale azienda e paese comunica silenziosamente un’app.
- Regole: app, sito, dominio, IP o un intervallo, per sempre o fino al riavvio — Scrivi una regola precisa quanto un solo indirizzo o ampia quanto un intero dominio.
- Ispezione approfondita, senza decifrare nulla — Ottieni un dettaglio reale su una connessione sicura senza che FireAI legga mai cosa c’è dentro.
Fonti
- RFC 9293: Transmission Control Protocol (TCP)
- Cloudflare Learning: What is TCP/IP?
- Cloudflare Learning: What is a Firewall?
Mettilo in pratica sul tuo Mac
Prova tutte le funzioni gratis per 17 giorni, senza carta.