BroadNet
Codificação SMSSegmentação

Segmentação, concatenação de SMS e o UDH

Atualizado em 3 min de leituraBaseado em padrões
Resposta direta

Os conteúdos de SMS acima de uma mensagem são divididos em segmentos e recompostos no terminal usando um User Data Header (UDH). O UDH de concatenação padrão de 6 bytes transporta um número de referência, a contagem total de segmentos e a sequência deste segmento. Consome conteúdo, cortando a capacidade para 153 caracteres GSM-7 ou 67 UCS-2 por segmento.

§01

Porque existe a concatenação

Um SMS único está limitado a 140 octetos de dados de utilizador. Texto mais longo é enviado como vários SMS que o terminal recetor remonta numa só mensagem. Isto faz-se com um User Data Header (UDH) colocado no início dos dados de utilizador de cada segmento, junto com uma flag (o bit UDHI) que indica ao terminal que existe um cabeçalho. A rede transporta cada segmento como um SMS independente; só o terminal os recombina.

§02

O UDH de concatenação de 6 bytes

O cabeçalho de concatenação mais comum tem 6 octetos: um comprimento de cabeçalho, um identificador de elemento de informação para concatenação de 8 bits, o seu comprimento, e depois os três valores que conduzem a remontagem — um número de referência partilhado por todos os segmentos de uma mensagem, o número total de segmentos e a posição deste segmento. Existe uma variante com referência de 16 bits (IEI 0x08) que tem 7 octetos.

UDH de concatenação de 6 bytes (referência de 8 bits)
OctetoCampoValor / significado
1UDHL0x05 — comprimento do cabeçalho seguinte
2IEI0x00 — mensagem curta concatenada, referência de 8 bits
3IEDL0x03 — comprimento deste elemento de informação
4ReferênciaPartilhado em todos os segmentos da mensagem
5Total de segmentosQuantas partes no total
6Número de sequênciaPosição deste segmento (1..total)
§03

Capacidade por segmento

O UDH vive dentro do conteúdo de 140 octetos, pelo que reduz o texto que cada segmento pode transportar. Para GSM-7, o UDH de 6 octetos tem de ser alinhado a septeto, custando efetivamente 7 septetos e deixando 153 caracteres por segmento. Para UCS-2, os 6 octetos deixam 134 octetos — 67 caracteres. Para dados de 8 bits, restam 134 bytes. É por isso que uma mensagem GSM-7 de 161 caracteres se torna dois segmentos de até 153, não 160 + 1.

Capacidade de segmento concatenado
CodificaçãoSMS únicoPor segmento (com UDH)
GSM-7160153
UCS-27067
8-bit140 bytes134 bytes
§04

Sequenciamento e remontagem

Os segmentos de uma mensagem lógica partilham um número de referência; o terminal agrupa por referência e ordena por número de sequência para reconstruir o texto. Os segmentos podem chegar fora de ordem ou atrasados, pelo que uma parte em falta deixa a mensagem incompleta até aparecer (ou expirar). No SMPP pode concatenar quer com os bytes de UDH no short_message (ativando o bit UDHI do esm_class) quer com os TLVs sar_* — escolha um método por rota e mantenha-o consistente.

Perguntas frequentes

Perguntas frequentes

Quantos caracteres por segmento num SMS concatenado?

153 para GSM-7 e 67 para UCS-2, porque o User Data Header de 6 bytes consome parte do conteúdo de 140 octetos. Os segmentos de dados de 8 bits simples transportam 134 bytes cada.

O que é o UDH no SMS?

O User Data Header é uma pequena estrutura no início dos dados de utilizador de um segmento que transporta informação de controlo — para concatenação, um número de referência, a contagem total de segmentos e a sequência deste segmento. O bit UDHI sinaliza a sua presença.

Porque é que uma mensagem de 161 caracteres custa dois segmentos de 153?

Porque assim que uma mensagem precisa de concatenação, cada segmento transporta um UDH que reduz a capacidade para 153 caracteres GSM-7. Assim, 161 caracteres dividem-se em dois segmentos (até 306 caracteres no total), cada um cobrado como um SMS separado.

Qual é a diferença entre concatenação por UDH e por SAR?

Ambas dividem mensagens longas da mesma forma. O UDH incorpora os bytes do cabeçalho no corpo da mensagem e ativa o bit UDHI do esm_class; o SAR transporta a referência, o total e a sequência em TLVs sar_* do SMPP, mantendo o corpo limpo. Use o que a sua rota suportar.

Os segmentos concatenados podem chegar fora de ordem?

Sim. Cada segmento viaja como um SMS independente, pelo que podem chegar fora de ordem ou atrasados. O terminal remonta por número de referência e sequência; um segmento em falta deixa a mensagem incompleta até chegar.

Referências

Especificações de origem

Os padrões publicados nos quais esta página se baseia. Abre num novo separador.

BNMantido pela equipa de engenharia BroadNet·Mensagens de nível de operadora desde 2003
Coloque-o no fio.

Construa com uma vinculação SMPP real e uma API REST.

Solicite acesso de teste com chaves de teste reais: envie primeiro para o seu próprio número verificado e, em seguida, passe para o ambiente de produção em mais de 200 países assim que a sua identidade de remetente e rotas forem aprovadas.