TCP
Il Transmission Control Protocol TCP è uno dei protocolli fondamentali della suite di protocolli Internet TCP/IP. Viene utilizzato per garantire la trasmissione affidabile dei dati tra due sistemi in
🔹 Introduzione a TCP
Il Transmission Control Protocol (TCP) è uno dei protocolli fondamentali della suite di protocolli Internet (TCP/IP). Viene utilizzato per garantire la trasmissione affidabile dei dati tra due sistemi in una rete.
TCP è un protocollo di livello di trasporto (Layer 4 del modello OSI) e assicura che i pacchetti di dati vengano ricevuti in ordine, senza errori, e senza duplicazioni.
Caratteristiche principali del TCP:
- Affidabilità: Garantisce che i dati vengano ricevuti correttamente grazie all'uso di meccanismi di controllo degli errori e di conferma.
- Controllo del flusso: Evita il sovraccarico di rete e degli host limitando la velocità di trasmissione.
- Controllo della congestione: Adatta dinamicamente la velocità di trasmissione in caso di congestione della rete.
- Ordinamento: Assicura che i pacchetti arrivino nell'ordine corretto.
- Full-Duplex: La comunicazione avviene in entrambe le direzioni simultaneamente.
🔹 Struttura dell'Header TCP
L'header TCP è composto da 20-60 byte e contiene i campi necessari per gestire la connessione e il flusso dei dati.
| Campo | Lunghezza (in byte) | Descrizione |
| Source Port | 2 | Porta di origine del pacchetto TCP. |
| Destination Port | 2 | Porta di destinazione del pacchetto TCP. |
| Sequence Number | 4 | Numero di sequenza dei dati, usato per il controllo dell'ordine. |
| Acknowledgment Number | 4 | Numero di conferma, indica il prossimo byte che il ricevente si aspetta. |
| Data Offset | 1 | Lunghezza dell'header TCP in termini di parole da 32 bit. |
| Reserved | 1 | Spazio riservato, solitamente è 0. |
| Flags | 1 | Flags di controllo (SYN, ACK, RST, FIN, PSH, URG). |
| Window Size | 2 | Dimensione della finestra di ricezione. |
| Checksum | 2 | Somma di controllo per rilevare errori nei dati. |
| Urgent Pointer | 2 | Se il flag URG è attivo, indica la posizione dei dati urgenti. |
| Options | Variabile | Opzioni aggiuntive per TCP, come Maximum Segment Size (MSS). |
| Padding | Variabile | Riempimento per allineare l'header a 32 bit. |
🔹 Meccanismo di Connessione TCP
TCP utilizza un processo di connessione orientata che implica l'inizializzazione e la chiusura della connessione tra i dispositivi.
3-Way Handshake
1. SYN: Il client invia un pacchetto con il flag SYN per iniziare una connessione. 2. SYN + ACK: Il server risponde con un pacchetto contenente i flag SYN e ACK, confermando la richiesta di connessione. 3. ACK: Il client invia un pacchetto finale con il flag ACK, confermando l'avvenuta connessione.
Chiusura della Connessione (4-Way Handshake)
1. FIN: La parte che vuole chiudere la connessione invia un pacchetto con il flag FIN. 2. ACK: La parte ricevente conferma la ricezione del pacchetto FIN. 3. FIN: La parte ricevente invia un pacchetto FIN per chiudere completamente la connessione. 4. ACK: La parte iniziale conferma la ricezione del secondo pacchetto FIN.
🔹 Controllo Flusso e Congestione
Il controllo del flusso e della congestione sono due aspetti chiave di TCP, progettati per ottimizzare l'affidabilità della comunicazione e la gestione delle risorse di rete.
Controllo del Flusso
Il controllo del flusso viene realizzato tramite il campo Window Size nell'header TCP. Indica al mittente la quantità di dati che può inviare prima di ricevere una conferma dal destinatario. Ciò aiuta a evitare il sovraccarico di memoria nei buffer del destinatario.
Controllo della Congestione
TCP implementa vari algoritmi per gestire la congestione della rete, tra cui:
- Slow Start: Inizia con una piccola finestra di congestione e la raddoppia ad ogni ciclo di conferma, fino a raggiungere una dimensione critica.
- Congestion Avoidance: Dopo aver raggiunto una dimensione critica, TCP riduce l'aumento della finestra per evitare congestioni.
- Fast Retransmit: Se un pacchetto viene perso, il mittente lo ritrasmette rapidamente senza aspettare il timeout.
🔹 Funzionamento delle Connessioni TCP
Durante una connessione, i pacchetti TCP vengono trasmessi e ricevuti in modo ordinato, con numeri di sequenza che garantiscono l'integrità e l'ordine. I pacchetti che arrivano fuori ordine o con errori vengono gestiti tramite il meccanismo di acknowledgment.
Segmentazione dei Dati
Poiché i dati possono essere troppo grandi per essere inviati in un singolo pacchetto, TCP segmenta i dati in unità più piccole chiamate segmenti TCP. Ogni segmento contiene informazioni di controllo, come i numeri di sequenza e di conferma, per garantire che i dati arrivino correttamente.
Riordinamento dei Pacchetti
I pacchetti TCP possono arrivare fuori ordine, ma il destinatario riordina automaticamente i pacchetti utilizzando i numeri di sequenza.
🔹 Utilizzo di TCP nel Pentesting e nella Cybersecurity
Nel contesto del pentesting e della cybersecurity, la comprensione di TCP è essenziale per:
- Analisi del traffico di rete con strumenti come Wireshark e tcpdump.
- Identificazione di vulnerabilità come SYN Flood Attacks (DoS) e TCP Hijacking.
- Manipolazione della connessione con strumenti come Metasploit.
- Implementazione di meccanismi di sicurezza come IPSec e TLS.
Esempi di Attacchi TCP
- SYN Flood: Attacco DoS che invia pacchetti SYN per saturare le risorse di un server.
- TCP Session Hijacking: Attacco in cui l'attaccante intercetta una sessione TCP valida per assumerne il controllo.
- RST Injection: Invio di pacchetti RST falsificati per interrompere una connessione TCP.
🔹 Conclusione
Il TCP è uno dei protocolli più importanti nel modello di rete, essenziale per garantire la trasmissione affidabile dei dati. La comprensione del suo funzionamento è fondamentale per il pentesting e la sicurezza delle reti.
🚀 Prossimo passo: Analizza il traffico TCP in tempo reale usando strumenti come Wireshark e Scapy per una migliore comprensione delle sue dinamiche.