SMPP: protocollo di messaggi brevi peer-to-peer

Ciao! Anche se la messaggistica istantanea e i social network stanno sostituendo ogni giorno i tradizionali metodi di comunicazione, ciò non toglie nulla alla popolarità degli SMS. La verifica su un sito popolare o la notifica di una transazione si ripete che vivono e vivranno. Hai pensato a come funziona il tutto? Molto spesso, per inviare messaggi in blocco, viene utilizzato il protocollo SMPP, di cui parleremo più avanti.

Habré aveva già articoli su smpp, 1,2, ma il loro scopo non era descrivere il protocollo stesso. Certo, puoi iniziare immediatamente dalla fonte: specificazione, ma penso che sarebbe carino se ci fosse un riassunto del suo contenuto. Lo spiegherò usando la v3.4 come esempio. Sono felice per la tua critica obiettiva.

Il protocollo SMPP è un protocollo di messaggistica peer-to-peer. Ciò significa che ogni server peer/hub è uguale. Nel caso più semplice, lo schema di messaggistica SMS è simile al seguente:

SMPP: protocollo di messaggi brevi peer-to-peer

Tuttavia, se l'operatore nazionale non ha un percorso, lo chiede a un intermediario per una regione remota: un hub SMS. A volte, per inviare un SMS, è necessario costruire una catena tra più paesi o addirittura continenti.

A proposito di protocollo

SMPP è un protocollo a livello applicativo che si basa sullo scambio di PDU e viene trasmesso su sessioni TCP/IP o X25 per l'invio di messaggi sms e ussd. Di solito, SMPP viene utilizzato in modalità di connessione persistente, il che consente di risparmiare tempo. SMPP utilizza un modello di comunicazione client-server.

Modalità di comunicazione

SMPP: protocollo di messaggi brevi peer-to-peer

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

Trasmettitore (trasmettitore) - trasmissione di un messaggio in una direzione, a sua volta
Ricevitore (ricevitore): riceve solo un messaggio dal centro SMS.
Ricetrasmettitore (ricetrasmettitore) - Scambio di messaggi tra il centro SMS e l'utente

Struttura

SMPP: protocollo di messaggi brevi peer-to-peer

Lunghezza del messaggio

Un messaggio SMS può contenere 70 caratteri se digitato 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 combinato nel dispositivo ricevente. Nel caso della segmentazione, il numero di caratteri viene ridotto dalle intestazioni del messaggio, che indicano la parte del messaggio. Pertanto, quando si invia un messaggio SMS di grandi dimensioni, questo contiene un massimo di 153 caratteri latini o 67 caratteri atipici.

Schema di codifica dei dati

Tuttavia, i caratteri devono essere codificati per trasmettere un messaggio. Nel protocollo SMPP, un campo speciale è responsabile della codifica: Data Coding Scheme o DCS. Questo è un campo che specifica come devono essere riconosciuti i messaggi. Inoltre, il campo DCS include:

  • il set di caratteri che definisce la codifica;
  • classe messaggio;
  • richiesta di cancellazione automatica dopo la lettura;
  • un'indicazione della compressione del messaggio;
  • lingua del messaggio trasmesso;

Alfabeto standard a 7 bit (GSM 03.38). È stato sviluppato per il sistema di messaggistica in GSM. Questa codifica è adatta per l'inglese e numerose lingue latine. Ogni carattere è composto da 7 bit ed è 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 ulteriori caratteri (compresi quelli cirillici) riducendo la dimensione del messaggio da 160 a 70, questo tipo di codifica ripete quasi completamente Unicode .

Dati definiti dall'utente a 8 bit. Questi includono KOI8-R e Windows-1251. Sebbene questa soluzione sembri più economica rispetto allo stesso UTF-16. Esiste una ragionevole questione di compatibilità su diversi dispositivi. Poiché in questo caso entrambi i dispositivi devono essere configurati in anticipo.

Classe del messaggio

  • Class0, o flash, un messaggio archiviato nella memoria del telefono su richiesta dell'utente;
  • Classe1, ovvero quelli archiviati nella memoria del telefono;
  • Classe1, ovvero quelli archiviati nella memoria del telefono;
  • Classe2, deve garantire che il messaggio venga conservato nella memoria del terminale mobile, altrimenti deve notificare al centro SMS l'impossibilità di salvarlo;
  • Classe3: in questo caso il telefono deve inviare una notifica che il messaggio può essere salvato, indipendentemente dalla quantità di memoria del dispositivo. Questo tipo di messaggio implica che il messaggio sia arrivato a destinazione;

Tipo di messaggio

Messaggio silenzioso (SMS0) Tipo di messaggio SMS senza contenuto. Tali SMS arrivano senza notifica e non vengono visualizzati sullo schermo del dispositivo.

PDU

Ogni operazione pdu è accoppiata e consiste in una richiesta e una risposta. Ad esempio: un comando che dice che è stata stabilita una connessione (bind_transmitter / bind_transmitter_resp) o che un messaggio è stato inviato (deliver_sm / deliver_sm_resp)

SMPP: protocollo di messaggi brevi peer-to-peer

Ogni pacchetto pdu è composto da due parti: un'intestazione (header) e un corpo (body). La struttura dell'intestazione è la stessa per qualsiasi pacchetto pdu: la lunghezza del comando è la lunghezza del pacchetto, l'id è il nome del pacchetto e il comando status indica se il messaggio è stato inviato con successo o meno.

Parametri TLV aggiuntivi

TLV (Tag Length Value) o campi aggiuntivi. Tali parametri vengono utilizzati per estendere la funzionalità del protocollo e sono facoltativi. Questo campo è specificato alla fine del campo pdu. Ad esempio, utilizzando il TLV dest_addr_np_information è possibile organizzare il trasferimento delle informazioni relative alla portabilità del numero.

Ton e Npi

Il parametro TON (tipo di numero) informa SMSC sul formato di indirizzamento e sul tipo di rete.
NPI (Numbering Plan Identification) parametro indicante il piano di numerazione.

SMPP: protocollo di messaggi brevi peer-to-peer

Indirizzo di origine del messaggio o nome alfabetico

I messaggi inviati al telefono sono di due tipi: numerici e alfabetici. I numeri possono essere lunghi (simili a un numero di telefono) o brevi. A volte gli operatori hanno restrizioni sull'invio da nomi neutri, come Infosms, Alert ecc. A volte gli operatori non consentono il traffico se il nome non è registrato nella loro rete. Tuttavia, questa è più una caratteristica dell'operatore.

Fasi di presentazione

SMPP: protocollo di messaggi brevi peer-to-peer

SMS-INVIA sta inviando un messaggio MO FSM (messaggio breve dal terminale mobile)
RAPPORTO DI INVIO SMS — conferma che il messaggio è stato inviato da SMSC
SRISM (SendRoutingInfo) - L'SMSC riceve informazioni dall'HLR riguardanti la posizione MSC/VLR dell'abbonato
RESP.SRI SM — risposta di HLR in merito alla posizione dell'abbonato carne
MT-FSM - dopo aver ricevuto la posizione, viene inviato un messaggio utilizzando l'operazione "Inoltra messaggio breve".
MT-FSM-ACK — risposta dell'SMSC che il messaggio è stato inviato
RAPPORTO SULLO STATO DELL'SMS — SMSC invia lo stato di consegna del messaggio.

Stato di consegna del messaggio

RAPPORTO SULLO STATO DELL'SMS può assumere diversi valori:
CONSEGNA messaggio recapitato con successo
RIFIUTATOD — messaggio rifiutato dal centro SMS
SCADUTO - il messaggio viene rimosso dalla coda di invio dopo la fine del TTL (durata del messaggio)
NON CONSEGNA - altri casi di mancata consegna
SCONOSCIUTO- Nessuna risposta ricevuta.

Errori di trasmissione

A volte i motivi per cui i messaggi SMS non vengono recapitati all'abbonato. La conseguenza di questi motivi è il verificarsi di errori. Gli errori vengono restituiti in PDUs_sms_resp. Tutti gli errori possono essere suddivisi in temporanei (Temporanei) e permanenti (Permanenti).

Ad esempio, aware_subscriber è temporaneo, l'abbonato non è disponibile o non è online, e permanente: l'abbonato non esiste. A seconda degli errori che si verificano, viene creata una politica per il reinvio di questi messaggi.

Ad esempio, se l'abbonato era occupato a parlare e ha ricevuto un errore MT ricevitore occupato, il messaggio può essere inviato nuovamente dopo alcuni minuti, tuttavia, se l'abbonato ha bloccato il servizio di ricezione del messaggio, il nuovo invio non avrà senso. Puoi trovare un elenco di errori nelle pagine SMSC, ad esempio, as questo.

Fonte: habr.com

Aggiungi un commento