Les charges utiles SMS dépassant un message sont découpées en segments puis recousues sur le combiné à l'aide d'un User Data Header (UDH). L'UDH de concaténation standard de 6 octets porte un numéro de référence, le nombre total de segments et la séquence de ce segment. Il consomme de la charge utile, réduisant la capacité à 153 caractères GSM-7 ou 67 UCS-2 par segment.
Pourquoi la concaténation existe
Un SMS unique est limité à 140 octets de données utilisateur. Un texte plus long est envoyé sous forme de plusieurs SMS que le combiné récepteur réassemble en un seul message. Cela se fait avec un User Data Header (UDH) placé au début des données utilisateur de chaque segment, accompagné d'un indicateur (le bit UDHI) signalant au combiné la présence d'un en-tête. Le réseau porte chaque segment comme un SMS indépendant ; seul le combiné les recombine.
L'UDH de concaténation de 6 octets
L'en-tête de concaténation le plus courant fait 6 octets : une longueur d'en-tête, un identifiant d'élément d'information pour la concaténation 8 bits, sa longueur, puis les trois valeurs qui pilotent le réassemblage — un numéro de référence partagé par tous les segments d'un message, le nombre total de segments, et la position de ce segment. Une variante à référence 16 bits existe (IEI 0x08) et fait 7 octets.
| Octet | Champ | Valeur / signification |
|---|---|---|
| 1 | UDHL | 0x05 — longueur de l'en-tête qui suit |
| 2 | IEI | 0x00 — message court concaténé, référence 8 bits |
| 3 | IEDL | 0x03 — longueur de cet élément d'information |
| 4 | Référence | Partagé dans tous les segments du message |
| 5 | Total des segments | Combien de parties au total |
| 6 | Numéro de séquence | Position de ce segment (1..total) |
Capacité par segment
L'UDH loge à l'intérieur de la charge utile de 140 octets, réduisant donc le texte que chaque segment peut porter. Pour le GSM-7, l'UDH de 6 octets doit être aligné sur les septets, coûtant en pratique 7 septets et laissant 153 caractères par segment. Pour l'UCS-2, les 6 octets laissent 134 octets — 67 caractères. Pour les données 8 bits, il reste 134 octets. C'est pourquoi un message GSM-7 de 161 caractères devient deux segments d'au plus 153, et non 160 + 1.
| Encodage | SMS simple | Par segment (avec UDH) |
|---|---|---|
| GSM-7 | 160 | 153 |
| UCS-2 | 70 | 67 |
| 8 bits | 140 octets | 134 octets |
Séquencement et réassemblage
Les segments d'un même message logique partagent un numéro de référence ; le combiné les regroupe par référence et les ordonne par numéro de séquence pour reconstruire le texte. Les segments peuvent arriver dans le désordre ou en retard ; une partie manquante laisse donc le message incomplet jusqu'à ce qu'elle apparaisse (ou expire). En SMPP, vous pouvez concaténer soit avec les octets UDH dans short_message (en positionnant le bit UDHI d'esm_class), soit avec les TLV sar_* — choisissez une méthode par route et gardez-la cohérente.
Questions fréquemment posées
Combien de caractères par segment dans un SMS concaténé ?
153 pour le GSM-7 et 67 pour l'UCS-2, car le User Data Header de 6 octets consomme une partie de la charge utile de 140 octets. Les segments de données 8 bits ordinaires portent 134 octets chacun.
Qu'est-ce que l'UDH dans le SMS ?
Le User Data Header est une petite structure au début des données utilisateur d'un segment qui porte des informations de contrôle — pour la concaténation : un numéro de référence, le nombre total de segments et la séquence de ce segment. Le bit UDHI signale sa présence.
Pourquoi un message de 161 caractères coûte-t-il deux segments de 153 ?
Parce que dès qu'un message nécessite la concaténation, chaque segment porte un UDH qui réduit la capacité à 153 caractères GSM-7. Ainsi 161 caractères se découpent en deux segments (jusqu'à 306 caractères au total), chacun facturé comme un SMS distinct.
Quelle différence entre concaténation UDH et SAR ?
Les deux découpent les longs messages de la même façon. L'UDH intègre les octets d'en-tête dans le corps du message et positionne le bit UDHI d'esm_class ; le SAR porte à la place la référence, le total et la séquence dans les TLV sar_* du SMPP, gardant le corps propre. Utilisez ce que votre route prend en charge.
Les segments concaténés peuvent-ils arriver dans le désordre ?
Oui. Chaque segment voyage comme un SMS indépendant, ils peuvent donc arriver dans le désordre ou être retardés. Le combiné réassemble par numéro de référence et de séquence ; un segment manquant laisse le message incomplet jusqu'à son arrivée.
Spécifications sources
Les normes publiées sur lesquelles repose cette page. S'ouvre dans un nouvel onglet.