PDU

Uma unidade de dados de protocolo é um comando SMPP no fio, como submit_sm: um cabeçalho fixo e um corpo definido pelo comando.

Apenas definições: um termo explicado aqui não é um serviço que vendemos.

Uma unidade de dados de protocolo é um comando codificado no fio dentro de um protocolo definido: um cabeçalho fixo e um corpo que depende do comando. No SMPP, o cabeçalho leva o comprimento do comando, o ID de comando, o status de comando e o número de sequência.

O corpo de um submit_sm carrega os endereços, a codificação dos dados e o campo short_message. Esse campo carrega os dados do usuário e, quando o esm_class indica, uma UDH; o SMSC a converte na TPDU da 3GPP TS 23.040 no lado de rádio.

O decodificador SMPP analisa no navegador uma PDU colada, mas só consegue ler os bytes que recebe.

Uma PDU, campo por campo

command_length
32
command_id
0x00000004
command_status
0x00000000
sequence_number
1
service_type
source_addr_ton
0
source_addr_npi
0
source_addr
dest_addr_ton
0
dest_addr_npi
0
destination_addr
esm_class
0x00
O cabeçalho é fixo; o corpo muda com o comando.
Descrição em texto

Toda PDU começa com um comprimento de comando de quatro bytes, o ID de comando, o status de comando e o número de sequência. O corpo vem em seguida.

Perguntas frequentes

Uma PDU é o mesmo que um pacote?

Não. Uma PDU pertence a um protocolo nomeado, com layout definido; no trabalho com SMS, costuma significar um comando SMPP ou a mensagem curta codificada.

Por que uma PDU é decodificada como texto errado?

A codificação dos dados e o cabeçalho de dados do usuário são as causas habituais.

É possível decodificar uma PDU sem saber a direção?

Não de forma confiável. Uma TPDU bruta (SMS-SUBMIT versus SMS-DELIVER) tem ordem de campos diferente em cada direção; uma PDU SMPP nomeia seu comando em command_id, então o ID de comando indica a direção.

Saiba mais

Fontes

  1. 3GPP TS 23.040: realização técnica do serviço de mensagens curtas
  2. 3GPP TS 23.038: alfabetos e informações específicas de idioma para SMS
  3. SMPP v3.4: cabeçalho de comando e campo short_message