SMPP - Protocole de message court d'égal à égal

Salut Bien que les messagers et les réseaux sociaux évincent tous les jours les méthodes de communication traditionnelles, cela n'enlève rien à la popularité des SMS. La vérification sur un site populaire, ou notification de transaction, démontre qu'ils vivent et vivront. Vous êtes-vous déjà demandé comment tout cela fonctionne? Très souvent, SMPP est utilisé pour envoyer des messages de masse, qui seront discutés sous le chat.

Il y avait déjà des articles sur Habr sur smpp, 1 , 2 , mais leur but n'était pas de décrire le protocole lui-même. Bien sûr, vous pouvez immédiatement commencer par la source principale - la spécification , mais je pense que ce serait bien d'avoir un bref résumé. Je vais vous expliquer avec un exemple v3.4 je suis content de votre critique objective.

SMPP est un protocole de messagerie d'égal à égal. Cela signifie que chaque serveur homologue / concentrateur est égal. Dans le cas le plus simple, le schéma de messagerie SMS ressemble à ceci:

image

Cependant, si l'opérateur national n'a pas de route vers une région éloignée, il demande cet intermédiaire - hub SMS. Parfois, pour envoyer un SMS, vous devez créer une chaîne entre plusieurs pays, voire des continents.

À propos du protocole


SMPP est un protocole de couche application basé sur l'échange de PDU et transmis via des sessions TCP / IP ou X25 pour l'envoi de sms et de messages ussd. SMPP est généralement utilisé en mode de connexion constante, ce qui permet de gagner du temps. SMPP utilise un modèle de communication client-serveur.

Mode de communication


image

L'échange de messages entre l'expéditeur et SMSC via SMPP peut être effectué dans les modes suivants:

Émetteur (émetteur) - transmission d'un message dans un sens, alternativement
Destinataire (récepteur) - ne reçoit que des messages de SMSC.
Transreceiver (transceiver) - Messagerie entre SMSC et utilisateur

La structure


image

Longueur du message


Un SMS peut contenir 70 caractères lors de la saisie en cyrillique et pas plus de 157 caractères latins + 3 UDH si envoyé. SMS avec un grand nombre de caractères, il sera divisé en plusieurs segments et combiné dans l'appareil récepteur. En cas de segmentation, le nombre de caractères est réduit du fait des en-têtes du message dans lesquels la partie du message est indiquée. Par conséquent, lors de l'envoi d'un SMS volumineux, il contient au maximum 153 caractères latins ou 67 caractères atypiques.

Schéma de codage des données


Cependant, les caractères doivent être codés pour transmettre un message. Dans le protocole SMPP, un champ spécial est responsable du codage - Data Coding Scheme, ou DCS. Il s'agit d'un champ qui indique comment les messages doivent être reconnus. De plus, le champ DCS comprend:

  • le jeu de caractères qui définit le codage;
  • message de classe;
  • demande de suppression automatique après lecture;
  • indication de compression de message;
  • langue de diffusion;

Alphabet 7 bits standard (GSM 03.38). Il a été développé pour le système de messagerie GSM. Un tel codage convient à l'anglais et à certaines langues latines. Chaque caractère se compose de 7 bits et est codé en octet.

UTF-16 (dans GSM UCS2) Pour inclure les caractères manquants dans l'encodage 7 bits, l'encodage UTF-16 a été développé qui ajoute des caractères supplémentaires (y compris cyrillique) en réduisant la taille du message de 160 à 70, ce type d'encodage se répète presque complètement Unicode

Données définies par l'utilisateur 8 bits. Il s'agit notamment du KOI8-R et de Windows-1251. Bien que cette solution semble être plus économique par rapport au même UTF-1, pour utiliser de tels codages, une configuration préliminaire sur les dispositifs de réception et d'émission est requise. Si sur certains d'entre eux les données d'encodage ne sont pas prises en charge, le message ne s'affichera pas correctement. Dans ce cas, les deux appareils doivent être configurés à l'avance.

Messages de classe


  • Classe0, ou flash, un message stocké dans la mémoire du téléphone à la demande de l'utilisateur;
  • Class1, ou ceux stockés dans le téléphone;
  • Classe2, doit s'assurer que le message est stocké dans la mémoire du terminal mobile, sinon il doit donner des alertes SMSC sur l'impossibilité de sauvegarder;
  • Classe 3 - dans ce cas, le téléphone doit envoyer une notification indiquant que le message peut être enregistré, quelle que soit la quantité de mémoire dans l'appareil. Ce type de message implique que le message a atteint sa destination;

Type de message


Message silencieux (SMS0) Type de message SMS sans contenu. Ces SMS sont livrés sans préavis et ne sont pas affichés sur l'écran de l'appareil.

PDU


Chaque opération pdu est couplée et se compose d'une demande et d'une réponse. Par exemple: une commande qui dit sur l'établissement d'une connexion (bind_transmitter / bind_transmitter_resp), ou que le message a été transmis (Deliver_sm / Deliver_sm_resp)

image

Chaque paquet pdu se compose de deux parties - un en-tête et un corps. La structure d'en-tête est la même pour tout paquet pdu: la longueur de la commande est la longueur du paquet, id est le nom du paquet et la commande d'état affiche un message transmis avec succès ou avec une erreur.

Options TLV avancées


TLV (Tag Length Value) ou champs facultatifs. Ces paramètres sont utilisés pour étendre les fonctions du protocole et ne sont pas nécessaires. Ce champ est indiqué à la fin du champ pdu. Par exemple, à l'aide de TLV dest_addr_np_information, vous pouvez organiser le transfert d'informations sur le portage d'un numéro.

Ton et Npi


Le paramètre TON (Type of Number), informe le SMSC du format d'adressage et du type de réseau.
Paramètre NPI (Numbering Plan Identification) indiquant le plan de numérotation.

image

Adresse de la source du message ou nom alpha


Les messages envoyés au téléphone se présentent sous deux formes: numérique et alphabétique. Le numérique peut être long (semblable à un numéro de téléphone) et court. Parfois, les opérateurs ont des restrictions sur l'envoi à partir de noms neutres, par exemple Infosms, Alert, etc. Parfois, les opérateurs n'autorisent pas le trafic si le nom n'est pas enregistré sur leur réseau. Cependant, ce sont des fonctionnalités d'opérateur plus probables.

Étapes d'expédition


image

SMS-SUBMIT envoie un message MO FSM (message court depuis un terminal mobile)
SMS-SUBMIT REPORT - confirmation que le message a été envoyé par SMSC
SRI SM (SendRoutingInfo) - SMSC reçoit des informations du HLR concernant le MSC / VLR de l'emplacement de l'abonné
SRI SM RESP - réponse du HLR concernant le poste d'abonné viande
MT-FSM - après réception de la position, un message est envoyé à l'aide de l'opération "Forward Short Message"
MT-FSM ACK - réponse de SMSC qu'un message a été envoyé
RAPPORT D'ÉTAT SMS - SMSC envoie l'état de remise des messages.

Statut de remise des messages


SMS-STATUS REPORT peut prendre plusieurs valeurs:
Message DELIVRD livré avec succès
REJECTD - message rejeté par le centre SMS
EXPIRÉ - le message est supprimé de la file d'attente d'envoi après la fin de TTL (durée de vie du message)
UNDELIV - autres cas de non-livraison
INCONNU - aucune réponse d'envoi reçue.

Erreurs de transmission


Parfois, les messages ne sont pas remis. En conséquence, des erreurs se produisent. Les erreurs sont renvoyées à PDUs_sms_resp. Toutes les erreurs peuvent être divisées en temporaires (temporaires) et permanentes (permanentes).

A titre d'exemple, les temporaires sont absent_subscriber, l'abonné n'est pas disponible ou pas sur le réseau, et l'abonné permanent n'existe pas. En fonction des erreurs qui se produisent, une stratégie de transfert de ces messages est formée.

Par exemple, si un abonné était occupé à parler et a reçu un combiné MT est une erreur occupée, le message peut être envoyé à nouveau après quelques minutes, cependant, si l'abonné a un service de messagerie bloqué, le renvoi ne sera pas logique. Vous pouvez trouver la liste des erreurs sur les pages SMSC, par exemple, comme ceci .

Source: https://habr.com/ru/post/fr452842/


All Articles