Cos'é il TCP (Transmission Control Protocol)?

Il TCP (Transmission Control Protocol) è uno standard di comunicazione utilizzato dalle applicazioni software per scambiare dati. Imposta i parametri per lo scambio, conferma cosa viene inviato, da dove viene, dove sta andando e se è arrivato correttamente o meno.

A differenza del protocollo UDP (User Datagram Protocol), un altro standard utilizzato dalle applicazioni per scambiare dati, TCP è progettato per la precisione, non per la velocità. Nel trasporto dei dati, a volte i pacchetti di dati possono arrivare fuori servizio o andare persi. Il TCP numera ogni pacchetto per assicurare che ogni pezzo raggiunga la sua destinazione e possa essere riorganizzato se necessario. Quando i pacchetti non arrivano entro un intervallo di tempo specificato, il protocollo di controllo della trasmissione richiede la ritrasmissione dei dati persi.

Durante l'intero scambio, TCP mantiene la connessione tra le due applicazioni, assicurando che entrambe le parti inviino e ricevano tutto ciò che deve essere trasmesso e confermando che sia corretto.

Il protocollo di controllo della trasmissione è lo standard più diffuso per lo scambio di dati tramite il protocollo Internet (IP) ed è spesso indicato come TCP/IP. Poiché aiuta a facilitare lo scambio di dati su Internet, TCP fa parte di ciò che è noto come "Transport Layer" di una rete.

Ecco come funziona e a cosa serve.

Come funziona il protocollo di controllo della trasmissione

TCP funge da intermediario tra due applicazioni che devono scambiare dati. Quando un'applicazione vuole trasmettere dati, TCP assicura che:

  • I dati arrivano in ordine
  • I dati hanno errori minimi
  • I dati duplicati vengono eliminati
  • I pacchetti persi o scartati vengono rispediti 

È una specie di corriere per Internet. Una volta che TCP stabilisce la connessione e definisce l'interazione, raccoglie i dati, li carica su camion separati e li invia a destinazione tramite l'autostrada IP. 

"Sulla strada", gli ingorghi (congestione della rete), le deviazioni (bilanciamento del carico del traffico) e gli incidenti stradali (errori di rete) possono causare l'arrivo di dati fuori servizio o impedirne l'arrivo in tempo. 

Quando arrivano i pacchetti di dati, il destinatario essenzialmente firma per loro con una conferma: "Ho ricevuto il pacchetto 4". Se il mittente non riceve questa conferma entro un tempo specificato, rinvia la trasmissione. Una volta che tutto è arrivato, TCP termina la connessione.

L'intero processo avviene in tre fasi distinte.

Le tre fasi delle operazioni TCP

Le operazioni TCP comportano numerosi passaggi in cui i due endpoint utilizzano il protocollo TCP per effettuare richieste, riconoscersi reciprocamente e confermare che lo scambio avviene come previsto. Questi passaggi si inseriscono in tre fasi principali: 

  1. Stabilimento del collegamento
  2. Trasferimento dati
  3. Terminazione della connessione

I nomi delle fasi sono autoesplicativi, ma in ogni fase del processo accade molto di più.

Durante la fase di creazione della connessione , TCP facilita un "handshake a tre vie" in cui le applicazioni richiedono di sincronizzarsi e riconoscersi reciprocamente. In questa fase, TCP imposta i parametri per lo scambio e conferma che entrambe le entità (come un server e un client) possono partecipare allo scambio.

Durante la fase di trasferimento dei dati , TCP accetta i dati trasferiti, li suddivide in pacchetti ordinati, aggiunge un'intestazione TCP per fornire il contesto e li inoltra al destinatario utilizzando il protocollo Internet.

Durante la fase di terminazione della connessione , le applicazioni aspettano che entrambe riconoscano che la trasmissione è terminata e priva di errori, quindi TCP chiude la connessione tra di loro.

Segmenti TCP

Quando il protocollo di controllo della trasmissione riceve un flusso di dati, lo divide e aggiunge un'intestazione TCP al trasferimento, il flusso di dati diventa un "segmento TCP". L'intestazione TCP assicura che quando i singoli pacchetti di dati arrivano a destinazione, possono essere facilmente disposti nell'ordine corretto e il destinatario può vedere chiaramente se manca qualcosa.

Nella fase di creazione della connessione, le applicazioni possono annunciare la loro dimensione massima del segmento (MSS), che definisce il segmento TCP più grande che scambieranno. Rappresenta la più grande quantità di dati che verrà trasmessa in un singolo segmento. Se l'MSS è troppo grande, la frammentazione IP spezzerà i singoli pacchetti in pezzi più piccoli, aumentando il rischio che alcuni pacchetti vadano persi e che le applicazioni debbano ritrasmettere i dati più volte (questo aumenta la latenza).

Controllo della congestione

Durante la trasmissione dei dati, il TCP assicura che i pacchetti vengano inviati a un ritmo che le risorse della rete possono gestire. Inizialmente, TCP consente solo a pochi byte di passare attraverso la rete. Questo è noto come "Finestra di congestione" (CWND). Quando il destinatario riconosce che i dati sono arrivati con successo, TCP aumenta esponenzialmente la finestra di congestione e consente il passaggio di più dati. 

Dopo che CWND raggiunge una soglia specificata, l'aumento diventa lineare. Se un pacchetto viene perso, TCP riduce significativamente la finestra di congestione e trasmette di nuovo lentamente. Nel tempo, il throughput dei dati TCP forma uno schema a dente di sega, in cui la velocità di trasmissione aumenta e diminuisce bruscamente per controllare la congestione della rete.

Rilevamento errori

A differenza di UDP, TCP controlla la presenza di errori nelle trasmissioni. Utilizzando numeri di sequenza e un checksum, determina se le trasmissioni arrivano correttamente. Se un bit è impreciso, il checksum sarà errato. Quando ciò accade, TCP elimina il segmento errato.

A cosa serve il TCP?

Il protocollo di controllo della trasmissione è un componente fondamentale dell'uso quotidiano di Internet. Quando navighi sul Web e visiti una pagina Web, il server Web utilizza l'HyperText Transfer Protocol (HTTP) per inviare il file per il sito Web al dispositivo e HTTP si basa su TCP per connettere il server al computer e garantire che il file viene trasferito correttamente su IP. Anche altri protocolli di alto livello si basano su TCP, tra cui Simple Mail Transfer Protocol (SMTP) per l'invio e la ricezione di e-mail, File Transfer Protocol (FTP) per la condivisione di file peer-to-peer e MQTT (che è un componente chiave del Internet of Things e richiede flussi di pacchetti ordinati e privi di errori).

Ogni volta che la precisione è più importante della velocità di trasmissione, è probabile che le reti si basino su TCP per mantenere le connessioni e trasferire dati affidabili. Ma poiché TCP utilizza handshake a tre vie per stabilire connessioni, divide i flussi di dati in pacchetti più piccoli e richiede ritrasmissioni per garantire la precisione, aumenta il tempo necessario per trasferire i dati da un'applicazione all'altra. 

Questa maggiore latenza inibisce l'utilizzo di Internet come Voice Over Internet Protocol (VoIP), streaming video e videogiochi. In questi casi, i protocolli di alto livello si baseranno su User Datagram Protocol, che è più veloce ma meno accurato.

Vulnerabilità TCP

Il protocollo di controllo della trasmissione utilizza gli indirizzi del protocollo Internet per stabilire connessioni tra client e server. Di conseguenza, presenta alcune vulnerabilità intrinseche che creano sfide alla sicurezza informatica.

Attacchi Denial of Service

TCP consuma risorse di rete per mantenere le connessioni. Il software dannoso può utilizzare lo spoofing IP e pacchetti di dati non validi per le richieste di spam, di cui il TCP cerca di tenere traccia. All'aumentare del volume delle richieste, TCP può consumare troppe risorse di un server e provocarne il crash.

Gli hacker utilizzano spesso le botnet (un enorme esercito di dispositivi IoT) per lanciare attacchi Denial of Service (DoS), che è uno dei motivi per cui i produttori di IoT devono essere proattivi riguardo alle minacce alla sicurezza dell'IoT.

Dirottamento della connessione

Se una connessione tra le applicazioni non è sicura, un hacker può intercettare il trasferimento dei dati. Poiché le intestazioni TCP specificano la dimensione di ciascun pacchetto di dati e segmento TCP, un hacker può creare segmenti e pacchetti falsi della stessa dimensione e indurre il destinatario ad accettarli. Stanno "dirottando" la connessione TCP per inviare i propri dati, che possono essere dannosi. Abbinato ad altri protocolli e strategie di hacking, il dirottamento TCP può persino dare a qualcuno il controllo completo sulla connessione.

Ottieni connettività IoT sicura con Things Mobile

Things Mobile è una piattaforma di comunicazione dedicata all'IoT. Non solo i tuoi dispositivi possono connettersi tramite la nostra rete mobile globale, ma la piattaforma garantisce anche la sicurezza del tuo dispositivo. Con funzionalità di sicurezza IoT avanzate come reti private, firewall di rete con whitelist IP e DNS personalizzati, preveniamo gli attacchi TCP comuni e rendiamo impossibile la comunicazione dannosa con il tuo dispositivo.