# Fondamentaux du SMPP

- URL canonique: https://www.broadnet.me/fr/academy/smpp-fundamentals
- Langue: fr
- Dernière mise à jour: 2026-07-18
- Éditeur: BroadNet (https://www.broadnet.me)
- Version Markdown de la page, générée à partir de la page affichée.

Protocoles Intermédiaire

Le protocole binaire derrière le SMS à haut volume : types de bind, submit_sm, PDU, fenêtre de transmission, accusés de réception et keepalives.

5 leçons 4 min de lecture Fondé sur des normes · à son propre rythme

Ce que vous apprendrez

- Ce qu'est le SMPP et sa place face à une API REST
- Les types de bind transmitter, receiver et transceiver
- La structure d'un PDU et les principaux champs de submit_sm
- Comment la fenêtre de transmission et le throttling régissent le débit
- Comment arrivent les accusés de réception et comment garder une session active

Plan de cours

1. 01Ce qu'est le SMPP
2. 02Types de bind et sessions
3. 03Les PDU et le submit_sm
4. 04La fenêtre, le throttling et les keepalives
5. 05Les accusés de réception via SMPP
6. ★Points clés à retenir

[Tous les cours](https://www.broadnet.me/fr/academy)

Schéma Une session SMPP entre votre plateforme et BroadNet

Votre plateforme (ESME)

BroadNet SMSC

Une connexion TCP/TLS persistante

1. `bind_transceiver` Ouvrir et authentifier la session
2. `bind_transceiver_resp` Session acceptée
3. `submit_sm` Envoyer un message
4. `submit_sm_resp` Accepté, ID du message renvoyé
5. `deliver_sm` Accusé de réception ou message entrant
6. `deliver_sm_resp` Confirmé
7. `enquire_link` Keepalive en cas d'inactivité

Leçon 01

## Ce qu'est le SMPP

Le SMPP — Short Message Peer-to-Peer — est le protocole binaire à sessions que les agrégateurs et les opérateurs exposent pour la messagerie A2P à haut débit. Là où une API REST est pratique et sans état, le SMPP est une connexion TCP persistante conçue pour le volume et la faible latence.

Un ESME (External Short Messaging Entity — votre côté) ouvre une session vers le SMSC et échange des PDU (Protocol Data Units). Le protocole est compact et efficace, ce qui explique pourquoi il reste l'ossature des gros émetteurs même si le REST couvre les usages courants.

La version la plus déployée est SMPP v3.4 ; la v5.0 ajoute une signalisation d'état de congestion et des paramètres enrichis, mais reste rétrocompatible. Vous ne devriez jamais supposer qu'une fonctionnalité v5.0 est disponible tant que la réponse au bind n'a pas confirmé la version négociée.

Leçon 02

## Types de bind et sessions

Avant d'envoyer quoi que ce soit, un ESME doit effectuer un bind — s'authentifier et déclarer un rôle. Un bind transmitter n'envoie que des messages ; un bind receiver ne reçoit que les messages mobile-originated et les accusés de réception ; un bind transceiver fait les deux sur une seule connexion.

Le transceiver est généralement préféré car il réduit de moitié le nombre de connexions et simplifie la corrélation des DLR avec les soumissions. Le nombre de binds simultanés et le débit par bind en messages par seconde (TPS) sont provisionnés par le fournisseur et doivent être respectés.

Le bind transporte un system_id, un password, un system_type et un address_range. Un address_range mal renseigné casse silencieusement le routage des MO et des DLR sur les binds receiver — un bug d'intégration classique qui ne produit aucune erreur, seulement du trafic manquant.

Leçon 03

## Les PDU et le submit_sm

Chaque interaction SMPP est un PDU composé d'un en-tête de commande (longueur, identifiant de commande, statut, numéro de séquence) et d'un corps. Le cheval de bataille est submit_sm, qui transporte un message sortant unique.

Deux paires de champs déterminent l'adressage : source_addr avec son TON/NPI (type-of-number / numbering-plan-indicator) et dest_addr avec les siens propres. Un sender ID alphanumérique utilise le TON 5 ; un MSISDN international utilise le TON 1, NPI 1. Une erreur sur ces champs et le sender ID s'affiche mal, ou le message est rejeté.

Le champ data_coding définit l'encodage — GSM 7 bits (0), 8 bits (4), ou UCS-2 (8) pour l'Unicode. Les messages longs sont concaténés soit avec des octets UDH dans le corps, soit avec les paramètres optionnels SAR (sar_msg_ref_num, sar_total_segments, sar_segment_seqnum) ; choisissez une méthode et restez-y fidèle, car les routes n'acceptent pas toutes les mêmes.

Leçon 04

## La fenêtre, le throttling et les keepalives

Le SMPP utilise une fenêtre de transmission : un plafond sur le nombre de PDU submit_sm envoyés avant que leurs réponses ne reviennent. Dépasser la fenêtre, ou le TPS provisionné, déclenche ESME_RTHROTTLED (0x58). La bonne réponse consiste à ralentir avec du jitter, pas à réessayer en boucle serrée.

Pour détecter une connexion TCP à moitié ouverte, chaque partie envoie enquire_link sur une minuterie d'inactivité (typiquement toutes les 30 à 60 secondes) et attend un enquire_link_resp. L'absence de réponse signifie que la session est morte et doit être re-bindée avec un backoff exponentiel.

L'arrêt propre utilise unbind / unbind_resp. Les déconnexions inattendues doivent déclencher une reconnexion avec backoff et des tentatives idempotentes, afin qu'une fenêtre coupée ne provoque pas de double soumission ni de double facturation.

Leçon 05

## Les accusés de réception via SMPP

Les accusés de réception arrivent sous forme de PDU deliver_sm. Le texte de l'accusé dans le champ short_message transporte id, sub, dlvrd, la date de soumission, la date d'achèvement, le stat final (DELIVRD, UNDELIV, EXPIRED, REJECTD) et un code err.

Corrélez le DLR à votre soumission d'origine à l'aide du message_id du fournisseur, et non du seul texte de l'accusé — le message_id peut être renvoyé en hexadécimal dans le submit_resp mais en décimal dans le DLR, il faut donc normaliser les deux formats.

Répondez toujours par un deliver_sm_resp. Un DLR non acquitté est renvoyé par le SMSC et peut bloquer la fenêtre de réception ; acquittez donc rapidement même si votre traitement en aval est asynchrone.

Points clés à retenir

- Le SMPP est une session binaire persistante pour l'A2P à haut volume ; la v3.4 est la référence commune, la v5.0 est rétrocompatible.
- Effectuez un bind en transmitter, receiver ou transceiver ; le transceiver réduit de moitié les connexions et facilite la corrélation des DLR.
- Le TON/NPI décide de l'affichage du sender ID et le data_coding de l'encodage — deux points faciles à mal régler.
- Respectez la fenêtre et le TPS, ralentissez sur ESME_RTHROTTLED, et gardez la session active avec enquire_link.

Continue

### Réponses, produits et outils associés

- [Qu'est-ce que le SMPP ?](https://www.broadnet.me/fr/answers/what-is-smpp)
- [SMPP 3.4 vs 5.0](https://www.broadnet.me/fr/answers/smpp-3-4-vs-5-0)
- [REST vs SMPP](https://www.broadnet.me/fr/compare/sms-api-vs-smpp)
- [Recherche de codes d'erreur SMPP (outil gratuit)](https://www.broadnet.me/fr/tools/smpp-error-codes)
- [Décodeur de DLR (outil gratuit)](https://www.broadnet.me/fr/tools/dlr-decoder)
- [Documentation développeur](https://www.broadnet.me/fr/developers)

Références

- [Spécification SMPP v3.4](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)
- [Spécification SMPP v5.0](https://smpp.org/SMPP_v5.pdf)

Prochaine étape du programme

[Intermédiaire · Routage et qualité Routage SMS et Least-Cost Routing Comment les messages trouvent un chemin vers le réseau de destination — routes directes, routes grises, least-cost routing, et bascule fondée sur la qualité.](https://www.broadnet.me/fr/academy/sms-routing-and-least-cost-routing) [Intermédiaire · Vérification OTP et vérification de numéro Comment fonctionnent les mots de passe à usage unique et la vérification de numéro — TOTP/HOTP, canaux de livraison et repli, conventions d'autofill, et défense contre l'AIT.](https://www.broadnet.me/fr/academy/otp-and-number-verification)

Mettez-le en pratique

## Utilisez ce que vous venez d'apprendre.

Discutez de votre cas d'utilisation avec un véritable ingénieur, ou consultez la documentation pour développeurs et envoyez un message via les routes décrites dans ce cours.

[Parlez-en au service des ingénieurs.](https://www.broadnet.me/fr/contact) [Documentation pour les développeurs](https://www.broadnet.me/fr/developers)

Pourquoi apprendre de BroadNet

- Depuis 2003
- Pays 200+
- Liens de l'opérateur 1,000+
