Bonjour ! Bien que les messageries et les rĂ©seaux sociaux remplacent peu Ă peu les mĂ©thodes de communication traditionnelles, cela n'altĂšre en rien la popularitĂ© des SMS. La vĂ©rification sur un site populaire, ou l'annonce d'une transaction, se fait toujours par ce biais et continuera de le faire. Mais vous ĂȘtes-vous dĂ©jĂ demandĂ© comment cela fonctionne ? TrĂšs souvent, le protocole SMPP est utilisĂ© pour l'envoi de messages en masse, et c'est de cela dont nous parlerons ci-dessous.
Sur Habr, il y a dĂ©jĂ eu des articles sur le SMPP, ,, mais leur objectif n'Ă©tait pas de dĂ©crire le protocole lui-mĂȘme. Bien sĂ»r, vous pouvez commencer directement avec la source primaire â , mais je pense qu'il serait bon qu'il existe un rĂ©sumĂ© succinct. Je vais expliquer avec l'exemple de la version 3.4. J'apprĂ©cie vos critiques objectives.
Le protocole SMPP est un protocole de messages peer-to-peer. Cela signifie que chaque pair/hub serveur est égal. Dans le cas le plus simple, le schéma d'échange de messages SMS ressemble à ceci :

Cependant, si l'opĂ©rateur national n'a pas de route vers une rĂ©gion Ă©loignĂ©e, il demande cela Ă un intermĂ©diaire â un hub SMS. Parfois, pour envoyer un seul SMS, il faut Ă©tablir une chaĂźne entre plusieurs pays, voire continents.
Ă propos du protocole
Le SMPP est un protocole de niveau applicatif basé sur l'échange de PDU et est transmis sur TCP/IP ou des sessions X.25 pour la transmission de messages SMS et USSD. En général, le SMPP est utilisé en mode de connexion permanente, ce qui permet d'économiser du temps. Le SMPP utilise un modÚle de communication client-serveur.
Mode de communication

L'échange de messages entre l'expéditeur et le centre SMS via SMPP peut se faire dans les modes suivants :
Transmitter (Ă©metteur) â transmission de messages dans une seule direction, de maniĂšre sĂ©quentielle
Receiver (rĂ©cepteur) â uniquement la rĂ©ception de messages du centre SMS.
Transreceiver (Ă©metteur-rĂ©cepteur) â Ăchange de messages entre le centre SMS et l'utilisateur
Structure

Longueur du message
Un SMS peut contenir 70 caractĂšres 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 reconstituĂ© sur l'appareil rĂ©cepteur. En cas de segmentation, le nombre de caractĂšres est rĂ©duit Ă cause des en-tĂȘtes de message qui indiquent la partie du message. Ainsi, lors de l'envoi d'un long SMS, il contient au maximum 153 caractĂšres latins ou 67 caractĂšres non standard.
Data Coding Scheme
Cependant, pour transmettre un message, les caractĂšres doivent ĂȘtre encodĂ©s. Dans le protocole SMPP, l'encodage est gĂ©rĂ© par un champ spĂ©cial â Data Coding Scheme, ou DCS. Ce champ indique comment les messages doivent ĂȘtre reconnus. De plus, le champ DCS comprend :
- un ensemble de caractÚres qui définit l'encodage ;
- la classe du message ;
- une demande de suppression automatique aprĂšs lecture ;
- une indication de compression du message ;
- la langue du message diffusé ;
L'alphabet standard à 7 bits (GSM 03.38). Il a été développé pour le systÚme de messagerie GSM. Cet encodage convient à l'anglais et à plusieurs langues latines. Chaque caractÚre est composé de 7 bits et est codé en octet.
UTF-16 (dans GSM UCS2) Pour inclure les caractÚres manquants de l'alphabet à 7 bits, un encodage UTF-16 a été développé, qui ajoute des caractÚres supplémentaires (y compris cyrilliques) en réduisant la taille du message de 160 à 70 ; ce type d'encodage reprend presque entiÚrement Unicode.
des donnĂ©es utilisateur de 8 bits. Cela inclut KOI8-R et Windows-1251. Bien que cette solution semble plus Ă©conomique par rapport Ă UTF-16, il existe une question raisonnable de compatibilitĂ© sur diffĂ©rents appareils. Dans ce cas, les deux appareils doivent ĂȘtre prĂ©alablement configurĂ©s.
La classe du message
- Class0, ou flash, un message qui est stocké dans la mémoire du téléphone à la demande de l'utilisateur ;
- Class1, ou ceux qui sont stockés dans la mémoire du téléphone ;
- Class1, ou ceux qui sont stockés dans la mémoire du téléphone ;
- Class2, qui doit garantir que le message sera enregistré dans la mémoire du terminal mobile, sinon il doit alerter le SMS center de l'impossibilité de sauvegarde ;
- Class3 â dans ce cas, le tĂ©lĂ©phone doit envoyer une notification que le message peut ĂȘtre enregistrĂ©, indĂ©pendamment de la quantitĂ© de mĂ©moire dans l'appareil. Ce type de message implique que le message a atteint le destinataire ;
Type de message
Message silencieux (SMS0) Type de message SMS sans contenu. Ce type de SMS arrive sans notification et n'apparaßt pas à l'écran de l'appareil.
PDU
Chaque opération PDU est paire et se compose d'une demande et d'une réponse. Par exemple : une commande indiquant l'établissement d'une connexion (bind_transmitter / bind_transmitter_resp), ou que le message a été transmis (deliver_sm / deliver_sm_resp)

Chaque paquet PDU se compose de deux parties : un en-tĂȘte (header) et un corps (body). La structure de l'en-tĂȘte est la mĂȘme pour tout paquet PDU : la longueur de la commande (command length) correspond Ă la longueur du paquet, l'identifiant (id) est le nom du paquet, et la commande status indique si le message a Ă©tĂ© transmis avec succĂšs ou avec une erreur.
ParamÚtres TLV supplémentaires
TLV (Tag Length Value), ou champs supplémentaires. Ces paramÚtres sont utilisés pour étendre les fonctionnalités du protocole et ne sont pas obligatoires. Ce champ est indiqué à la fin du champ PDU. Par exemple, en utilisant le TLV dest_addr_np_information, on peut organiser la transmission d'informations sur la portabilité du numéro.
Ton et Npi
Le paramÚtre TON (Type of Number) informe le SMSC sur le format de l'adressage et le type de réseau.
Le paramÚtre NPI (Numbering Plan Identification) indique le plan de numérotation.

Adresse de l'expéditeur du message, ou nom alpha
Les messages envoyĂ©s au tĂ©lĂ©phone se dĂ©clinent en deux types : numĂ©riques et alphabĂ©tiques. Les messages numĂ©riques peuvent ĂȘtre longs (similaires Ă un numĂ©ro de tĂ©lĂ©phone) ou courts. Parfois, les opĂ©rateurs imposent des restrictions sur l'envoi de noms neutres, tels que Infosms, Alert, etc. Parfois, les opĂ©rateurs ne laissent pas passer le trafic si le nom n'est pas enregistrĂ© dans leur rĂ©seau. Cependant, cela dĂ©pend plutĂŽt des spĂ©cificitĂ©s de l'opĂ©rateur.
Ătapes d'envoi
![]()
SMS-SUBMIT â l'envoi d'un message MO FSM (message court d'un terminal mobile)
SMS-SUBMIT REPORT â confirmation que le message a Ă©tĂ© envoyĂ© au SMSC
SRI SM (SendRoutingInfo) â le SMSC reçoit des informations de l'HLR concernant l'emplacement MSC / VLR de l'abonnĂ©.
SRI SM RESP â rĂ©ponse de l'HLR concernant la localisation de l'abonnĂ©.
MT-FSM â aprĂšs avoir reçu la localisation, un message est envoyĂ© en utilisant l'opĂ©ration « Forward Short Message ».
MT-FSM ACK â rĂ©ponse du SMSC indiquant que le message a Ă©tĂ© envoyĂ©.
SMS-STATUS REPORT â le SMSC envoie le statut de livraison du message.
Le statut de livraison du message
SMS-STATUS REPORT peut avoir plusieurs valeurs :
DELIVRD le message a été livré avec succÚs.
REJECTD â le message a Ă©tĂ© rejetĂ© par le centre SMS.
EXPIRED â le message a Ă©tĂ© supprimĂ© de la file d'attente d'envoi aprĂšs l'expiration de la TTL (durĂ©e de vie du message).
UNDELIV â autres cas de non-livraison.
UNKNOWNâ aucune rĂ©ponse n'a Ă©tĂ© reçue concernant l'envoi.
Erreurs de transmission
Parfois, il existe des raisons pour lesquelles les messages SMS ne parviennent pas Ă l'abonnĂ©. Ces raisons engendrent des erreurs. Les erreurs sont renvoyĂ©es dans les PDUs_sms_resp. Toutes les erreurs peuvent ĂȘtre classĂ©es en erreurs temporaires (Temporary) et permanentes (Permanent).
Par exemple, parmi les temporaires, on peut citer l'absent_subscriber : abonné non disponible ou hors ligne, tandis que les permanents se réfÚrent à l'abonné inexistant. Selon les erreurs qui se produisent, une politique de réexpédition de ces messages est établie.
Par exemple, si l'abonnĂ© Ă©tait en ligne et a reçu l'erreur MT handset is busy, le message peut ĂȘtre renvoyĂ© aprĂšs quelques minutes. Cependant, si le service de rĂ©ception de messages de l'abonnĂ© est bloquĂ©, la rĂ©expĂ©dition n'aura aucun sens. Vous trouverez la liste des erreurs sur les pages de SMSC, par exemple, comme .
Source : habr.com
