# Fondamenti di SMPP

- URL canonico: https://www.broadnet.me/it/academy/smpp-fundamentals
- Lingua: it
- Ultimo aggiornamento: 2026-07-18
- Editore: BroadNet (https://www.broadnet.me)
- Versione Markdown della pagina, generata dalla pagina pubblicata.

Protocolli Intermedio

Il protocollo binario dietro l'SMS ad alto volume: tipi di bind, submit_sm, PDU, la finestra di trasmissione, ricevute di consegna e keepalive.

5 lezioni 4 min di lettura Basato su standard · a ritmo personalizzato

Cosa imparerai

- Cos'è l'SMPP e come si colloca rispetto a un'API REST
- I tipi di bind transmitter, receiver e transceiver
- La struttura di un PDU e i campi chiave di submit_sm
- Come la finestra di trasmissione e il throttling regolano il throughput
- Come arrivano le ricevute di consegna e come mantenere attiva una sessione

Schema del corso

1. 01Cos'è l'SMPP
2. 02Tipi di bind e sessioni
3. 03PDU e submit_sm
4. 04La finestra, il throttling e i keepalive
5. 05Ricevute di consegna su SMPP
6. ★Punti chiave

[Tutti i corsi](https://www.broadnet.me/it/academy)

Diagramma Una sessione SMPP tra la vostra piattaforma e BroadNet

La vostra piattaforma (ESME)

BroadNet SMSC

Una connessione TCP/TLS persistente

1. `bind_transceiver` Aprire e autenticare la sessione
2. `bind_transceiver_resp` Sessione accettata
3. `submit_sm` Inviare un messaggio
4. `submit_sm_resp` Accettato, ID messaggio restituito
5. `deliver_sm` Ricevuta di consegna o messaggio in entrata
6. `deliver_sm_resp` Confermato
7. `enquire_link` Keepalive durante l'inattività

Lezione 01

## Cos'è l'SMPP

SMPP — Short Message Peer-to-Peer — è il protocollo binario e basato su sessione che aggregatori e operatori espongono per la messaggistica A2P ad alto throughput. Mentre un'API REST è comoda e stateless, l'SMPP è una connessione TCP persistente costruita per volume e bassa latenza.

Un ESME (External Short Messaging Entity — la sua parte) apre una sessione verso l'SMSC e scambia PDU (Protocol Data Unit). Il protocollo è compatto ed efficiente, ed è per questo che resta la spina dorsale per i grandi mittenti anche mentre il REST copre l'uso quotidiano.

La versione più diffusa è l'SMPP v3.4; la v5.0 aggiunge la segnalazione dello stato di congestione e parametri avanzati, ma è retrocompatibile. Non dovrebbe mai presumere che una funzione della v5.0 sia disponibile finché la risposta al bind non conferma la versione negoziata.

Lezione 02

## Tipi di bind e sessioni

Prima di inviare qualsiasi cosa, un ESME deve effettuare il bind — autenticarsi e dichiarare un ruolo. Un bind transmitter invia solo messaggi; un bind receiver riceve solo messaggi mobile-originated e ricevute di consegna; un bind transceiver fa entrambe le cose su un'unica connessione.

Il transceiver è di solito preferito perché dimezza il numero di connessioni e semplifica la correlazione tra DLR e invii. Il numero di bind concorrenti e i messaggi al secondo per bind (TPS) sono forniti dal provider e vanno rispettati.

Il bind trasporta un system_id, una password, un system_type e un address_range. Un address_range non corrispondente interrompe silenziosamente l'instradamento di MO e DLR sui bind receiver — un classico bug di integrazione che non produce errori, solo traffico mancante.

Lezione 03

## PDU e submit_sm

Ogni interazione SMPP è un PDU con un'intestazione di comando (lunghezza, command id, status, numero di sequenza) e un corpo. Il fulcro è submit_sm, che trasporta un singolo messaggio in uscita.

Due coppie di campi decidono l'indirizzamento: source_addr con il proprio TON/NPI (type-of-number / numbering-plan-indicator) e dest_addr con il proprio. Un sender ID alfanumerico usa TON 5; un MSISDN internazionale usa TON 1, NPI 1. Se questi valori sono sbagliati, il sender ID viene visualizzato in modo errato oppure il messaggio viene respinto.

Il campo data_coding imposta la codifica — GSM a 7 bit (0), 8 bit (4), oppure UCS-2 (8) per Unicode. I messaggi lunghi vengono concatenati sia con byte UDH nel corpo, sia con i parametri opzionali SAR (sar_msg_ref_num, sar_total_segments, sar_segment_seqnum); scelga un metodo e vi rimanga coerente, perché le rotte differiscono su quale accettano.

Lezione 04

## La finestra, il throttling e i keepalive

L'SMPP utilizza una finestra di trasmissione: un limite al numero di PDU submit_sm inviati prima che arrivino le rispettive risposte. Superare la finestra, o il TPS previsto, genera ESME_RTHROTTLED (0x58). La risposta corretta è rallentare con jitter, non ripetere i tentativi in loop stretto.

Per rilevare una connessione TCP semiaperta, ciascuna parte invia enquire_link su un timer di inattività (comunemente ogni 30–60 secondi) e si attende un enquire_link_resp. Una risposta mancata significa che la sessione è morta e va ristabilita con backoff esponenziale.

L'arresto controllato usa unbind / unbind_resp. Le disconnessioni impreviste dovrebbero attivare una riconnessione con backoff e ritentativi idempotenti, così che una finestra interrotta non causi invii duplicati e doppia fatturazione.

Lezione 05

## Ricevute di consegna su SMPP

Le ricevute di consegna arrivano come PDU deliver_sm. Il testo della ricevuta nel campo short_message contiene id, sub, dlvrd, data di invio, data di completamento, lo stat finale (DELIVRD, UNDELIV, EXPIRED, REJECTD) e un codice err.

Correli il DLR al proprio invio originale usando il message_id del provider, non solo il testo della ricevuta — il message_id può essere restituito in esadecimale su submit_resp ma in decimale nel DLR, quindi normalizzi entrambi i formati.

Risponda sempre con un deliver_sm_resp. Un DLR non riconosciuto viene reinviato dall'SMSC e può bloccare la finestra di ricezione, quindi confermi tempestivamente anche se l'elaborazione a valle è asincrona.

Punti chiave

- L'SMPP è una sessione binaria persistente per l'A2P ad alto volume; la v3.4 è la base comune, la v5.0 è retrocompatibile.
- Il bind avviene come transmitter, receiver o transceiver; il transceiver dimezza le connessioni e facilita la correlazione dei DLR.
- TON/NPI decidono la visualizzazione del sender ID e data_coding decide la codifica — entrambi facili da sbagliare.
- Rispetti la finestra e il TPS, rallenti su ESME_RTHROTTLED e mantenga attiva la sessione con enquire_link.

Continuare

### Risposte, prodotti e strumenti correlati

- [Cos'è l'SMPP?](https://www.broadnet.me/it/answers/what-is-smpp)
- [SMPP 3.4 rispetto a 5.0](https://www.broadnet.me/it/answers/smpp-3-4-vs-5-0)
- [REST rispetto a SMPP](https://www.broadnet.me/it/compare/sms-api-vs-smpp)
- [Consultazione codici di errore SMPP (strumento gratuito)](https://www.broadnet.me/it/tools/smpp-error-codes)
- [Decodificatore DLR (strumento gratuito)](https://www.broadnet.me/it/tools/dlr-decoder)
- [Documentazione per sviluppatori](https://www.broadnet.me/it/developers)

Riferimenti

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

Prossimamente nel programma di studi

[Intermedio · Instradamento e qualità Instradamento SMS e Least-Cost Routing Come i messaggi trovano un percorso verso la rete di destinazione — rotte dirette, rotte grigie, least-cost routing e failover basato sulla qualità.](https://www.broadnet.me/it/academy/sms-routing-and-least-cost-routing) [Intermedio · Verifica OTP e verifica del numero Come funzionano le password monouso e la verifica del numero — TOTP/HOTP, canali di consegna e fallback, convenzioni di autocompilazione e difesa contro l'AIT.](https://www.broadnet.me/it/academy/otp-and-number-verification)

Mettilo in pratica

## Metti in pratica ciò che hai appena imparato.

Parla con un vero ingegnere del tuo caso d'uso, oppure apri la documentazione per sviluppatori e invia un messaggio attraverso i canali descritti in questo corso.

[Rivolgiti al team di ingegneria.](https://www.broadnet.me/it/contact) [Documentazione per sviluppatori](https://www.broadnet.me/it/developers)

Perché imparare da BroadNet

- Da 2003
- Paesi 200+
- Collegamenti dell'operatore 1,000+
