# Fundamentos de SMPP

- URL canónica: https://www.broadnet.me/es/academy/smpp-fundamentals
- Idioma: es
- Última actualización: 2026-07-18
- Editor: BroadNet (https://www.broadnet.me)
- Versión Markdown de la página, generada a partir de la página publicada.

Protocolos Intermedio

El protocolo binario detrás del SMS de alto volumen: tipos de bind, submit_sm, PDU, la ventana de transmisión, las confirmaciones de entrega y los keepalives.

5 lecciones 4 min de lectura Basado en estándares · a su propio ritmo

Lo que aprenderás

- Qué es SMPP y cómo se sitúa frente a una API REST
- Los tipos de bind transmisor, receptor y transceptor
- La estructura de un PDU y los campos clave de submit_sm
- Cómo gobiernan el rendimiento la ventana de transmisión y el throttling
- Cómo llegan las confirmaciones de entrega y cómo mantener viva una sesión

Programa del curso

1. 01Qué es SMPP
2. 02Tipos de bind y sesiones
3. 03PDU y el submit_sm
4. 04La ventana, el throttling y los keepalives
5. 05Confirmaciones de entrega sobre SMPP
6. ★Conclusiones clave

[Todos los cursos](https://www.broadnet.me/es/academy)

Diagrama Una sesión SMPP entre su plataforma y BroadNet

Su plataforma (ESME)

BroadNet SMSC

Una conexión TCP/TLS persistente

1. `bind_transceiver` Abrir y autenticar la sesión
2. `bind_transceiver_resp` Sesión aceptada
3. `submit_sm` Enviar un mensaje
4. `submit_sm_resp` Aceptado, ID de mensaje devuelto
5. `deliver_sm` Confirmación de entrega o mensaje entrante
6. `deliver_sm_resp` Confirmado
7. `enquire_link` Keepalive en estado de inactividad

Lección 01

## Qué es SMPP

SMPP — Short Message Peer-to-Peer — es el protocolo binario y basado en sesiones que los agregadores y operadores exponen para la mensajería A2P de alto rendimiento. Mientras que una API REST es cómoda y sin estado, SMPP es una conexión TCP persistente construida para el volumen y la baja latencia.

Un ESME (External Short Messaging Entity — su lado) abre una sesión con el SMSC e intercambia PDU (Protocol Data Units). El protocolo es compacto y eficiente, razón por la cual sigue siendo la columna vertebral de los grandes remitentes incluso cuando REST cubre el uso cotidiano.

La versión más ampliamente desplegada es SMPP v3.4; la v5.0 añade señalización del estado de congestión y parámetros mejorados, pero es compatible hacia atrás. Nunca debe asumirse que una función de v5.0 está disponible hasta que la respuesta del bind confirme la versión negociada.

Lección 02

## Tipos de bind y sesiones

Antes de enviar nada, un ESME debe hacer bind — autenticarse y declarar un rol. Un bind de transmisor solo envía mensajes; un bind de receptor solo recibe mensajes originados en el móvil y confirmaciones de entrega; un bind de transceptor hace ambas cosas sobre una sola conexión.

El transceptor suele preferirse porque reduce a la mitad el número de conexiones y simplifica la correlación de los DLR con los envíos. El número de binds concurrentes y los mensajes por segundo por bind (TPS) los aprovisiona el proveedor y deben respetarse.

El bind transporta un system_id, una contraseña, un system_type y un address_range. Un address_range mal configurado rompe silenciosamente el enrutamiento de MO y DLR en los binds de receptor — un error clásico de integración que no produce errores, solo tráfico ausente.

Lección 03

## PDU y el submit_sm

Cada interacción de SMPP es un PDU con una cabecera de comando (longitud, id de comando, estado, número de secuencia) y un cuerpo. El caballo de batalla es submit_sm, que transporta un único mensaje saliente.

Dos pares de campos deciden el direccionamiento: source_addr con su TON/NPI (tipo de número / indicador del plan de numeración) y dest_addr con el suyo propio. Un sender ID alfanumérico usa TON 5; un MSISDN internacional usa TON 1, NPI 1. Si se configuran mal, el sender ID se muestra incorrectamente o el mensaje se rechaza.

El campo data_coding define la codificación — GSM de 7 bits (0), 8 bits (4) o UCS-2 (8) para Unicode. Los mensajes largos se concatenan con bytes UDH en el cuerpo o con los parámetros opcionales SAR (sar_msg_ref_num, sar_total_segments, sar_segment_seqnum); elija un método y manténgalo, porque las rutas difieren en cuál aceptan.

Lección 04

## La ventana, el throttling y los keepalives

SMPP utiliza una ventana de transmisión: un límite al número de PDU submit_sm enviados antes de que regresen sus respuestas. Superar la ventana, o el TPS aprovisionado, dispara ESME_RTHROTTLED (0x58). La respuesta correcta es reducir el ritmo con jitter, no reintentar en bucle.

Para detectar una conexión TCP semiabierta, cada lado envía enquire_link con un temporizador de inactividad (habitualmente cada 30-60 segundos) y espera un enquire_link_resp. Una respuesta ausente significa que la sesión está muerta y debe rehacerse el bind con retroceso exponencial.

El cierre ordenado usa unbind / unbind_resp. Las desconexiones inesperadas deben desencadenar una reconexión con retroceso y reintentos idempotentes, para que una ventana caída no cause envíos duplicados ni facturación doble.

Lección 05

## Confirmaciones de entrega sobre SMPP

Las confirmaciones de entrega llegan como PDU deliver_sm. El texto del recibo en el campo short_message transporta id, sub, dlvrd, fecha de envío, fecha de finalización, el stat terminal (DELIVRD, UNDELIV, EXPIRED, REJECTD) y un código err.

Correlacione el DLR con su envío original usando el message_id del proveedor, no solo el texto del recibo — el message_id puede devolverse en hexadecimal en submit_resp pero en decimal en el DLR, así que normalice ambos formatos.

Responda siempre con un deliver_sm_resp. Un DLR no confirmado se reenvía por el SMSC y puede bloquear la ventana de recepción, así que confírmelo con prontitud aunque su procesamiento posterior sea asíncrono.

Conclusiones clave

- SMPP es una sesión binaria persistente para A2P de alto volumen; v3.4 es la base común, v5.0 es compatible hacia atrás.
- Haga bind como transmisor, receptor o transceptor; el transceptor reduce a la mitad las conexiones y facilita la correlación de DLR.
- TON/NPI deciden cómo se muestra el sender ID y data_coding decide la codificación — ambos son fáciles de configurar mal.
- Respete la ventana y el TPS, reduzca el ritmo ante ESME_RTHROTTLED y mantenga la sesión viva con enquire_link.

Sigue adelante

### Respuestas, productos y herramientas relacionados

- [¿Qué es SMPP?](https://www.broadnet.me/es/answers/what-is-smpp)
- [SMPP 3.4 frente a 5.0](https://www.broadnet.me/es/answers/smpp-3-4-vs-5-0)
- [REST frente a SMPP](https://www.broadnet.me/es/compare/sms-api-vs-smpp)
- [Buscador de códigos de error de SMPP (herramienta gratuita)](https://www.broadnet.me/es/tools/smpp-error-codes)
- [Decodificador de DLR (herramienta gratuita)](https://www.broadnet.me/es/tools/dlr-decoder)
- [Documentación para desarrolladores](https://www.broadnet.me/es/developers)

Referencias

- [Especificación SMPP v3.4](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)
- [Especificación SMPP v5.0](https://smpp.org/SMPP_v5.pdf)

A continuación, en el plan de estudios

[Intermedio · Enrutamiento y calidad Enrutamiento de SMS y enrutamiento de menor coste Cómo encuentran los mensajes un camino hacia la red de destino — rutas directas, rutas grises, el enrutamiento de menor coste y la conmutación por error basada en calidad.](https://www.broadnet.me/es/academy/sms-routing-and-least-cost-routing) [Intermedio · Verificación OTP y verificación de números Cómo funcionan las contraseñas de un solo uso y la verificación de números — TOTP/HOTP, canales de entrega y respaldo, convenciones de autocompletado, y defensa contra el AIT.](https://www.broadnet.me/es/academy/otp-and-number-verification)

Ponlo en práctica

## Construye con lo que acabas de aprender.

Habla con un ingeniero profesional sobre tu caso de uso, o abre la documentación para desarrolladores y envía un mensaje a través de las rutas que se describen en este curso.

[Habla con ingeniería](https://www.broadnet.me/es/contact) [Documentación para desarrolladores](https://www.broadnet.me/es/developers)

¿Por qué aprender de BroadNet

- Desde 2003
- Países 200+
- Enlaces del operador 1,000+
