SMPP — un protocol peer-to-peer pentru mesaje scurte.

Bună! Chiar dacă aplicațiile de mesagerie și rețelele sociale devin din ce în ce mai populare, acest lucru nu reduce popularitatea SMS-urilor. Verificările pe site-uri populare sau notificările despre tranzacții le revin înapoi și vor continua să existe. Te-ai întrebat vreodată cum funcționează toate acestea? Foarte des, pentru trimiterea mesajelor în masă se folosește protocolul SMPP, despre care vom discuta mai jos.

Pe Habr au mai fost articole despre SMPP, 1,2, dar scopul lor nu a fost descrierea propriu-zisă a protocolului. Desigur, poți începe direct de la sursa originală — specificații, dar cred că ar fi bine să existe și un rezumat concis. Voi explica prin exemplul v3.4. Apreciez critica ta obiectivă.

Protocolul SMPP este un protocol de mesaje peer-to-peer. Aceasta înseamnă că fiecare nod/hub server are drepturi egale. În cel mai simplu caz, schema de schimb de mesaje SMS arată astfel:

SMPP — un protocol peer-to-peer pentru mesaje scurte.

Cu toate acestea, dacă operatorul național nu are o rută către o regiune îndepărtată, el solicită ajutorul unui intermediar — un hub SMS. Uneori, pentru a trimite un singur SMS, este necesar să se construiască o lanț între mai multe țări sau chiar continente.

Despre protocol

SMPP este un protocol de nivel aplicativ, care se bazează pe schimbul de PDU și este transmis peste TCP / IP sau sesiuni X25 pentru transmiterea mesajelor SMS și USSD. De obicei, SMPP este utilizat în modul de conexiune permanentă, acest lucru ajutând la economisirea timpului. SMPP utilizează modelul de comunicare client — server.

Modul de comunicare

SMPP — un protocol peer-to-peer pentru mesaje scurte.

Schimbul de mesaje între expeditor și centrul SMS prin SMPP poate avea loc în următoarele moduri:

Transmitter (transmițător) — trimiterea mesajului într-o singură direcție, în mod secvențial.
Receiver (receiver) — doar primirea mesajelor de la centrul SMS.
Transreceiver (transmițător-receiver) — Schimbul de mesaje între centrul SMS și utilizator.

Structura

SMPP — un protocol peer-to-peer pentru mesaje scurte.

Lungimea mesajului

Un mesaj SMS poate conține 70 de caractere atunci când este scris în chirilică și nu mai mult de 157 de caractere latine + 3 UDH. Dacă trimiteți un SMS cu un număr mare de caractere, acesta va fi împărțit în mai multe segmente și reunit în dispozitivul receptor. În cazul segmentării, numărul de caractere se reduce din cauza antetelor mesajului în care se indică partea mesajului. Prin urmare, atunci când trimiteți un SMS mare, acesta conține maximum 153 de caractere latine sau 67 de caractere neobișnuite.

Schema de codificare a datelor

Cu toate acestea, pentru transmiterea unui mesaj, simbolurile trebuie codificate. În protocolul SMPP, codificarea este responsabilizată de un câmp special - Data Coding Scheme, sau DCS. Acest câmp indică modul în care trebuie recunoscute mesajele. În plus, câmpul DCS include:

  • setul de caractere care definește codificarea;
  • clasa mesajului;
  • cererea de ștergere automată după citire;
  • indicarea comprimării mesajului;
  • limba mesajului de difuzare;

Alfabetul standard de 7 biți (GSM 03.38). A fost dezvoltat pentru sistemul de mesaje în GSM. Această codificare este potrivită pentru limba engleză și unele limbi latine. Fiecare simbol constă în 7 biți și este codificat în octet.

UTF-16 (în GSM UCS2) Pentru a include simbolurile lipsă din alfabetul de 7 biți, a fost dezvoltată codificarea UTF-16, care adaugă simboluri suplimentare (inclusiv cele chirilice) prin reducerea dimensiunii mesajului de la 160 la 70; acest tip de codificare replicatează aproape complet Unicode.

Date de 8 biți definite de utilizator. Acestea includ KOI8-R și Windows-1251. Deși această soluție pare mai economică comparativ cu UTF-16, apare o întrebare rezonabilă de compatibilitate pe diferite dispozitive. Deoarece în acest caz, ambele dispozitive trebuie să fie configurate dinainte.

Clasa mesajului

  • Class0, sau mesaj flash, care este salvat în memoria telefonului la cererea utilizatorului;
  • Class1, sau cele care sunt stocate în memoria telefonului;
  • Class1, sau cele care sunt stocate în memoria telefonului;
  • Class2, care trebuie să garanteze că mesajul va fi salvat în memoria terminalului mobil, altfel trebuie să transmită o notificare centrului SMS despre imposibilitatea de a salva;
  • Class3 - în acest caz, telefonul trebuie să trimită o notificare că mesajul poate fi salvat, indiferent de cantitatea de memorie din dispozitiv. Acest tip de mesaj implică faptul că mesajul a ajuns la destinatar;

Tipul mesajului

Silent message (SMS0) Tipul de mesaj SMS fără conținut. Acest SMS vine fără notificare și nu apare pe ecranul dispozitivului.

PDU

Fiecare operație PDU este pereche și constă dintr-o cerere și un răspuns. De exemplu: comanda care se referă la stabilirea conexiunii (bind_transmitter / bind_transmitter_resp), sau despre faptul că mesajul a fost transmis (deliver_sm / deliver_sm_resp)

SMPP — un protocol peer-to-peer pentru mesaje scurte.

Fiecare pachet PDU constă din două părți - antet (header) și corp (body). Structura antetului este identică pentru orice pachet PDU: command length reprezintă lungimea pachetului, id este denumirea pachetului, iar comanda status indică dacă mesajul a fost transmis cu succes sau cu eroare.

Parametrii suplimentari TLV

TLV (Tag Length Value), sau câmpuri suplimentare. Acești parametri sunt utilizați pentru a extinde funcțiile protocolului și nu sunt obligatorii. Acest câmp este specificat la sfârșitul câmpului PDU. Ca exemplu, prin intermediul TLV dest_addr_np_information se poate organiza transmiterea informațiilor despre portabilitatea numărului.

Ton și Npi

TON (Tipul Numărului) este un parametru care informează SMSC despre formatul adresării și tipul rețelei.
NPI (Identificarea Planului de Numerotare) este un parametru care indică planul de numerotare.

SMPP — un protocol peer-to-peer pentru mesaje scurte.

Adresa de origine a mesajului sau numele alfa

Mesajele trimise pe telefon pot fi de două tipuri: digitale și literale. Cele digitale pot fi lungi (asemănătoare cu un număr de telefon) și scurte. Uneori, operatorii impun restricții asupra trimiterii din nume neutre, precum Infosms, Alert etc. Uneori, operatorii nu permit traficul dacă numele nu este înregistrat în rețeaua lor. Cu toate acestea, aceasta este mai degrabă o particularitate a operatorului.

Etapele trimiterii

SMPP — un protocol peer-to-peer pentru mesaje scurte.

SMS-SUBMIT — este trimiterea unui mesaj MO FSM (mesaj scurt de la terminalul mobil)
SMS-SUBMIT REPORT — confirmarea că mesajul a fost trimis SMSC
SRI SM (SendRoutingInfo) - SMSC primește informații de la HLR privind locația MSC/VLR a abonatului
SRI SM RESP — răspuns de la HLR privind locația abonatului
MT-FSM — după primirea locației, se trimite mesajul folosind operația „Forward Short Message”
MT-FSM ACK — răspuns de la SMSC că mesajul a fost trimis
SMS-STATUS REPORT — SMSC trimite statusul despre livrarea mesajului.

Statusul livrării mesajului

SMS-STATUS REPORT poate avea mai multe valori:
DELIVRD mesajul a fost livrat cu succes
REJECTD — mesajul a fost respins de SMS-center
EXPIRED — mesajul a fost șters din coada de trimitere după expirarea TTL (timpul de viață al mesajului)
UNDELIV — alte cazuri de nedelivery
UNKNOWN- nu s-a primit răspuns privind trimiterea.

Erorile de transmitere

Uneori, există motive pentru care mesajele SMS nu ajung la abonat. Consecințele acestor motive sunt producerea de erori. Erorile sunt returnate în PDUs_sms_resp. Toate erorile pot fi împărțite în erori temporare (Temporary) și permanente (Permanent).

Ca exemplu, la temporare se pot încadra cazul în care abonatul nu este disponibil sau nu este în rețea, iar la permanente — abonatul nu există. Politica de retransmitere a acestor mesaje se formează în funcție de erorile care apar.

De exemplu, dacă abonatul a fost ocupat cu o conversație și a primit eroarea MT handset is busy, mesajul poate fi retransmis după câteva minute, însă, dacă serviciul de primire a mesajelor este blocat, retransmiterea nu va avea sens. Lista erorilor o puteți găsi pe paginile SMSC, de exemplu, cum ar fi aceasta.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster