Las cargas de SMS que superan un mensaje se dividen en segmentos y se recomponen en el terminal usando un User Data Header (UDH). El UDH de concatenación estándar de 6 bytes transporta un número de referencia, el recuento total de segmentos y la secuencia de este segmento. Consume carga y reduce la capacidad a 153 caracteres GSM-7 o 67 UCS-2 por segmento.
Por qué existe la concatenación
Un único SMS está limitado a 140 octetos de datos de usuario. El texto más largo se envía como varios SMS que el terminal receptor reensambla en un solo mensaje. Esto se hace con un User Data Header (UDH) colocado al inicio de los datos de usuario de cada segmento, junto a una bandera (el bit UDHI) que indica al terminal que hay una cabecera. La red transporta cada segmento como un SMS independiente; solo el terminal los recombina.
El UDH de concatenación de 6 bytes
La cabecera de concatenación más común es de 6 octetos: una longitud de cabecera, un identificador de elemento de información para la concatenación de 8 bits, su longitud, y luego los tres valores que impulsan el reensamblado: un número de referencia compartido por todos los segmentos de un mensaje, el número total de segmentos y la posición de este segmento. Existe una variante con referencia de 16 bits (IEI 0x08) que es de 7 octetos.
| Octeto | Campo | Valor / significado |
|---|---|---|
| 1 | UDHL | 0x05 — longitud del encabezado que sigue |
| 2 | IEI | 0x00 — mensaje corto concatenado, referencia de 8 bits |
| 3 | IEDL | 0x03 — longitud de este elemento de información |
| 4 | Referencia | Compartido en todos los segmentos del mensaje |
| 5 | Total de segmentos | Cuántas partes en total |
| 6 | Número de secuencia | Posición de este segmento (1..total) |
Capacidad por segmento
El UDH vive dentro de la carga de 140 octetos, así que reduce el texto que cada segmento puede transportar. Para GSM-7, el UDH de 6 octetos debe alinearse a septeto, lo que efectivamente cuesta 7 septetos y deja 153 caracteres por segmento. Para UCS-2, los 6 octetos dejan 134 octetos: 67 caracteres. Para datos de 8 bits quedan 134 bytes. Por eso un mensaje GSM-7 de 161 caracteres se convierte en dos segmentos de hasta 153, no en 160 + 1.
| Codificación | SMS único | Por segmento (con UDH) |
|---|---|---|
| GSM-7 | 160 | 153 |
| UCS-2 | 70 | 67 |
| 8 bits | 140 bytes | 134 bytes |
Secuenciación y reensamblado
Los segmentos de un mensaje lógico comparten un número de referencia; el terminal los agrupa por referencia y los ordena por número de secuencia para reconstruir el texto. Los segmentos pueden llegar desordenados o tarde, así que una parte que falta deja el mensaje incompleto hasta que aparece (o caduca). En SMPP puedes concatenar con los bytes UDH en short_message (activando el bit UDHI de esm_class) o con los TLV sar_*: elige un método por ruta y mantenlo coherente.
Preguntas frecuentes
¿Cuántos caracteres por segmento en un SMS concatenado?
153 para GSM-7 y 67 para UCS-2, porque el User Data Header de 6 bytes consume parte de la carga de 140 octetos. Los segmentos de datos de 8 bits simples transportan 134 bytes cada uno.
¿Qué es el UDH en SMS?
El User Data Header es una pequeña estructura al inicio de los datos de usuario de un segmento que transporta información de control: para la concatenación, un número de referencia, el recuento total de segmentos y la secuencia de este segmento. El bit UDHI señaliza su presencia.
¿Por qué un mensaje de 161 caracteres cuesta dos segmentos de 153?
Porque en cuanto un mensaje necesita concatenación, cada segmento transporta un UDH que reduce la capacidad a 153 caracteres GSM-7. Así, 161 caracteres se dividen en dos segmentos (hasta 306 caracteres en total), cada uno facturado como un SMS aparte.
¿Cuál es la diferencia entre la concatenación UDH y SAR?
Ambas dividen los mensajes largos de la misma forma. UDH incrusta los bytes de cabecera en el cuerpo del mensaje y activa el bit UDHI de esm_class; SAR transporta la referencia, el total y la secuencia en los TLV sar_* de SMPP, manteniendo el cuerpo limpio. Usa la que admita tu ruta.
¿Pueden llegar desordenados los segmentos concatenados?
Sí. Cada segmento viaja como un SMS independiente, así que pueden llegar desordenados o con retraso. El terminal los reensambla por número de referencia y secuencia; un segmento que falta deja el mensaje incompleto hasta que llega.
Especificaciones de la fuente
Las normas publicadas en las que se basa esta página. Se abre en una pestaña nueva.