# Segmentazione SMS, concatenazione e l'UDH

> I payload SMS che superano un messaggio vengono suddivisi in segmenti e ricuciti sul terminale tramite un User Data Header (UDH). L'UDH di concatenazione standard di 6 byte trasporta un numero di riferimento, il conteggio totale dei segmenti e la sequenza di questo segmento. Consuma payload, riducendo la capacità a 153 caratteri GSM-7 o 67 UCS-2 per segmento.

- URL canonico: https://www.broadnet.me/it/reference/sms-segmentation-concatenation-udh
- Lingua: it
- Ultimo aggiornamento: 2026-07-18
- Editore: BroadNet (https://www.broadnet.me)

Come i messaggi SMS lunghi vengono suddivisi e riassemblati: l'User Data Header di 6 byte, i risultanti 153 (GSM-7) e 67 (UCS-2) caratteri per segmento, il numero di riferimento e il sequenziamento dei segmenti.

## Perché esiste la concatenazione

Un singolo SMS è limitato a 140 ottetti di dati utente. Un testo più lungo viene inviato come più SMS che il terminale ricevente riassembla in un unico messaggio. Ciò avviene con un User Data Header (UDH) posto all'inizio dei dati utente di ciascun segmento, insieme a un flag (il bit UDHI) che comunica al terminale la presenza di un header. La rete trasporta ogni segmento come un SMS indipendente; solo il terminale li ricombina.

## L'UDH di concatenazione di 6 byte

L'header di concatenazione più comune è di 6 ottetti: una lunghezza dell'header, un identificatore di elemento informativo per la concatenazione a 8 bit, la sua lunghezza, poi i tre valori che guidano il riassemblaggio — un numero di riferimento condiviso da tutti i segmenti di un messaggio, il numero totale di segmenti e la posizione di questo segmento. Esiste una variante con riferimento a 16 bit (IEI 0x08) che è di 7 ottetti.

*UDH di concatenazione di 6 byte (riferimento a 8 bit)*

| Octet | Campo | Valore / significato |
|---|---|---|
| 1 | UDHL | 0x05 — lunghezza dell'intestazione che segue |
| 2 | IEI | 0x00 — messaggio breve concatenato, riferimento a 8 bit |
| 3 | IEDL | 0x03 — lunghezza di questo elemento informativo |
| 4 | Riferimento | Condiviso in tutti i segmenti del messaggio |
| 5 | Segmenti totali | Quante parti in totale |
| 6 | Numero di sequenza | Posizione di questo segmento (1..totale) |

## Capacità per segmento

L'UDH risiede all'interno del payload di 140 ottetti, quindi riduce il testo che ogni segmento può trasportare. Per GSM-7, l'UDH di 6 ottetti deve essere allineato ai settetti, costando di fatto 7 settetti e lasciando 153 caratteri per segmento. Per UCS-2, i 6 ottetti lasciano 134 ottetti — 67 caratteri. Per i dati a 8 bit restano 134 byte. Ecco perché un messaggio GSM-7 di 161 caratteri diventa due segmenti da un massimo di 153, non 160 + 1.

*Capacità dei segmenti concatenati*

| Codifica | Singolo SMS | Per segmento (con UDH) |
|---|---|---|
| GSM-7 | 160 | 153 |
| UCS-2 | 70 | 67 |
| 8-bit | 140 byte | 134 byte |

## Sequenziamento e riassemblaggio

I segmenti di un messaggio logico condividono un numero di riferimento; il terminale raggruppa per riferimento e ordina per numero di sequenza per ricostruire il testo. I segmenti possono arrivare fuori ordine o in ritardo, quindi una parte mancante lascia il messaggio incompleto finché non compare (o scade). In SMPP potete concatenare o con i byte UDH in short_message (impostando il bit UDHI di esm_class) o con i TLV sar_* — scegliete un metodo per rotta e mantenetelo coerente.

## Domande frequenti

### Quanti caratteri per segmento in un SMS concatenato?

153 per GSM-7 e 67 per UCS-2, perché l'User Data Header di 6 byte consuma parte del payload di 140 ottetti. I segmenti di dati a 8 bit semplici trasportano 134 byte ciascuno.

### Che cos'è l'UDH negli SMS?

L'User Data Header è una piccola struttura all'inizio dei dati utente di un segmento che trasporta informazioni di controllo — per la concatenazione, un numero di riferimento, il conteggio totale dei segmenti e la sequenza di questo segmento. Il bit UDHI ne segnala la presenza.

### Perché un messaggio di 161 caratteri costa due segmenti da 153?

Perché una volta che un messaggio richiede la concatenazione, ogni segmento trasporta un UDH che riduce la capacità a 153 caratteri GSM-7. Così 161 caratteri si dividono in due segmenti (fino a 306 caratteri totali), ciascuno addebitato come un SMS separato.

### Qual è la differenza tra concatenazione UDH e SAR?

Entrambe suddividono i messaggi lunghi allo stesso modo. UDH incorpora i byte dell'header nel body del messaggio e imposta il bit UDHI di esm_class; SAR trasporta invece il riferimento, il totale e la sequenza nei TLV sar_* di SMPP, mantenendo pulito il body. Usate quello supportato dalla vostra rotta.

### I segmenti concatenati possono arrivare fuori ordine?

Sì. Ogni segmento viaggia come un SMS indipendente, quindi possono arrivare fuori ordine o essere ritardati. Il terminale li riassembla per numero di riferimento e sequenza; un segmento mancante lascia il messaggio incompleto finché non arriva.

## Fonti

- [3GPP TS 23.040 — User Data Header (§9.2.3.24)](https://www.3gpp.org/dynareport/23040.htm)
- [3GPP TS 23.038 — alphabets and data coding](https://www.3gpp.org/dynareport/23038.htm)

## Correlati

- [Rilevamento della codifica e costo](https://www.broadnet.me/it/reference/encoding-detection-and-cost)
- [Parametri opzionali TLV di SMPP](https://www.broadnet.me/it/reference/smpp-tlv-parameters)
- [Il set di caratteri GSM-7](https://www.broadnet.me/it/reference/gsm7-character-set)
- [Calcolatore di segmenti SMS (strumento gratuito)](https://www.broadnet.me/it/tools/sms-segment-calculator)
- [Prodotto SMS A2P](https://www.broadnet.me/it/products/a2p-sms)
