SMPP - Protocolo ponto a ponto de mensagens curtas

Olá! Embora os mensageiros e as redes sociais estejam substituindo os métodos tradicionais de comunicação todos os dias, isso não diminui a popularidade do SMS. A verificação em um site popular ou a notificação de uma transação é repetida, eles vivem e viverão. Você já se perguntou como tudo funciona? Muitas vezes, o protocolo SMPP é usado para enviar mensagens em massa, o que será discutido a seguir.

Já havia artigos no Habré sobre smpp, 1,2, mas o objetivo deles não era descrever o protocolo em si. Claro, você pode começar imediatamente a partir da fonte original - especificações, mas acho que seria bom se houvesse um breve resumo disso. Explicarei usando a versão 3.4 como exemplo e ficarei feliz com suas críticas objetivas.

O protocolo SMPP é um protocolo de mensagens ponto a ponto. Isso significa que cada servidor peer/hub tem direitos iguais. No caso mais simples, o esquema de mensagens SMS é assim:

SMPP - Protocolo ponto a ponto de mensagens curtas

Porém, se o operador nacional não tiver rota para alguma região remota, ele solicita um intermediário para isso – um hub de SMS. Às vezes, para enviar um SMS, é necessário construir uma cadeia entre vários países, ou mesmo continentes.

Sobre o protocolo

SMPP é um protocolo da camada de aplicação baseado na troca de PDU e transmitido por TCP/IP, ou sessões X25 para transmissão de mensagens SMS e USSD. Normalmente, o SMPP é usado em modo persistente, o que ajuda a economizar tempo. O SMPP usa um modelo de comunicação cliente-servidor.

Modo de comunicação

SMPP - Protocolo ponto a ponto de mensagens curtas

A troca de mensagens entre o remetente e a central de SMS via SMPP pode ser realizada nas seguintes modalidades:

Transmissor (transmissor) - transmitir uma mensagem em uma direção, uma de cada vez
Receptor - recebe apenas uma mensagem da central de SMS.
Transceptor (transceptor) - Troca de mensagens entre a central SMS e o usuário

Estrutura

SMPP - Protocolo ponto a ponto de mensagens curtas

Tamanho da mensagem

Uma mensagem SMS pode conter 70 caracteres ao digitar em cirílico e não mais que 157 caracteres latinos + 3 UDH. Se você enviar um SMS com um grande número de caracteres, ele será dividido em vários segmentos e combinado no dispositivo receptor. No caso da segmentação, o número de caracteres é reduzido pelos cabeçalhos da mensagem, que indicam parte da mensagem. Portanto, ao enviar uma mensagem SMS grande, ela contém no máximo 153 caracteres latinos ou 67 caracteres atípicos.

Esquema de codificação de dados

No entanto, os símbolos requerem codificação para transmitir uma mensagem. No protocolo SMPP, um campo especial é responsável pela codificação - Data Coding Scheme, ou DCS. Este é um campo que especifica como as mensagens devem ser reconhecidas. Além disso, o campo DCS inclui:

  • o conjunto de caracteres que define a codificação;
  • classe de mensagem;
  • solicitação de exclusão automática após leitura;
  • indicação de compactação de mensagens;
  • idioma da mensagem de transmissão;

Alfabeto padrão de 7 bits (GSM 03.38). Foi desenvolvido para o sistema de mensagens GSM. Essa codificação é adequada para inglês e vários idiomas latinos. Cada caractere consiste em 7 bits e é codificado em um octeto.

UTF-16 (em GSM UCS2) Para incluir caracteres faltantes no alfabeto de 7 bits, foi desenvolvida a codificação UTF-16, que adiciona caracteres adicionais (incluindo cirílico) reduzindo o tamanho da mensagem de 160 para 70; este tipo de codificação quase replica completamente o Unicode.

Dados definidos pelo usuário de 8 bits. Isso inclui KOI8-R e Windows-1251. Embora esta solução pareça mais econômica em comparação com o mesmo UTF-16. Surge uma questão razoável sobre compatibilidade em diferentes dispositivos. Porque neste caso ambos os dispositivos devem ser configurados previamente.

Classe de mensagem

  • Mensagem Class0, ou flash, armazenada na memória do telefone a pedido do usuário;
  • Class1, ou aqueles armazenados na memória do telefone;
  • Class1, ou aqueles armazenados na memória do telefone;
  • A Classe2 deve garantir que a mensagem fica guardada na memória do terminal móvel, caso contrário deverá alertar a central de SMS sobre a impossibilidade de guardar;
  • Classe3 - neste caso, o telefone deve enviar uma notificação de que a mensagem pode ser armazenada, independente da quantidade de memória do aparelho. Este tipo de mensagem implica que a mensagem chegou ao destinatário;

Tipo de mensagem

Mensagem silenciosa (SMS0) Tipo de mensagem SMS sem conteúdo. Este SMS chega sem notificação e não é exibido na tela do aparelho.

PDU

Cada operação pdu é emparelhada e consiste em uma solicitação e uma resposta. Por exemplo: um comando que diz que uma conexão foi estabelecida (bind_transmitter/bind_transmitter_resp), ou que uma mensagem foi transmitida (deliver_sm/deliver_sm_resp)

SMPP - Protocolo ponto a ponto de mensagens curtas

Cada pacote pdu consiste em duas partes – um cabeçalho e um corpo. A estrutura do cabeçalho é a mesma para qualquer pacote pdu: comprimento do comando é o comprimento do pacote, id é o nome do pacote e o comando status indica se a mensagem foi transmitida com sucesso ou com erro.

Parâmetros TLV adicionais

TLV (Tag Length Value) ou campos adicionais. Tais parâmetros são usados ​​para expandir a funcionalidade do protocolo e não são obrigatórios. Este campo aparece no final do campo pdu. Por exemplo, usando o TLV dest_addr_np_information, você pode organizar a transmissão de informações sobre a portabilidade de um número.

Tonelada e Npi

O parâmetro TON (Tipo de Número) informa o SMSC sobre o formato de endereçamento e tipo de rede.
Parâmetro NPI (Identificação do Plano de Numeração) que indica o plano de numeração.

SMPP - Protocolo ponto a ponto de mensagens curtas

Endereço de origem da mensagem ou nome alfa

As mensagens enviadas para o seu telefone vêm em duas variedades: digital e alfabética. Os números digitais podem ser longos (semelhantes a um número de telefone) ou curtos. Às vezes as operadoras têm restrições ao envio de nomes neutros, por exemplo Infosms, Alerta etc. Às vezes, as operadoras não permitem o tráfego se o nome não estiver registrado em sua rede. No entanto, estas são características do operador.

Etapas de envio

SMPP - Protocolo ponto a ponto de mensagens curtas

ENVIAR SMS - isto está enviando uma mensagem MO FSM (mensagem curta de um terminal móvel)
ENVIAR RELATÓRIO POR SMS — confirmação de que a mensagem foi enviada por SMSC
SRI SM (SendRoutingInfo) - SMSC recebe informações do HLR sobre a localização MSC/VLR do assinante
SRI SM RESP - resposta do HLR sobre a posição do assinante
MT-FSM — após receber a localização, uma mensagem é enviada usando a operação “Encaminhar mensagem curta”
ACK MT-FSM — resposta do SMSC de que a mensagem foi enviada
RELATÓRIO DE STATUS DE SMS — SMSC envia o status de entrega da mensagem.

Status de entrega de mensagens

RELATÓRIO DE STATUS DE SMS pode assumir vários valores:
ENTREGAR mensagem entregue com sucesso
REJEITADO — mensagem rejeitada pela central de SMS
EXPIRADO — a mensagem é removida da fila de envio após o término do TTL (tempo de vida da mensagem)
NÃO ENTREGUE - outros casos de não entrega
DESCONHECIDO-nenhuma resposta recebida sobre o envio.

Erros de transferência

Às vezes, há motivos pelos quais as mensagens SMS não são entregues ao assinante. A consequência desses motivos é a ocorrência de erros. Os erros são retornados para PDUs_sms_resp. Todos os erros podem ser divididos em temporários (Temporários) e permanentes (Permanentes).

Por exemplo, absent_subscriber pode ser classificado como temporário - o assinante não está disponível ou não está online, e permanente - o assinante não existe. Dependendo dos erros ocorridos, é formada uma política de reenvio dessas mensagens.

Por exemplo, se o assinante estava ocupado em uma chamada e recebeu o erro O aparelho MT está ocupado, a mensagem pode ser reenviada após alguns minutos, porém, se o serviço de recebimento de mensagens do assinante estiver bloqueado, reenviar novamente não fará sentido. Você pode encontrar uma lista de erros nas páginas do SMSC, por exemplo, como isso.

Fonte: habr.com

Adicionar um comentário