# Fundamentos de SMPP

- URL canónico: https://www.broadnet.me/pt/academy/smpp-fundamentals
- Idioma: pt
- Última atualização: 2026-07-18
- Editor: BroadNet (https://www.broadnet.me)
- Versão Markdown da página, gerada a partir da página publicada.

Protocolos Intermediário

O protocolo binário por detrás do SMS de alto volume: tipos de bind, submit_sm, PDUs, a janela de transmissão, relatórios de entrega e keepalives.

5 lições 4 min de leitura Baseado em padrões · ritmo próprio

O que você aprenderá

- O que é o SMPP e a sua posição face a uma API REST
- Os tipos de bind transmissor, recetor e transcetor
- A estrutura de um PDU e os principais campos do submit_sm
- Como a janela de transmissão e o throttling regulam o débito
- Como chegam os relatórios de entrega e como manter uma sessão viva

Descrição do curso

1. 01O que é o SMPP
2. 02Tipos de bind e sessões
3. 03PDUs e o submit_sm
4. 04A janela, o throttling e os keepalives
5. 05Relatórios de entrega via SMPP
6. ★Principais conclusões

[Todos os cursos](https://www.broadnet.me/pt/academy)

Diagrama Uma sessão SMPP entre a sua plataforma e BroadNet

A sua plataforma (ESME)

BroadNet SMSC

Uma conexão TCP/TLS persistente

1. `bind_transceiver` Abrir e autenticar a sessão
2. `bind_transceiver_resp` Sessão aceita
3. `submit_sm` Enviar uma mensagem
4. `submit_sm_resp` Aceito, ID da mensagem devolvida
5. `deliver_sm` Relatório de entrega ou mensagem recebida
6. `deliver_sm_resp` Confirmado
7. `enquire_link` Keepalive em modo ocioso

Lição 01

## O que é o SMPP

O SMPP — Short Message Peer-to-Peer — é o protocolo binário e baseado em sessão que os agregadores e as operadoras disponibilizam para mensagens A2P de alto débito. Onde uma API REST é prática e sem estado, o SMPP é uma ligação TCP persistente construída para volume e baixa latência.

Uma ESME (External Short Messaging Entity — o seu lado) abre uma sessão com o SMSC e troca PDUs (Protocol Data Units). O protocolo é compacto e eficiente, motivo pelo qual continua a ser a espinha dorsal dos grandes remetentes mesmo quando o REST cobre o uso do dia a dia.

A versão mais utilizada é a SMPP v3.4; a v5.0 acrescenta sinalização de estado de congestionamento e parâmetros melhorados, mas é compatível com versões anteriores. Nunca deve assumir que uma funcionalidade da v5.0 está disponível até que a resposta ao bind o confirme.

Lição 02

## Tipos de bind e sessões

Antes de enviar seja o que for, uma ESME tem de fazer bind — autenticar-se e declarar um papel. Um bind de transmissor apenas envia mensagens; um bind de recetor apenas recebe mensagens originadas no telemóvel e relatórios de entrega; um bind de transcetor faz ambos numa única ligação.

O transcetor é normalmente preferido porque reduz a metade o número de ligações e simplifica a correlação dos DLR com as submissões. O número de binds concorrentes e as mensagens por segundo (TPS) por bind são aprovisionados pelo fornecedor e têm de ser respeitados.

O bind transporta um system_id, password, system_type e address_range. Um address_range incompatível quebra silenciosamente o encaminhamento de MO e DLR em binds de recetor — um erro de integração clássico que não produz erros, apenas tráfego em falta.

Lição 03

## PDUs e o submit_sm

Cada interação SMPP é um PDU com um cabeçalho de comando (comprimento, id de comando, estado, número de sequência) e um corpo. O cavalo de batalha é o submit_sm, que transporta uma única mensagem de saída.

Dois pares de campos decidem o endereçamento: source_addr com o seu TON/NPI (tipo de número / indicador do plano de numeração) e dest_addr com o seu próprio. Um sender ID alfanumérico usa TON 5; um MSISDN internacional usa TON 1, NPI 1. Errar isto faz com que o sender ID seja apresentado incorretamente ou a mensagem seja rejeitada.

O campo data_coding define a codificação — GSM de 7 bits (0), 8 bits (4), ou UCS-2 (8) para Unicode. As mensagens longas são concatenadas com bytes UDH no corpo ou com os parâmetros opcionais SAR (sar_msg_ref_num, sar_total_segments, sar_segment_seqnum); escolha um método e mantenha-o consistente, porque as rotas diferem quanto ao que aceitam.

Lição 04

## A janela, o throttling e os keepalives

O SMPP usa uma janela de transmissão: um limite ao número de PDUs submit_sm enviados antes de as respetivas respostas regressarem. Exceder a janela, ou o TPS aprovisionado, desencadeia o ESME_RTHROTTLED (0x58). A resposta correta é recuar com jitter, não repetir tentativas em ciclo contínuo.

Para detetar uma ligação TCP semiaberta, cada lado envia enquire_link num temporizador de inatividade (normalmente a cada 30–60 segundos) e espera um enquire_link_resp. Uma resposta em falta significa que a sessão está morta e deve ser refeito o bind com recuo exponencial.

O encerramento controlado usa unbind / unbind_resp. As desconexões inesperadas devem desencadear uma reconexão com recuo e novas tentativas idempotentes, para que uma janela perdida não cause submissões duplicadas e faturação duplicada.

Lição 05

## Relatórios de entrega via SMPP

Os relatórios de entrega chegam como PDUs deliver_sm. O texto do recibo no campo short_message transporta id, sub, dlvrd, a data de submissão, a data de conclusão, o estado final (DELIVRD, UNDELIV, EXPIRED, REJECTD) e um código de erro.

Correlacione o DLR com a sua submissão original usando o message_id do fornecedor, não apenas o texto do recibo — o message_id pode ser devolvido em hexadecimal no submit_resp mas em decimal no DLR, por isso normalize ambos os formatos.

Responda sempre com um deliver_sm_resp. Um DLR não confirmado é reenviado pelo SMSC e pode bloquear a janela de receção, por isso confirme prontamente mesmo que o processamento a jusante seja assíncrono.

Principais conclusões

- O SMPP é uma sessão binária persistente para A2P de alto volume; a v3.4 é a base comum, a v5.0 é compatível com versões anteriores.
- Faça bind como transmissor, recetor ou transcetor; o transcetor reduz a metade as ligações e facilita a correlação de DLR.
- O TON/NPI decide a apresentação do sender ID e o data_coding decide a codificação — ambos são fáceis de errar.
- Respeite a janela e o TPS, recue perante o ESME_RTHROTTLED, e mantenha a sessão viva com enquire_link.

Continue

### Respostas, produtos e ferramentas relacionados

- [O que é o SMPP?](https://www.broadnet.me/pt/answers/what-is-smpp)
- [SMPP 3.4 vs 5.0](https://www.broadnet.me/pt/answers/smpp-3-4-vs-5-0)
- [REST vs SMPP](https://www.broadnet.me/pt/compare/sms-api-vs-smpp)
- [Consulta de códigos de erro SMPP (ferramenta gratuita)](https://www.broadnet.me/pt/tools/smpp-error-codes)
- [Descodificador de DLR (ferramenta gratuita)](https://www.broadnet.me/pt/tools/dlr-decoder)
- [Documentação para programadores](https://www.broadnet.me/pt/developers)

Referências

- [Especificação SMPP v3.4](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)
- [Especificação SMPP v5.0](https://smpp.org/SMPP_v5.pdf)

A seguir no currículo

[Intermediário · Encaminhamento e Qualidade Encaminhamento de SMS e Least-Cost Routing Como as mensagens encontram um caminho até à rede de destino — rotas diretas, rotas cinzentas, encaminhamento de menor custo e comutação por qualidade.](https://www.broadnet.me/pt/academy/sms-routing-and-least-cost-routing) [Intermediário · Verificação OTP e Verificação de Número Como funcionam as palavras-passe de uso único e a verificação de número — TOTP/HOTP, canais de entrega e recurso alternativo, convenções de preenchimento automático, e defesa contra AIT.](https://www.broadnet.me/pt/academy/otp-and-number-verification)

Coloque em prática

## Construa com base no que você acabou de aprender.

Fale com um engenheiro de verdade sobre o seu caso de uso ou abra a documentação para desenvolvedores e envie uma mensagem pelos canais descritos neste curso.

[Fale com a equipa de engenharia.](https://www.broadnet.me/pt/contact) [Documentação para desenvolvedores](https://www.broadnet.me/pt/developers)

Porque aprender com BroadNet

- Desde 2003
- Países 200+
- Links do operador 1,000+
