Reading Time: 3 minutes

Protocollo TCP

Il protocollo UDP possiede indubbiamente il fascino della semplicità, ma rende particolarmente pesante realizzare applicazioni che richiedono un elevato grado di affidabilità nel trasporto dei dati.

Per queste applicazioni esiste una soluzione alternativa, un protocollo di trasporto più complesso che implementa in maniera autonoma varie funzionalità:

  • apertura, gestione e chiusura di una sessione per il trasferimento dei dati;
  • riordino dei dati ricevuti;
  • ritrasmissione in caso di errori;
  • controllo del flusso.

Grazie a queste funzionalità, disponibili direttamente a livello di trasporto, le applicazioni possono concentrarsi sul servizio che devono realizzare per gli utenti, senza dover risolvere in maniera “proprietaria” le limitazioni del servizio di consegna offerto dal protocollo IP.

Il protocollo di trasporto TCP (Transmission Control Protocol) è l’esempio di come trasformare il servizio inaffidabile, best-effort, orientato alla consegna di singoli pacchetti, messo a disposizione da IP, in un servizio di consegna affidabile, orientato alla connessione.

Il TCP è di gran lunga la componente più complessa dell’intera famiglia di protocolli TCP/IP e, per molti aspetti, la preda più ambita per attaccanti esperti.

Il protocollo TCP è orientato al trasporto di un flusso non strutturato di dati binari.

Nella stazione sorgente il livello TCP riceve dal livello applicativo una sequenza di blocchi di dati binari, che rappresentano le informazioni da trasferire.

Tale flusso viene frammentato in segmenti TCP di lunghezza ottimale, inferiore alla massima prestabilita dal protocollo.

Ogni segmento viene dotato di una specifica intestazione, contenente tutti i parametri relativi al protocollo TCP.

Quando possibile, la stazione sorgente incapsula un segmento TCP in un singolo datagramma IP.

L’azione dei gateway intermedi per adattare il pacchetto alle diverse MTU, e la conseguente frammentazione del datagramma IP, possono far perdere tale caratteristica all’unità dati mentre questa procede attraverso Internet.

A destinazione non è affatto garantito che ciascun datagramma IP contenga un segmento TCP completo.

Una simile eventualità viene generalmente interpretata dalla stazione ricevente come il risultato di una frammentazione avvenuta a livello IP.

Segmenti TCP, appartenenti allo stesso flusso di dati, possono giungere a destinazione fuori ordine.

Il protocollo TCP provvede al riordino dei segmenti ricevuti ricostruendo i dati binari come erano in origine.

Nella stazione di destinazione esistono risorse di memoria (buffer di ricezione) specificatamente dedicate allo scopo.

I messaggi ricevuti fuori ordine vengono temporaneamente conservati nei buffer, in attesa di poter essere passati all’applicazione finale.

Per poter riordinare i segmenti, ciascun segmento TCP possiede un identificatore univoco (sequence number), numero d’ordine che, all’interno della sequenza dei dati, indica la posizione relativa, all’interno del flusso di dati, dei byte trasportati nel segmento corrente.

Segmenti TCP che risultano corrotti durante la trasmissione vengono ritrasmessi dalla sorgente allo scadere di un tempo di attesa.

Il protocollo TCP prevede che, per ogni segmento riscontrato con successo, la stazione di destinazione invii un messaggio di riscontro positivo (acknowledgement) alla sorgente.

Ogni messaggio di acknowledgement (ACK) contiene un numero di sequenza che permette alla sorgente di stabilire quale blocco dati è stato verificato con successo.

Piuttosto che attendere il riscontro del segmento precedente prima di inviare il successivo, il controllo del flusso viene realizzato da TCP in accordo allo schema denominato meccanismo a finestra mobile.

Tale meccanismo prevede che i partecipanti al servizio ripongano una fiducia variabile nella capacità della rete di operare senza errori.

La fiducia aumenta ogni volta che si riceve un riscontro positivo; diminuisce ogni volta che si giunge allo scadere del periodo di attesa senza aver ricevuto acknowledgement.

La stazione sorgente si blocca (non trasmette successivi segmenti TCP), una volta esaurita la fiducia corrente nella rete.

L’ampiezza della finestra indica il grado di fiducia concessa in quel momento alla rete stabilendo quanti byte possono essere trasmessi dal sorgente prima di bloccarsi.

Il TCP è molto cauto nel concedere fiducia alla rete. Prevede una partenza lenta (per ogni riscontro positivo l’ampiezza della finestra mobile viene aumentata linearmente) e una riduzione moltiplicativa (l’ampiezza della finestra viene ridotta alla metà per ogni segmento che deve essere ritrasmesso).

error: Content is protected !!

La maggior parte dei contenuti del blog ComputerSec vengono pubblicati a beneficio di tutti e in modo completamente gratuito.
Tuttavia per supportare il blog, e per avere ulteriori vantaggi, puoi decidere di abbonarti e sfruttare al 100% tutti i contenuti!
Abbonati Ora!

Complimenti! Ti sei iscritto alla nostra Newsletter

C'è stato un errore durante l'invio della richiesta. Per favore riprova.

Computer Security will use the information you provide on this form to be in touch with you and to provide updates and marketing.