SMPP - Protocolul peer-to-peer pentru mesaje scurte

Buna ziua! Deși mesagerii și rețelele sociale înlocuiesc în fiecare zi metodele tradiționale de comunicare, acest lucru nu scade popularitatea SMS-urilor. Verificarea pe un site popular sau notificarea unei tranzacții se repetă, trăiesc și vor trăi. Te-ai întrebat vreodată cum funcționează totul? Foarte des, protocolul SMPP este folosit pentru a trimite mesaje în masă, despre care vor fi discutate mai jos.

Existau deja articole pe Habré despre smpp, 1,2, dar scopul lor nu a fost să descrie protocolul în sine. Desigur, puteți începe imediat de la sursa originală - specificații, dar cred că ar fi bine dacă ar fi un scurt rezumat al acestuia. Voi explica folosind v3.4 ca exemplu. Voi fi bucuros pentru critica dvs. obiectivă.

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

SMPP - Protocolul 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ă un intermediar pentru aceasta - un hub SMS. Uneori, pentru a trimite un SMS, trebuie să construiți un lanț între mai multe țări, sau chiar continente.

Despre protocol

SMPP este un protocol de nivel de aplicație care se bazează pe schimbul PDU și este transmis prin sesiuni TCP/IP sau X25 pentru transmiterea mesajelor SMS și ussd. De obicei, SMPP este utilizat în modul persistent, ceea ce ajută la economisirea de timp. SMPP utilizează un model de comunicare client-server.

Modul de comunicare

SMPP - Protocolul peer-to-peer pentru mesaje scurte

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

Transmitter (transmitter) - transmiterea unui mesaj într-o direcție, pe rând
Destinator - primește doar un mesaj de la centrul SMS.
Transreceiver (transceiver) - Schimb de mesaje între centrul SMS și utilizator

Structura

SMPP - Protocolul peer-to-peer pentru mesaje scurte

Lungimea mesajului

Un mesaj SMS poate conține 70 de caractere atunci când tastați î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 combinat în dispozitivul de primire. În cazul segmentării, numărul de caractere este redus de anteturile mesajului, care indică o parte a mesajului. Prin urmare, atunci când trimiteți un mesaj SMS mare, acesta conține maximum 153 de caractere latine sau 67 de caractere atipice.

Schema de codificare a datelor

Cu toate acestea, simbolurile necesită codificare pentru a transmite un mesaj. În protocolul SMPP, un câmp special este responsabil de codificare - Schema de codare a datelor sau DCS. Acesta este un câmp care specifică modul în care mesajele ar trebui să fie recunoscute. În plus, câmpul DCS include:

  • setul de caractere care definește codificarea;
  • clasa de mesaje;
  • cerere de ștergere automată după citire;
  • indicarea compresiei mesajului;
  • limbajul mesajului difuzat;

Alfabet standard pe 7 biți (GSM 03.38). A fost dezvoltat pentru sistemul de mesagerie GSM. Această codificare este potrivită pentru engleză și mai multe limbi latine. Fiecare caracter este format din 7 biți și este codificat într-un octet.

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

Date definite de utilizator pe 8 biți. Acestea includ KOI8-R și Windows-1251. Deși această soluție pare mai economică în comparație cu același UTF-16. Apare o întrebare rezonabilă privind compatibilitatea pe diferite dispozitive. Pentru că în acest caz, ambele dispozitive trebuie configurate în prealabil.

Clasa de mesaje

  • Mesaj Class0 sau flash stocat în memoria telefonului la discreția utilizatorului;
  • Class1, sau cele stocate în memoria telefonului;
  • Class1, sau cele stocate în memoria telefonului;
  • Class2 trebuie să se asigure că mesajul este salvat în memoria terminalului mobil, în caz contrar trebuie să alerteze centrul SMS despre imposibilitatea salvării;
  • Class3 - în acest caz, telefonul trebuie să trimită o notificare că mesajul poate fi stocat, indiferent de cantitatea de memorie din dispozitiv. Acest tip de mesaj implică faptul că mesajul a ajuns la destinatar;

Tip mesaj

Mesaj silențios (SMS0) Tip de mesaj SMS fără conținut. Acest SMS sosește fără notificare și nu este afișat pe ecranul dispozitivului.

PDU-uri

Fiecare operație pdu este împerecheată și constă dintr-o cerere și un răspuns. De exemplu: o comandă care spune că a fost stabilită o conexiune (bind_transmitter / bind_transmitter_resp) sau că a fost transmis un mesaj (deliver_sm / deliver_sm_resp)

SMPP - Protocolul peer-to-peer pentru mesaje scurte

Fiecare pachet pdu este format din două părți - un antet și un corp. Structura antetului este aceeași pentru orice pachet pdu: lungimea comenzii este lungimea pachetului, id este numele pachetului, iar comanda de stare indică dacă mesajul a fost transmis cu succes sau cu o eroare.

Parametri TLV suplimentari

TLV (Valoarea lungimii etichetei) sau câmpuri suplimentare. Astfel de parametri sunt utilizați pentru a extinde funcționalitatea protocolului și nu sunt necesari. Acest câmp apare la sfârșitul câmpului pdu. De exemplu, folosind TLV dest_addr_np_information, puteți organiza transmiterea de informații despre portabilitatea unui număr.

Ton și Npi

Parametrul TON (Type of Number) informează SMSC despre formatul de adresare și tipul de rețea.
Parametru NPI (Numbering Plan Identification) care indică planul de numerotare.

SMPP - Protocolul peer-to-peer pentru mesaje scurte

Adresa sursei mesajului sau numele alfa

Mesajele trimise pe telefonul dvs. vin în două variante: digitale și alfabetice. Numerele digitale pot fi lungi (asemănătoare cu un număr de telefon) sau scurte. Uneori, operatorii au restricții privind trimiterea de la nume neutre, de exemplu Infosms, Alert etc. Uneori, operatorii nu vor permite traficul dacă numele nu este înregistrat în rețeaua lor. Cu toate acestea, acestea sunt mai degrabă caracteristici ale operatorului.

Etape de depunere

SMPP - Protocolul peer-to-peer pentru mesaje scurte

SMS-TRIMITERE - aceasta trimite un mesaj MO FSM (mesaj scurt de la un terminal mobil)
SMS-TRIMITERE RAPORT — confirmarea că mesajul a fost trimis prin SMSC
SRI SM (SendRoutingInfo) - SMSC primește informații de la HLR cu privire la locația MSC/VLR a abonatului
SRI SM RESP — răspunsul HLR cu privire la carnea de poziție de abonat
MT-FSM — după primirea locației, se trimite un mesaj utilizând operațiunea „Redirecționare mesaj scurt”.
MT-FSM ACK — răspuns de la SMSC că mesajul a fost trimis
RAPORT DE STARE SMS — SMSC trimite starea de livrare a mesajelor.

Starea livrării mesajului

RAPORT DE STARE SMS poate lua mai multe valori:
DELIVRD mesaj livrat cu succes
RESPINSD — mesaj respins de centrul SMS
EXPIRAT — mesajul este eliminat din coada de expediere după sfârșitul TTL (durata de viață a mesajului)
UNDELIV - alte cazuri de nelivrare
NECUNOSCUT-nu s-a primit niciun raspuns cu privire la expediere.

Erori de transfer

Uneori există motive pentru care mesajele SMS nu sunt livrate abonatului. Consecința acestor motive este apariția erorilor. Erorile sunt returnate către PDUs_sms_resp. Toate erorile pot fi împărțite în temporare (Temporare) și permanente (Permanente).

De exemplu, absent_subscriber poate fi clasificat ca temporar - abonatul nu este disponibil sau nu este online și permanent - abonatul nu există. În funcție de erorile care apar, se formează o politică de retrimitere a acestor mesaje.

De exemplu, dacă abonatul a fost ocupat la un apel și a primit eroarea că receptorul MT este ocupat, mesajul poate fi retrimis după câteva minute, totuși, dacă serviciul de primire a mesajelor abonatului este blocat, retrimiterea din nou nu va avea sens. Puteți găsi o listă de erori pe paginile SMSC, de exemplu, cum ar fi acest.

Sursa: www.habr.com

Adauga un comentariu