Tere! Kuigi kiirsÔnumid ja suhtlusvÔrgustikud asendavad iga pÀev traditsioonilisi suhtlusviise, ei vÀhenda see SMS-i populaarsust. Populaarsel saidil kinnitamine vÔi tehinguteatis kordab, et nad elavad ja jÀÀvad elama. Kas olete mÔelnud, kuidas see kÔik töötab? VÀga sageli kasutatakse SMPP-protokolli hulgisÔnumite saatmiseks, mida arutatakse lÔike all.
Habrel oli juba artikleid smpp kohta, ,, kuid nende eesmĂ€rk ei olnud protokolli ennast kirjeldada. Muidugi vĂ”ite kohe alustada allikast - , aga arvan, et oleks tore, kui selle sisust oleks kokkuvĂ”te. Selgitan nĂ€itena v3.4. Mul on hea meel teie objektiivse kriitika ĂŒle.
SMPP-protokoll on peer-to-peer-sÔnumsideprotokoll. See tÀhendab, et iga peer/hub server on vÔrdne. Lihtsamal juhul nÀeb SMS-sÔnumite skeem vÀlja jÀrgmine:

Kui aga riiklikul operaatoril marsruuti pole, kĂŒsib ta selle vahendajalt mĂ”nda kaugemasse piirkonda - SMS-i keskusesse. MĂ”nikord on ĂŒhe SMS-i saatmiseks vaja luua kett mitme riigi vĂ”i isegi mandri vahel.
Protokolli kohta
SMPP on rakenduskihi protokoll, mis pĂ”hineb PDU-de vahetamisel ja mida edastatakse SMS-i ja ussd-sĂ”numite saatmiseks TCP / IP vĂ”i X25 seansside kaudu. Tavaliselt kasutatakse SMPP-d pĂŒsiva ĂŒhenduse reĆŸiimis, mis sÀÀstab aega. SMPP kasutab kliendi-serveri suhtlusmudelit.
SuhtlusreĆŸiim

SĂ”numite vahetamine saatja ja SMS-keskuse vahel SMPP kaudu saab toimuda jĂ€rgmistes reĆŸiimides:
Saatja (saatja) - sĂ”numi edastamine omakorda ĂŒhes suunas
VastuvÔtja (vastuvÔtja) - ainult sÔnumi vastuvÔtmine SMS-keskusest.
Transiiver (transiiver) â SMS-keskuse ja kasutaja vaheline sĂ”numivahetus
Struktuur

SÔnumi pikkus
Ăks SMS-sĂ”num vĂ”ib kirillitsas tippimisel sisaldada 70 tĂ€hemĂ€rki ja mitte rohkem kui 157 ladina tĂ€hemĂ€rki + 3 UDH Kui saadate suure hulga tĂ€hemĂ€rke sisaldava SMS-i, jagatakse see mitmeks segmendiks ja kombineeritakse vastuvĂ”tvas seadmes. Segmenteerimise korral vĂ€hendatakse mĂ€rkide arvu sĂ”numi pĂ€iste vĂ”rra, mis nĂ€itavad sĂ”numi osa. SeetĂ”ttu sisaldab see suure SMS-sĂ”numi saatmisel maksimaalselt 153 ladina tĂ€hemĂ€rki vĂ”i 67 mittetĂŒĂŒpilist tĂ€hemĂ€rki.
Andmete kodeerimise skeem
SÔnumi edastamiseks tuleb aga mÀrgid kodeerida. SMPP-protokollis vastutab kodeerimise eest spetsiaalne vÀli - Data Coding Scheme ehk DCS. See on vÀli, mis mÀÀrab, kuidas sÔnumeid tuleks Àra tunda. Lisaks sisaldab DCS vÀli:
- kodeeringut mÀÀratlev mÀrgistik;
- sÔnumiklass;
- automaatse kustutamise taotlus pÀrast lugemist;
- sÔnumi tihendamise mÀrge;
- saatesÔnumi keel;
Standardne 7-bitine tĂ€hestik (GSM 03.38). See töötati vĂ€lja GSM-i sĂ”numisĂŒsteemi jaoks. See kodeering sobib inglise keele ja mitmete ladina keelte jaoks. Iga mĂ€rk koosneb 7 bitist ja on kodeeritud oktetiks.
UTF-16 (GSM UCS2-s) 7-bitises tĂ€hestikus puuduvate mĂ€rkide kaasamiseks töötati vĂ€lja UTF-16 kodeering, mis lisab tĂ€iendavaid mĂ€rke (sh kirillitsasid), vĂ€hendades sĂ”numi suurust 160-lt 70-le. Seda tĂŒĂŒpi kodeering kordab peaaegu tĂ€ielikult Unicode'i.
8-bitised kasutaja mÀÀratletud andmed. Nende hulka kuuluvad KOI8-R ja Windows-1251. Kuigi see lahendus tundub UTF-16-st sÀÀstlikum, tekitab see mĂ”istliku kĂŒsimuse ĂŒhilduvuse kohta erinevate seadmete vahel, kuna mĂ”lemad seadmed tuleks eelnevalt konfigureerida.
SÔnumi klass
- Class0 ehk vÀlksÔnum, mis salvestatakse kasutaja soovil telefoni mÀllu;
- Class1 vÔi need, mis on salvestatud telefoni mÀllu;
- Class1 vÔi need, mis on salvestatud telefoni mÀllu;
- klass2, peab tagama sÔnumi salvestamise mobiilterminali mÀllu, vastasel juhul andma SMS-keskusele teate salvestamise vÔimatusest;
- Class3 â sel juhul peaks telefon saatma teate, et sĂ”numit saab salvestada, olenemata seadme mĂ€lumahust. Seda tĂŒĂŒpi sĂ”num tĂ€hendab, et sĂ”num on jĂ”udnud sihtkohta;
SĂ”numi tĂŒĂŒp
Vaikne sĂ”num (SMS0) Ilma sisuta SMS-sĂ”numi tĂŒĂŒp. Sellised SMS-id tulevad teavitamata ja neid ei kuvata seadme ekraanil.
PDU
Iga pdu toiming on seotud ja koosneb pĂ€ringust ja vastusest. NĂ€iteks: kĂ€sk, mis ĂŒtleb, et ĂŒhendus on loodud (bind_transmitter / bind_transmitter_resp) vĂ”i et sĂ”num on saadetud (deliver_sm / delivery_sm_resp)

Iga pdu pakett koosneb kahest osast â pĂ€isest (header) ja kehast (body). PĂ€ise struktuur on iga pdu-paketi puhul sama: kĂ€su pikkus on paketi pikkus, id on paketi nimi ja staatuskĂ€sk nĂ€itab, kas sĂ”num saadeti edukalt vĂ”i ebaĂ”nnestus.
TĂ€iendavad TLV parameetrid
TLV (Tag Length Value) vÔi tÀiendavad vÀljad. Selliseid parameetreid kasutatakse protokolli funktsionaalsuse laiendamiseks ja need on valikulised. See vÀli on mÀÀratud pdu vÀlja lÔpus. NÀiteks saate dest_addr_np_information TLV abil korraldada teabe edastamise numbri teisaldamise kohta.
Ton ja Npi
TON (numbri tĂŒĂŒp) parameeter teavitab SMSC-d adresseerimisvormingust ja vĂ”rgutĂŒĂŒbist.
NPI (Numbering Plan Identification) parameeter, mis nÀitab numeratsiooniplaani.

SÔnumi allika aadress vÔi alfanimi
Telefonile saadetavaid sĂ”numeid on kahte tĂŒĂŒpi: numbrilised ja tĂ€hestikulised. Numbrid vĂ”ivad olla pikad (sarnaselt telefoninumbriga) vĂ”i lĂŒhikesed. MĂ”nikord on operaatoritel piirangud neutraalsetest nimedest (nt Infosms, Alert jne) saatmisel. MĂ”nikord ei luba operaatorid liiklust, kui nimi pole nende vĂ”rgus registreeritud. See on aga pigem operaatori omadus.
Esitamise etapid
![]()
SMS-ESITA saadab MO FSM-i sĂ”numi (lĂŒhisĂ”num mobiilterminalist)
SMS-ESITA ARUANNE â kinnitus, et sĂ”numi saatis SMSC
SRI SM (SendRoutingInfo) â SMSC saab HLR-ilt teavet abonendi MSC/VLR asukoha kohta.
SRI SM RESP â HLR-i vastus abonendi positsioonide kohta
MT-FSM - pĂ€rast asukoha kĂ€ttesaamist saadetakse sĂ”num toimingu "Edasta lĂŒhisĂ”num" abil
MT-FSM-ACK â SMSC vastus, et sĂ”num on saadetud
SMS-OLUKORRALDUS â SMSC saadab sĂ”numi kohaletoimetamise oleku.
SÔnumi edastamise olek
SMS-OLUKORRALDUS vÔib vÔtta mitu vÀÀrtust:
DELIVRD sÔnum on edukalt edastatud
VĂLJA LĂKATUD â SMS-i keskus lĂŒkkas sĂ”numi tagasi
EXPIRED - sÔnum eemaldatakse saatmisjÀrjekorrast pÀrast TTL-i (sÔnumi eluiga) lÔppu
EDASTA TAGASI - muud tarnimata jÀtmise juhtumid
UNKNOWN- Vastust ei saadud.
Edastuse vead
MĂ”nikord on pĂ”hjused, miks SMS-sĂ”numeid abonendile ei edastata. Nende pĂ”hjuste tagajĂ€rjeks on vigade esinemine. Vead tagastatakse kaustas PDUs_sms_resp. KĂ”ik vead vĂ”ib jagada ajutisteks (Temporary) ja pĂŒsivateks (Permanent).
NĂ€iteks absent_subscriber on ajutine, tellija pole saadaval vĂ”i pole vĂ”rgus ja pĂŒsiv - tellijat pole olemas. SĂ”ltuvalt ilmnevatest tĂ”rgetest koostatakse nende sĂ”numite uuesti saatmise poliitika.
NÀiteks kui abonent oli hÔivatud rÀÀkimisega ja sai MT-telefonitoru on hÔivatud vea, saab teate mÔne minuti pÀrast uuesti saata, kuid kui abonent on sÔnumi vastuvÔtuteenuse blokeerinud, pole uuesti saatmine mÔttekas. SMSC lehtedelt leiate vigade loendi, nÀiteks kui .
Allikas: www.habr.com
