SMPP - Protocole de messages courts d'égal à égal

Bonjour! Bien que les messageries instantanées et les réseaux sociaux remplacent chaque jour les moyens de communication traditionnels, cela n'enlève rien à la popularité des SMS. La vérification sur un site populaire ou une notification de transaction répète qu'ils vivent et vivront. Avez-vous réfléchi à la façon dont tout cela fonctionne? Très souvent, le protocole SMPP est utilisé pour envoyer des messages en masse, dont il sera question plus bas.

Habré avait déjà des articles sur le 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 à partir de la source - spécifications, mais je pense que ce serait bien s'il y avait un résumé de son contenu. Je vais vous expliquer en utilisant la v3.4 comme exemple.Je suis heureux de votre critique objective.

Le protocole SMPP est un protocole de messagerie peer-to-peer. Cela signifie que chaque serveur pair/hub est égal. Dans le cas le plus simple, le schéma de messagerie SMS ressemble à ceci :

SMPP - Protocole de messages courts d'égal à égal

Cependant, si l'opérateur national n'a pas de route, il demande à un intermédiaire de le faire vers une région éloignée - un hub SMS. Parfois, pour envoyer un SMS, il faut construire une chaîne entre plusieurs pays, voire continents.

À propos du protocole

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

Mode de communication

SMPP - Protocole de messages courts d'égal à égal

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

Émetteur (émetteur) - transmission d'un message dans une direction, à tour de rôle
Récepteur (récepteur) - ne reçoit qu'un message du centre SMS.
Transreceiver (émetteur-récepteur) - Échange de messages entre le centre SMS et l'utilisateur

structure

SMPP - Protocole de messages courts d'égal à égal

Longueur des messages

Un message SMS peut contenir 70 caractères lors de la saisie en cyrillique et pas plus de 157 caractères latins + 3 UDH Si vous envoyez un SMS avec un grand nombre de caractères, il sera divisé en plusieurs segments et combiné dans l'appareil récepteur. Dans le cas de la segmentation, le nombre de caractères est réduit par les en-têtes de message, qui indiquent la partie du message. Par conséquent, lors de l'envoi d'un message SMS volumineux, celui-ci 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 de l'encodage - Data Coding Scheme, ou DCS. Il s'agit d'un champ qui spécifie comment les messages doivent être reconnus. De plus, le champ DCS comprend :

  • le jeu de caractères qui définit le codage ;
  • classe de messages ;
  • demande de suppression automatique après lecture ;
  • une indication de la compression du message ;
  • la langue des messages diffusés ;

Alphabet 7 bits standard (GSM 03.38). Il a été développé pour le système de messagerie en GSM. Cet encodage convient à l'anglais et à un certain nombre de langues latines. Chaque caractère se compose de 7 bits et est codé dans un octet.

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

Données définies par l'utilisateur 8 bits. Ceux-ci incluent KOI8-R et Windows-1251. Bien que cette solution semble être plus économique par rapport au même UTF-16. Il y a une question raisonnable de compatibilité sur différents appareils. Puisque dans ce cas, les deux appareils doivent être configurés à l'avance.

Classe de messages

  • Class0, ou flash, un message stocké dans la mémoire du téléphone à la demande de l'utilisateur ;
  • Class1, ou ceux stockés dans la mémoire du téléphone ;
  • Class1, ou ceux stockés dans la mémoire du téléphone ;
  • Class2, doit s'assurer que le message est stocké dans la mémoire du terminal mobile, sinon doit notifier au centre SMS l'impossibilité de sauvegarder ;
  • Class3 - 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 de 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 arrivent sans notification et ne s'affichent pas sur l'écran de l'appareil.

PDU

Chaque opération pdu est appariée et se compose d'une demande et d'une réponse. Par exemple : une commande indiquant qu'une connexion a été établie (bind_transmitter / bind_transmitter_resp) ou qu'un message a été envoyé (deliver_sm / deliver_sm_resp)

SMPP - Protocole de messages courts d'égal à égal

Chaque package pdu se compose de deux parties - un en-tête (en-tête) et un corps (corps). La structure d'en-tête est la même pour n'importe quel paquet pdu : command length est la longueur du paquet, id est le nom du paquet et la commande status indique si le message a été envoyé avec succès ou a échoué.

Paramètres TLV supplémentaires

TLV (Tag Length Value) ou champs supplémentaires. Ces paramètres sont utilisés pour étendre la fonctionnalité du protocole et sont facultatifs. Ce champ est spécifié à la fin du champ pdu. Par exemple, en utilisant le TLV dest_addr_np_information, vous pouvez organiser le transfert d'informations sur le portage du numéro.

Tonne et Npi

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

SMPP - Protocole de messages courts d'égal à égal

Adresse source du message ou nom alphabétique

Les messages envoyés au téléphone sont de deux types : numérique et alphabétique. Les numéros peuvent être longs (semblables à un numéro de téléphone) ou courts. Parfois, les opérateurs ont des restrictions sur l'envoi à partir de noms neutres, tels que Infosms, Alert, etc. Parfois, les opérateurs n'autorisent pas le trafic si le nom n'est pas enregistré sur leur réseau. Cependant, il s'agit plutôt d'une caractéristique de l'opérateur.

Étapes de soumission

SMPP - Protocole de messages courts d'égal à égal

SMS-SOUMETTRE envoie un message MO FSM (message court du terminal mobile)
SMS-SOUMETTRE LE RAPPORT — confirmation que le message a été envoyé par SMSC
ISR SM (SendRoutingInfo) - Le SMSC reçoit des informations du HLR concernant l'emplacement MSC/VLR de l'abonné
ISR REEE SM - réponse de HLR concernant la viande de position d'abonné
MT-FSM - après réception de la position, un message est envoyé à l'aide de l'opération "Transférer un message court"
MT-FSM-ACK — réponse du SMSC indiquant que le message a été envoyé
RAPPORT D'ÉTAT SMS — SMSC envoie l'état de remise du message.

État de livraison des messages

RAPPORT D'ÉTAT SMS peut prendre plusieurs valeurs :
LIVRÉ message livré avec succès
REJETÉ — message rejeté par le centre SMS
EXPIRATION - le message est supprimé de la file d'attente d'envoi après la fin du TTL (durée de vie du message)
UNLIVR - autres cas de non-livraison
INCONNU- Aucune réponse reçue.

Erreurs de transmission

Parfois, les raisons pour lesquelles les messages SMS ne sont pas livrés à l'abonné. La conséquence de ces raisons est l'apparition d'erreurs. Les erreurs sont renvoyées dans PDUs_sms_resp. Toutes les erreurs peuvent être divisées en temporaires (temporaires) et permanentes (permanentes).

Par exemple, absent_subscriber est temporaire, l'abonné n'est pas disponible ou n'est pas en ligne, et permanent - l'abonné n'existe pas. En fonction des erreurs qui se produisent, une politique de renvoi de ces messages est formée.

Par exemple, si l'abonné était occupé à parler et a reçu une erreur de combiné MT occupé, le message peut être renvoyé après quelques minutes, cependant, si l'abonné a bloqué le service de réception de message, le renvoi n'aura aucun sens. Vous pouvez trouver une liste d'erreurs sur les pages SMSC, par exemple, comme ceci.

Source: habr.com

Ajouter un commentaire