Cos'è la MSS (dimensione massima del segmento)?

La MSS, ovvero la dimensione massima del segmento, è il carico di dati più grande che un dispositivo può accettare da una connessione di rete.

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Capire cos'è un pacchetto e cosa sono le intestazioni dei pacchetti
  • Definire il "payload"
  • Scoprire come calcolare l'MSS in base all'MTU

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

Cos'è la dimensione massima del segmento (MSS)?

La dimensione massima del segmento (MSS) limita la dimensione dei pacchetti, ovvero piccole porzioni di dati, che viaggiano attraverso una rete, come Internet. Tutti i dati che viaggiano su una rete vengono suddivisi in pacchetti. Ai pacchetti sono allegate diverse intestazioni che contengono informazioni sul loro contenuto e sulla destinazione. MSS misura la parte non di intestazione di un pacchetto, chiamata payload.

Se paragoniamo un pacchetto dati a un camion da trasporto, in cui l'intestazione è il camion stesso e il carico utile è il rimorchio e il carico, allora l'MSS è come una bilancia che misura solo il rimorchio. Se il rimorchio pesa troppo, il camion non può proseguire verso la sua destinazione.

Più specificatamente, MSS è la dimensione massima del segmento TCP (Transport Control Protocol) che un dispositivo connesso alla rete può ricevere. MSS definisce "segmento" solo la lunghezza del payload, non le intestazioni allegate. L'MSS è misurata in byte.

Intestazioni e payload dei pacchetti dati - Segmento TCP e MSS

L'MSS è determinata da un altro parametro che ha a che fare con la dimensione del pacchetto: MTU, ovvero l'unità massima di trasmissione, che include le intestazioni TCP e IP (Internet Protocol). Per continuare con l'analogia, l'MTU misura il peso totale del camion, del suo rimorchio e del carico, anziché solo del rimorchio e del carico.

In sostanza, l'MSS è uguale all'MTU meno la dimensione di un'intestazione TCP e di un'intestazione IP:

MTU - (intestazione TCP + intestazione IP) = MSS

Una delle principali differenze tra MTU e MSS è che se un pacchetto supera l'MTU di un dispositivo, viene suddiviso in pezzi più piccoli o "frammentato". Al contrario, se un pacchetto supera l'MSS, viene eliminato e non viene consegnato.

Cos'è TCP? Cos'è un'intestazione TCP?

Il Transport Control Protocol, o TCP, è un protocollo che garantisce che i pacchetti di dati vengano recapitati e ricevuti in ordine, senza che alcun pacchetto venga perso. Immagina se i servizi di consegna dei pacchi chiamassero in anticipo tutti i destinatari per assicurarsi che siano a casa a una certa ora prima di consegnare il pacco, e poi inviassero una comunicazione al mittente per confermare l'avvenuta consegna. TCP funziona un po' così, con i pacchetti di dati come "pacchetti" consegnati.

TCP funziona aprendo una connessione tra i due dispositivi che stanno comunicando tramite un processo chiamato handshake TCP. L'MSS viene concordata durante l'handshake TCP: entrambi i dispositivi comunicano la dimensione dei pacchetti che sono in grado di ricevere (questo può essere definito "MSS clamping"; vedere sotto). TCP aggiunge un'intestazione a tutti i pacchetti per indicare a quale connessione aperta appartiene ogni pacchetto e in quale ordine vengono inviati i pacchetti.

Quanto sono lunghe le intestazioni TCP e IP?

Le intestazioni TCP sono quasi sempre lunghe 20 byte*. Le intestazioni IP includono informazioni quali l'indirizzo IP di origine e di destinazione e sono lunghe 20 byte. Sia i pacchetti TCP che IP includono campi di intestazione opzionali che possono allungare le intestazioni, ma questi non vengono quasi mai utilizzati.

*In informatica, un byte è un'unità di dimensione della memoria che rappresenta otto cifre binarie; in altre parole, una combinazione di otto uno e otto zeri.

Esempio di MSS TCP

Supponiamo che un router di rete abbia una MTU di 1.500, il che significa che accetta solo pacchetti lunghi fino a 1.500 byte. (I pacchetti più lunghi verranno frammentati). A quale impostazione dovrebbe essere assegnata l'MSS del router?

MTU - (intestazione TCP + intestazione IP) = MSS

1.500 - (20 + 20) = 1.460

L'MSS del router deve essere impostata su 1.460 byte. I pacchetti con una dimensione del payload superiore a 1.460 byte verranno eliminati. (Un dispositivo potrebbe inviare per errore un pacchetto eccessivamente grande come questo se non è a conoscenza delle impostazioni MTU e MSS dei router tra esso e un altro dispositivo. Un processo denominato scoperta del percorso MTU aiuta a evitare tali incidenti.)

In che modo l'uso di IPsec influisce sull'MSS?

IPsec (Internet Protocol security) è la versione crittografata di IP. I pacchetti di dati inviati tramite IPsec vengono codificati in modo che solo i due dispositivi connessi siano in grado di interpretarli, proteggendo il contenuto del payload da chiunque possa intercettarli. IPsec viene spesso utilizzato per configurare reti private virtuali o VPN.

IPsec aggiunge alcuni byte alla lunghezza di un pacchetto. Nelle connessioni che utilizzano questa crittografia, MSS deve tenere conto anche di IPsec:

MTU - (intestazione TCP + intestazione IP + IPsec) = MSS

MSS è parametro del livello di rete o del livello di trasporto?

MSS è un parametro di livello 4, o livello di trasporto. Viene utilizzato con TCP, un protocollo a livello di trasporto. Tuttavia, è strettamente correlato all'MTU, che si applica al livello 3 (il livello di rete).

Cos'è l'MSS clamping?

Occasionalmente, un router lungo un percorso di rete ha un valore MTU impostato su un valore inferiore ai tipici 1.500 byte. Ciò può causare la perdita di pacchetti e può essere difficile da individuare.

Per garantire che i pacchetti raggiungano comunque la loro destinazione in questa situazione, un'opzione è quella di ridurre la dimensione dei payload dei pacchetti in arrivo. Ciò può essere ottenuto configurando il server per applicare un MSS clamping: durante l'handshake TCP, il server può segnalare all'MSS i pacchetti che è disposto a ricevere, "bloccando" la dimensione massima del payload dall'altro server. Ad esempio, se i server A e B stabiliscono una connessione TCP e il server B comunica una MSS di 1.436 byte, il server A invierà pacchetti con una dimensione massima del payload di 1.436 byte per tutta la durata della connessione.

Un'altra applicazione dell'MSS clamping è nel caso del tunneling GRE, in cui un'intestazione di 24 byte viene aggiunta al pacchetto originale per inviarlo a una nuova destinazione. Se il pacchetto originale fosse più grande di 1.476 byte, il nuovo pacchetto potrebbe superare il tipico MTU di 1.500 byte; è possibile applicare un clamp MSS per richiedere che i pacchetti in arrivo siano inferiori a 1.500 byte anche dopo l'applicazione dell'intestazione GRE.

Per ulteriori informazioni su MTU e MSS, consulta Cos'è una MTU?