BroadNet
Codificación de SMSSegmentación

Segmentación, concatenación y el UDH en SMS

Actualizado el 3 min de lecturaBasado en estándares
Respuesta directa

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.

§01

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.

§02

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.

UDH de concatenación de 6 bytes (referencia de 8 bits)
OctetoCampoValor / significado
1UDHL0x05 — longitud del encabezado que sigue
2IEI0x00 — mensaje corto concatenado, referencia de 8 bits
3IEDL0x03 — longitud de este elemento de información
4ReferenciaCompartido en todos los segmentos del mensaje
5Total de segmentosCuántas partes en total
6Número de secuenciaPosición de este segmento (1..total)
§03

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.

Capacidad de segmento concatenado
CodificaciónSMS únicoPor segmento (con UDH)
GSM-7160153
UCS-27067
8 bits140 bytes134 bytes
§04

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

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.

Referencias

Especificaciones de la fuente

Las normas publicadas en las que se basa esta página. Se abre en una pestaña nueva.

BNMantenido por el equipo de ingeniería BroadNet·Mensajería de nivel empresarial desde 2003.
Colócalo en el cable

Desarrollado con un enlace SMPP real y una API REST.

Solicita acceso de prueba con claves de prueba reales: primero envía a tu propio número verificado y, una vez aprobada tu identidad de remitente y las rutas, pasa a producción en más de 200 países.