SMPP — protocollo peer-to-peer per messaggi brevi

Ciao! Anche se i messenger e i social network stanno rapidamente superando i metodi di comunicazione tradizionali, questo non diminuisce la popolarità degli SMS. La verifica su siti web popolari, o le notifiche sulle transazioni, continuano a essere utilizzate e continueranno a esserlo. Ti sei mai chiesto come funziona tutto questo? Spesso, per inviare messaggi di massa, si utilizza il protocollo SMPP, di cui parleremo di seguito.

Su Habr ci sono già stati articoli su SMPP, 1,2, ma il loro scopo non era descrivere il protocollo stesso. Naturalmente puoi iniziare subito dalla fonte originale — specifica, ma penso sia utile avere anche un riassunto. Spiegherò con riferimento alla versione v3.4. Sono felice delle tue critiche costruttive.

Il protocollo SMPP è un protocollo di messaggistica peer-to-peer. Ciò significa che ogni peer/hub server ha pari diritti. Nella sua forma più semplice, lo schema di scambio degli SMS appare così:

SMPP — protocollo peer-to-peer per messaggi brevi

Tuttavia, se l'operatore nazionale non ha una rotta verso una regione remota, chiede aiuto a un intermediario — l'hub SMS. A volte, per inviare un SMS, è necessario stabilire una catena tra diversi paesi, o addirittura continenti.

Sul protocollo

SMPP è un protocollo di livello applicativo che si basa sull'interscambio di PDU e viene trasmesso sopra TCP/IP o sessioni X25 per la trasmissione di messaggi SMS e USSD. Di solito, SMPP viene utilizzato in modalità di connessione permanente, il che aiuta a risparmiare tempo. SMPP utilizza un modello di comunicazione client-server.

Modalità di comunicazione

SMPP — protocollo peer-to-peer per messaggi brevi

Lo scambio di messaggi tra il mittente e il centro SMS tramite SMPP può avvenire nelle seguenti modalità:

Transmitter (trasmettitore) — trasmissione del messaggio in una direzione, in sequenza
Receiver (ricevitore) — solo ricezione del messaggio dal centro SMS.
Transreceiver (trasmettitore/ricevitore) — scambio di messaggi tra il centro SMS e l'utente

Struttura

SMPP — protocollo peer-to-peer per messaggi brevi

Lunghezza del messaggio

Un SMS può contenere 70 caratteri in cirillico e non più di 157 caratteri latini + 3 UDH. Se invii un SMS con un numero elevato di caratteri, verrà diviso in più segmenti e ricompattato nel dispositivo ricevente. In caso di segmentazione, il numero di caratteri diminuisce a causa degli header del messaggio che indicano la parte del messaggio. Pertanto, quando si invia un grande SMS, contiene un massimo di 153 caratteri latini o 67 caratteri non standard.

Data Coding Scheme

Tuttavia, per inviare un messaggio, i caratteri richiedono la codifica. Nel protocollo SMPP, la codifica è gestita da un campo speciale - Data Coding Scheme, o DCS. Questo campo indica come devono essere riconosciuti i messaggi. Inoltre, il campo DCS include:

  • un insieme di caratteri che definisce la codifica;
  • la classe del messaggio;
  • richiesta di eliminazione automatica dopo la lettura;
  • indicazione di compressione del messaggio;
  • lingua del messaggio broadcast;

Alfabeto standard a 7 bit (GSM 03.38). È stato sviluppato per il sistema di messaggistica GSM. Questa codifica è adatta per l'inglese e alcune lingue latino. Ogni carattere è composto da 7 bit e codificato in un ottetto.

UTF-16 (in GSM UCS2) Per includere i caratteri mancanti nell'alfabeto a 7 bit, è stata sviluppata la codifica UTF-16, che aggiunge caratteri aggiuntivi (compresi quelli cirillici) riducendo la dimensione del messaggio da 160 a 70; questo tipo di codifica riproduce quasi completamente Unicode.

Dati a 8 bit definiti dall'utente. Tra questi ci sono KOI8-R e Windows-1251. Anche se questa soluzione sembra più economica rispetto a UTF-16, si pone una ragionevole domanda di compatibilità tra i diversi dispositivi. Poiché in questo caso entrambi i dispositivi devono essere configurati in anticipo.

Classe del messaggio

  • Class0, o flash, messaggio, memorizzato nella memoria del telefono a discrezione dell'utente;
  • Class1, o quelli che sono memorizzati nella memoria del telefono;
  • Class1, o quelli che sono memorizzati nella memoria del telefono;
  • Class2, deve garantire che il messaggio venga salvato nella memoria del terminale mobile, altrimenti deve notificare il centro sms dell'impossibilità di salvare;
  • Class3 — in questo caso, il telefono deve inviare una notifica che il messaggio può essere salvato, indipendentemente dalla quantità di memoria nel dispositivo. Questo tipo di messaggio implica che il messaggio ha raggiunto il destinatario;

Tipo di messaggio

Messaggio silenzioso (SMS0) Tipo di messaggio SMS senza contenuto. Tale SMS arriva senza notifica e non viene visualizzato sullo schermo del dispositivo.

PDU

Ogni operazione pdu è abbinata e consiste in una richiesta e una risposta. Ad esempio: un comando che indica l'instaurazione di una connessione (bind_transmitter / bind_transmitter_resp), o che il messaggio è stato consegnato (deliver_sm / deliver_sm_resp)

SMPP — protocollo peer-to-peer per messaggi brevi

Ogni pacchetto PDU è composto da due parti: intestazione (header) e corpo (body). La struttura dell'intestazione è la stessa per ogni pacchetto PDU: la lunghezza del comando è la dimensione del pacchetto, l'ID è il nome del pacchetto e il comando di stato indica se il messaggio è stato trasmesso con successo o se ci sono stati errori.

Parametri aggiuntivi TLV

TLV (Tag Length Value), o campi aggiuntivi. Questi parametri vengono utilizzati per espandere le funzionalità del protocollo e non sono obbligatori. Questo campo è indicato alla fine del campo PDU. Ad esempio, con l'ausilio di TLV dest_addr_np_information, è possibile organizzare il trasferimento delle informazioni sulla portabilità del numero.

Ton e Npi

TON (Type of Number) è un parametro che informa l'SMSC sul formato di indirizzamento e sul tipo di rete.
NPI (Numbering Plan Identification) è un parametro che indica il piano di numerazione.

SMPP — protocollo peer-to-peer per messaggi brevi

Indirizzo del mittente del messaggio, o nome alfa

I messaggi inviati al telefono possono essere di due tipi: numerici e alfanumerici. Messaggi numerici possono essere lunghi (simili a un numero di telefono) o brevi. A volte, gli operatori hanno restrizioni sull'invio da nomi neutri, ad esempio Infosms, Alert, ecc. A volte gli operatori non consentono il traffico se il nome non è registrato nella loro rete. Tuttavia, queste sono più che altro peculiarità dell'operatore.

Fasi di invio

SMPP — protocollo peer-to-peer per messaggi brevi

SMS-SUBMIT — è l'invio di un messaggio MO FSM (messaggio breve da un terminale mobile)
SMS-SUBMIT REPORT — conferma che il messaggio è stato inviato all'SMSC
SRI SM (SendRoutingInfo) — l'SMSC riceve informazioni dall'HLR relativamente alla posizione dell'MSC / VLR dell'abbonato
SRI SM RESP — risposta dall'HLR riguardo alla posizione dell'abbonato
MT-FSM — dopo aver ricevuto la posizione, viene inviato un messaggio utilizzando l'operazione «Forward Short Message»
MT-FSM ACK — risposta dall'SMSC che conferma che il messaggio è stato inviato
SMS-STATUS REPORT — l'SMSC invia lo stato di consegna del messaggio.

Lo stato di consegna del messaggio

SMS-STATUS REPORT può assumere diversi valori:
DELIVRD messaggio consegnato con successo
REJECTD — il messaggio è stato rifiutato dal centro SMS
EXPIRED — il messaggio è stato eliminato dalla coda di invio alla scadenza del TTL (tempo di vita del messaggio)
UNDELIV — altri casi di mancata consegna
UNKNOWN- non è stata ricevuta alcuna risposta sull'invio.

Errori di trasmissione

A volte le ragioni per cui i messaggi SMS non vengono consegnati all'abbonato. Le conseguenze di queste ragioni sono la comparsa di errori. Gli errori vengono restituiti nei PDUs_sms_resp. Tutti gli errori possono essere suddivisi in temporanei (Temporary) e permanenti (Permanent).

Ad esempio, gli stati temporanei possono includere absent_subscriber l'abbonato non è disponibile o non è in rete, mentre quelli permanenti possono essere considerati come l'abbonato non esiste. A seconda degli errori che si verificano, si forma una politica di ripetizione di questi messaggi.

Ad esempio, se l'abbonato era occupato in una conversazione e ha ricevuto l'errore MT handset is busy, il messaggio può essere inviato di nuovo dopo alcuni minuti; tuttavia, se il servizio di ricezione dei messaggi è bloccato per l'abbonato, la ripetizione non avrà senso. Puoi trovare l'elenco degli errori sulle pagine SMSC, ad esempio, come questo.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster