SMPP - Kunul-al-kunula Mallonga Mesaĝa Protokolo

Saluton! Kvankam tujmesaĝiloj kaj sociaj retoj anstataŭigas tradiciajn komunikmetodojn ĉiutage, tio ne malpliigas la popularecon de SMS. Konfirmo en populara retejo, aŭ transakcia sciigo ripetas, ke ili vivas kaj vivos. Ĉu vi pensis pri kiel ĉio funkcias? Tre ofte, la SMPP-protokolo estas uzata por sendi amasajn mesaĝojn, kiuj estos diskutitaj sub la tranĉo.

Habré jam havis artikolojn pri smpp, 1,2, sed ilia celo ne estis priskribi la protokolon mem. Kompreneble, vi povas tuj komenci de la fonto - specifoj, sed mi pensas, ke estus bone, se estus resumo de ĝia enhavo. Mi klarigos uzante v3.4 kiel ekzemplon.Mi ĝojas pro via objektiva kritiko.

La SMPP-protokolo estas kunul-al-kunula mesaĝa protokolo. Ĉi tio signifas, ke ĉiu samulo/nabo-servilo estas egala. En la plej simpla kazo, la SMS-mesaĝa skemo aspektas jene:

SMPP - Kunul-al-kunula Mallonga Mesaĝa Protokolo

Tamen, se la nacia funkciigisto ne havas itineron, li petas peranton pri tio al iu malproksima regiono - SMS-nabo. Kelkfoje, por sendi unu SMS, vi devas konstrui ĉenon inter pluraj landoj, aŭ eĉ kontinentoj.

Pri protokolo

SMPP estas aplikaĵa tavola protokolo, kiu baziĝas sur interŝanĝo de PDU-oj kaj estas transdonita per TCP/IP, aŭ X25-sesioj por sendi sms kaj ussd-mesaĝojn. Kutime, SMPP estas uzata en konstanta koneksa reĝimo, kio ŝparas tempon. SMPP uzas klient-servilan komunikadmodelon.

Komunika reĝimo

SMPP - Kunul-al-kunula Mallonga Mesaĝa Protokolo

La interŝanĝo de mesaĝoj inter la sendinto kaj la SMS-centro per SMPP povas esti farita en la sekvaj reĝimoj:

Transmitter (transmitter) - transdono de mesaĝo en unu direkto, siavice
Ricevilo (ricevilo) - nur ricevante mesaĝon de la SMS-centro.
Transceiver (transceiver) - Mesaĝa interŝanĝo inter la SMS-centro kaj la uzanto

strukturo

SMPP - Kunul-al-kunula Mallonga Mesaĝa Protokolo

Mesaĝo longeco

Unu SMS-mesaĝo povas enhavi 70 signojn kiam vi tajpas cirilan kaj ne pli ol 157 latinajn signojn + 3 UDH Se vi sendas SMS kun granda nombro da signoj, ĝi estos dividita en plurajn segmentojn kaj kombinita en la riceva aparato. En la kazo de segmentado, la nombro da signoj estas reduktita per la mesaĝkapoj, kiuj indikas la parton de la mesaĝo. Tial, kiam oni sendas grandan SMS-mesaĝon, ĝi enhavas maksimume 153 latinajn signojn aŭ 67 netipaj signoj.

Datumkodiga Skemo

Tamen, signoj devas esti koditaj por transdoni mesaĝon. En la SMPP-protokolo, speciala kampo respondecas pri kodigo - Data Coding Scheme, aŭ DCS. Ĉi tio estas kampo kiu specifas kiel mesaĝoj devus esti rekonitaj. Krome, la DCS-kampo inkluzivas:

  • la signaro kiu difinas la kodigon;
  • mesaĝklaso;
  • peto por aŭtomata forigo post legado;
  • indiko de kunpremo de mesaĝoj;
  • elsenda mesaĝlingvo;

Norma 7-bita alfabeto (GSM 03.38). Ĝi estis evoluigita por la mesaĝsistemo en GSM. Ĉi tiu kodado taŭgas por la angla kaj kelkaj latinaj lingvoj. Ĉiu signo konsistas el 7 bitoj kaj estas ĉifrita en okteton.

UTF-16 (en GSM UCS2) Por inkludi mankantajn signojn en la 7-bita alfabeto, la UTF-16-kodigo estis evoluigita, kiu aldonas kromajn signojn (inkluzive de cirilaj) reduktante la mesaĝgrandecon de 160 ĝis 70, ĉi tiu speco de kodigo. preskaŭ tute ripetas Unikodon.

8-bita uzanto difinita datumoj. Ĉi tiuj inkluzivas KOI8-R kaj Windows-1251. Kvankam ĉi tiu solvo ŝajnas esti pli ekonomia kompare kun la sama UTF-16. Estas racia demando pri kongruo en malsamaj aparatoj. Ĉar en ĉi tiu kazo ambaŭ aparatoj devas esti agorditaj anticipe.

Mesaĝa klaso

  • Class0, aŭ fulmo, mesaĝo stokita en la memoro de la telefono laŭ peto de la uzanto;
  • Class1, aŭ tiuj konservitaj en la memoro de la telefono;
  • Class1, aŭ tiuj konservitaj en la memoro de la telefono;
  • Class2, devas certigi, ke la mesaĝo estas konservita en la memoro de la movebla terminalo, alie devas doni sciigojn al la SMS-centro pri la nekapablo konservi;
  • Klaso 3 - en ĉi tiu kazo, la telefono devas sendi sciigon, ke la mesaĝo povas esti konservita, sendepende de la kvanto de memoro en la aparato. Ĉi tiu speco de mesaĝo implicas ke la mesaĝo atingis sian celon;

Mesaĝo tipo

Silenta mesaĝo (SMS0) SMS-mesaĝo tipo sen enhavo. Tia SMS venas sen sciigo kaj ne estas montrata sur la ekrano de la aparato.

PDU-oj

Ĉiu pdu-operacio estas parigita kaj konsistas el peto kaj respondo. Ekzemple: komando kiu diras ke konekto estis establita (bind_transmitter / bind_transmitter_resp), aŭ ke mesaĝo estis sendita (deliver_sm / deliver_sm_resp)

SMPP - Kunul-al-kunula Mallonga Mesaĝa Protokolo

Ĉiu pdu-pakaĵo konsistas el du partoj - kaplinio (kapo) kaj korpo (korpo). La titola strukturo estas la sama por iu ajn pdu-pako: komandlongo estas la longo de la pako, id estas la nomo de la pako, kaj la statusa komando indikas ĉu la mesaĝo estis sendita sukcese aŭ malsukcesis.

Pliaj TLV-parametroj

TLV (Tag Length Value), aŭ kromaj kampoj. Tiaj parametroj estas uzataj por etendi la funkciecon de la protokolo kaj estas laŭvolaj. Ĉi tiu kampo estas specifita ĉe la fino de la pdu-kampo. Ekzemple, uzante la dest_addr_np_information TLV, vi povas organizi la translokigon de informoj pri la portado de la nombro.

Ton kaj Npi

TON (Type of Number) parametro informas SMSC pri la adresformato kaj rettipo.
NPI (Numbering Plan Identification) parametro indikanta la numeran planon.

SMPP - Kunul-al-kunula Mallonga Mesaĝa Protokolo

Mesaĝa fontadreso, aŭ alfa nomo

Mesaĝoj senditaj al la telefono venas en du varioj: nombraj kaj alfabetaj. Nombroj povas esti longaj (similaj al telefonnumero) aŭ mallongaj. Foje funkciigistoj havas limigojn pri sendado de neŭtralaj nomoj, kiel Infosms, Alert ktp. Foje telefonistoj ne permesas trafikon se la nomo ne estas registrita en sia reto. Tamen, ĉi tio estas pli ol trajto de la funkciigisto.

Submetataj etapoj

SMPP - Kunul-al-kunula Mallonga Mesaĝa Protokolo

SMS-SUBMETI sendas MO FSM-mesaĝon (mallonga mesaĝo de movebla terminalo)
SMS-SENDU RAPORTON — konfirmo, ke la mesaĝo estis sendita de SMSC
SRI SM (SendRoutingInfo) - La SMSC ricevas informojn de la HLR koncerne la MSC/VLR-lokon de la abonanto
SRI SM RESP — respondo de HLR pri viando de abonanto
MT-FSM - post ricevo de la loko, mesaĝo estas sendita uzante la operacion "Forward Short Message".
MT-FSM-ACK — respondo de SMSC ke la mesaĝo estas sendita
SMS-STATA RAPORTO — SMSC sendas la mesaĝan staton.

Statuso de livero de mesaĝoj

SMS-STATA RAPORTO povas preni plurajn valorojn:
DELIVRD mesaĝo sukcese liverita
REJECTD — mesaĝo malakceptita de la SMS-centro
EXPIRITA - la mesaĝo estas forigita el la sendovico post la fino de la TTL (mesaĝa vivdaŭro)
UNDELIV - aliaj kazoj de neliverado
Nekonata- Neniu respondo ricevita.

Eraroj de transdono

Kelkfoje la kialoj por kiuj SMS-mesaĝoj ne estas liveritaj al la abonanto. La sekvo de ĉi tiuj kialoj estas la apero de eraroj. Eraroj estas resenditaj en PDUs_sms_resp. Ĉiuj eraroj povas esti dividitaj en provizorajn (provizorajn) kaj konstantajn (konstantajn).

Ekzemple, absent_subscriber estas provizora, la abonanto ne estas disponebla aŭ ne enreta, kaj permanenta - la abonanto ne ekzistas. Depende de la eraroj kiuj okazas, politiko por resendi ĉi tiujn mesaĝojn estas formita.

Ekzemple, se la abonanto estis okupata parolante kaj ricevis MT-telefontelefono estas okupata eraro, la mesaĝo povas esti resendita post kelkaj minutoj, tamen, se la abonanto blokis la mesaĝon ricevantan servon, resendo ne havos sencon. Vi povas trovi liston de eraroj sur la SMSC-paĝoj, ekzemple, kiel ĉi tio.

fonto: www.habr.com

Aldoni komenton