SMPP - Protocolo de mensajes cortos punto a punto

¡Hola! Aunque la mensajería instantánea y las redes sociales están reemplazando a los métodos tradicionales de comunicación todos los días, esto no resta popularidad a los SMS. La verificación en un sitio popular o una notificación de transacción repite que viven y vivirán. ¿Has pensado en cómo funciona todo? Muy a menudo, el protocolo SMPP se usa para enviar mensajes masivos, que se discutirán en el corte.

Habré ya tenía artículos sobre smpp, 1,2, pero su propósito no era describir el protocolo en sí. Por supuesto, puede comenzar inmediatamente desde la fuente: especificaciones, pero creo que sería bueno que hubiera un resumen de su contenido. Lo explicaré usando v3.4 como ejemplo. Me alegro por su crítica objetiva.

El protocolo SMPP es un protocolo de mensajería punto a punto. Esto significa que todos los servidores peer/hub son iguales. En el caso más simple, el esquema de mensajería SMS se ve así:

SMPP - Protocolo de mensajes cortos punto a punto

Sin embargo, si el operador nacional no tiene una ruta, le pide a un intermediario que la lleve a alguna región remota: un centro de SMS. A veces, para enviar un SMS, debe construir una cadena entre varios países o incluso continentes.

Sobre el protocolo

SMPP es un protocolo de capa de aplicación que se basa en el intercambio de PDU y se transmite sobre sesiones TCP/IP o X25 para el envío de mensajes sms y ussd. Por lo general, SMPP se usa en el modo de conexión persistente, lo que ahorra tiempo. SMPP utiliza un modelo de comunicación cliente-servidor.

Modo de comunicación

SMPP - Protocolo de mensajes cortos punto a punto

El intercambio de mensajes entre el remitente y el centro de SMS a través de SMPP se puede realizar de las siguientes formas:

Transmisor (transmisor): transmisión de un mensaje en una dirección, a su vez
Receptor (receptor): solo recibe un mensaje del centro de SMS.
Transreceiver (transceptor): intercambio de mensajes entre el centro de SMS y el usuario

Estructura

SMPP - Protocolo de mensajes cortos punto a punto

Longitud del mensaje

Un mensaje SMS puede contener 70 caracteres cuando se escribe en cirílico y no más de 157 caracteres latinos + 3 UDH. Si envía un SMS con una gran cantidad de caracteres, se dividirá en varios segmentos y se combinará en el dispositivo receptor. En el caso de la segmentación, el número de caracteres se reduce por las cabeceras de los mensajes, que indican la parte del mensaje. Por lo tanto, al enviar un mensaje SMS grande, contiene un máximo de 153 caracteres latinos o 67 caracteres atípicos.

Esquema de codificación de datos

Sin embargo, los caracteres deben codificarse para transmitir un mensaje. En el protocolo SMPP, un campo especial es responsable de la codificación: esquema de codificación de datos o DCS. Este es un campo que especifica cómo se deben reconocer los mensajes. Además, el campo DCS incluye:

  • el conjunto de caracteres que define la codificación;
  • clase de mensaje;
  • solicitud de eliminación automática después de la lectura;
  • una indicación de la compresión del mensaje;
  • idioma de los mensajes de difusión;

Alfabeto estándar de 7 bits (GSM 03.38). Fue desarrollado para el sistema de mensajería en GSM. Esta codificación es adecuada para inglés y varios idiomas latinos. Cada carácter consta de 7 bits y está codificado en un octeto.

UTF-16 (en GSM UCS2) Para incluir los caracteres que faltan en el alfabeto de 7 bits, se desarrolló la codificación UTF-16, que agrega caracteres adicionales (incluidos los cirílicos) al reducir el tamaño del mensaje de 160 a 70. Este tipo de codificación repite casi por completo Unicode.

Datos definidos por el usuario de 8 bits. Estos incluyen KOI8-R y Windows-1251. Aunque esta solución parece ser más económica en comparación con el mismo UTF-16. Hay una cuestión razonable de compatibilidad en diferentes dispositivos. Ya que en este caso ambos dispositivos deben estar configurados previamente.

clase de mensaje

  • Class0, o flash, un mensaje almacenado en la memoria del teléfono a petición del usuario;
  • Class1, o los almacenados en la memoria del teléfono;
  • Class1, o los almacenados en la memoria del teléfono;
  • Class2, debe asegurarse de que el mensaje se almacene en la memoria del terminal móvil, de lo contrario debe dar notificaciones al centro de SMS sobre la imposibilidad de guardar;
  • Class3: en este caso, el teléfono debe enviar una notificación de que el mensaje se puede guardar, independientemente de la cantidad de memoria en el dispositivo. Este tipo de mensaje implica que el mensaje ha llegado a su destino;

Tipo de mensaje

Mensaje silencioso (SMS0) Tipo de mensaje SMS sin contenido. Dichos SMS llegan sin notificación y no se muestran en la pantalla del dispositivo.

PDU

Cada operación de pdu está emparejada y consta de una solicitud y una respuesta. Por ejemplo: un comando que dice que se ha establecido una conexión (bind_transmitter / bind_transmitter_resp), o que se ha enviado un mensaje (deliver_sm / deliver_sm_resp)

SMPP - Protocolo de mensajes cortos punto a punto

Cada paquete pdu consta de dos partes: un encabezado (encabezado) y un cuerpo (cuerpo). La estructura del encabezado es la misma para cualquier paquete PDU: la longitud del comando es la longitud del paquete, la id es el nombre del paquete y el comando de estado indica si el mensaje se envió correctamente o falló.

Parámetros TLV adicionales

TLV (Valor de longitud de etiqueta) o campos adicionales. Dichos parámetros se utilizan para ampliar la funcionalidad del protocolo y son opcionales. Este campo se especifica al final del campo pdu. Como ejemplo, utilizando el TLV dest_addr_np_information, puede organizar la transferencia de información sobre la portabilidad del número.

Tonelada y Npi

El parámetro TON (Tipo de número) informa al SMSC sobre el formato de direccionamiento y el tipo de red.
Parámetro NPI (Identificación del plan de numeración) que indica el plan de numeración.

SMPP - Protocolo de mensajes cortos punto a punto

Dirección de origen del mensaje o nombre alfabético

Los mensajes enviados al teléfono vienen en dos variedades: numéricos y alfabéticos. Los números pueden ser largos (similares a un número de teléfono) o cortos. A veces, los operadores tienen restricciones para enviar desde nombres neutrales, como Infosms, Alert, etc. A veces los operadores no permiten el tráfico si el nombre no está registrado en su red. Sin embargo, esto es más una característica del operador.

Etapas de presentación

SMPP - Protocolo de mensajes cortos punto a punto

SMS-ENVIAR está enviando mensaje MO FSM (mensaje corto desde terminal móvil)
SMS-ENVIAR INFORME — confirmación de que el mensaje fue enviado por SMSC
SRI-SM (SendRoutingInfo): el SMSC recibe información del HLR sobre la ubicación del MSC/VLR del suscriptor.
RESP SRI SM — respuesta de HLR con respecto a la carne de posición del suscriptor
MT-FSM - después de recibir la ubicación, se envía un mensaje utilizando la operación "Reenviar mensaje corto"
MT-FSM-ACK — respuesta de SMSC de que el mensaje ha sido enviado
INFORME DE ESTADO SMS — SMSC envía el estado de entrega del mensaje.

Estado de entrega de mensajes

INFORME DE ESTADO SMS puede tomar varios valores:
ENTREGA mensaje entregado con exito
RECHAZADO — mensaje rechazado por el centro SMS
MUERTO - el mensaje se elimina de la cola de envío después del final del TTL (vida útil del mensaje)
UNDELIV - otros casos de falta de entrega
DESCONOCIDO- No se recibió respuesta.

Errores de transmisión

A veces, las razones por las cuales los mensajes SMS no se entregan al suscriptor. La consecuencia de estos motivos es la aparición de errores. Los errores se devuelven en PDUs_sms_resp. Todos los errores se pueden dividir en temporales (Temporal) y permanentes (Permanent).

Como ejemplo, absent_subscriber es temporal, el suscriptor no está disponible o no está en línea, y permanente: el suscriptor no existe. Dependiendo de los errores que ocurran, se forma una política para reenviar estos mensajes.

Por ejemplo, si el suscriptor estaba ocupado hablando y recibió un error de teléfono MT ocupado, el mensaje puede reenviarse después de unos minutos; sin embargo, si el suscriptor ha bloqueado el servicio de recepción de mensajes, el reenvío no tendrá sentido. Puede encontrar una lista de errores en las páginas de SMSC, por ejemplo, como este.

Fuente: habr.com

Añadir un comentario