Përshëndetje! Edhe pse mesazherët dhe rrjetet sociale po zëvendësojnë çdo ditë mënyrat tradicionale të komunikimit, kjo nuk e ul popullaritetin e SMS-ve. Verifikimi në një faqe të njohur ose njoftimi për një transaksion i përsërit ato dhe do të vazhdojë të ekzistojë. A keni menduar ndonjëherë se si funksionon gjithçka? Shumë shpesh, për dërgimin e mesazheve masive përdoret protokolli SMPP, për të cilin do të flasim më vonë.
NĂ« Habr janĂ« publikuar artikuj lidhur me SMPP, ,, por qĂ«llimi i tyre nuk ishte pĂ«rshkrimi i vetĂ« protokollit. Natyrisht, mund tĂ« filloni menjĂ«herĂ« me burimin fillestar â , por mendoj se do tĂ« ishte mirĂ« qĂ« tĂ« ekzistonte njĂ« pĂ«rmbledhje e shkurtĂ«r. Do ta shpjegoj me shembuj nga v3.4 Jam i lumtur pĂ«r kritikĂ«n tuaj objektive.
Protokolli SMPP është një protokoll për mesazhe peer-to-peer. Kjo do të thotë se çdo server peer/hub është baraz. Në rastin më të thjeshtë, skema e shkëmbimit të mesazheve SMS duket kështu:

MegjithatĂ«, nĂ«se operatori kombĂ«tar nuk ka njĂ« rrugĂ« pĂ«r nĂ« njĂ« rajon tĂ« largĂ«t, ai kĂ«rkon ndihmĂ«n e njĂ« ndĂ«rmjetĂ«si â SMS hub. NdonjĂ«herĂ«, pĂ«r tĂ« dĂ«rguar njĂ« SMS, Ă«shtĂ« e nevojshme tĂ« ndĂ«rtohet njĂ« zinxhir mes disa vendeve, ose madje kontinenteve.
Rreth protokollit
SMPP â njĂ« protokoll i nivelit aplikativ qĂ« bazohet nĂ« shkĂ«mbimin e PDU dhe transmetohet mbi TCP/IP ose sesione X25 pĂ«r dĂ«rgimin e mesazheve SMS dhe USSD. Zakonisht SMPP pĂ«rdoret me njĂ« lidhje tĂ« vazhdueshme pĂ«r tĂ« kursyer kohĂ«. SMPP pĂ«rdor njĂ« model komunikimi klient - server.
Rehimi i komunikimit

Shkëmbimi i mesazheve midis dërguesit dhe qendrës SMS përmes SMPP mund të kryhet në këto mënyra:
Transmitter (dĂ«rguesi) â dĂ«rgimi i mesazhit nĂ« njĂ« drejtim, nĂ« mĂ«nyrĂ« tĂ« rregullt
Receiver (pranuesi) â vetĂ«m pranimi i mesazhit nga qendra SMS.
Transreceiver (pranues-dĂ«rgues) â ShkĂ«mbimi i mesazheve midis qendrĂ«s SMS dhe pĂ«rdoruesit
Struktura

Gjatësia e mesazhit
Një SMS mund të përmbajë 70 karaktere në shkrimin cirilik dhe jo më shumë se 157 karaktere latine + 3 UDH. Nëse dërgohet një SMS me më shumë karaktere, ai do të ndahet në disa segmente dhe do të bashkohet në pajisjen e pranimit. Në rastin e segmentimit, numri i karaktereve zvogëlohet për shkak të titujve të mesazhit ku shënohet seksi i mesazhit. Prandaj, kur dërgohet një SMS i madh, ai përmban maksimum 153 karaktere latine ose 67 karaktere të pazakonta.
Skema e Kodimit të të Dhënave
MegjithatĂ«, pĂ«r tĂ« transmetuar njĂ« mesazh, simbolet kĂ«rkojnĂ« kodim. NĂ« protokollin SMPP, kodimi Ă«shtĂ« pĂ«rgjegjĂ«si e njĂ« fushe tĂ« veçantĂ« â Skema e Kodimit tĂ« tĂ« DhĂ«nave, ose DCS. Kjo fushĂ« tregon se si duhet tĂ« njihen mesazhet. PĂ«rveç kĂ«saj, fusha DCS pĂ«rfshin:
- grupin e simboleve që përcakton kodimin;
- klasa e mesazhit;
- kërkesa për fshirje automatike pas leximit;
- të dhënat mbi kompresimin e mesazhit;
- gjuha e mesazhit të transmetuar;
Alfabeti standard 7-bit (GSM 03.38). ĂshtĂ« zhvilluar pĂ«r sistemin e mesazheve nĂ« GSM. Ky kodim Ă«shtĂ« i pĂ«rshtatshĂ«m pĂ«r anglishten dhe disa gjuhĂ« tĂ« tjera latine. Ădo simbol pĂ«rbĂ«het nga 7 bite dhe kodifikohet nĂ« njĂ« oktet.
UTF-16 (në GSM UCS2) Për të përfshirë simbolet që mungojnë në alfabetin 7-bit, është zhvilluar kodimi UTF-16, i cili shton simbole të tjera (përfshirë ato cirilike) duke reduktuar madhësinë e mesazhit nga 160 në 70. Ky lloj kodimi përsërit pothuajse plotësisht Unicode.
Të dhëna 8-bit që përcaktohen nga përdoruesi. Këto përfshijnë KOI8-R dhe Windows-1251. Megjithëse kjo zgjidhje duket më ekonomike në krahasim me UTF-16, ngrit një pyetje të arsyeshme për kompatibilitetin në pajisje të ndryshme. Në këtë rast, të dy pajisjet duhet të jenë të konfiguruara paraprakisht.
Lloji i mesazhit
- Class0, ose mesazh flash, i ruajtur në memorien e telefonit sipas dëshirës së përdoruesit;
- Class1, ose ata që ruhen në memorien e telefonit;
- Class1, ose ata që ruhen në memorien e telefonit;
- Class2, duhet të garantojë që mesazhi do të ruhet në memorien e terminalit mobil, përndryshe duhet të dërgojë njoftime në qendrën e SMS-së për pamundësinë e ruajtjes;
- Class3 â nĂ« kĂ«tĂ« rast telefoni duhet tĂ« dĂ«rgojĂ« njĂ« njoftim qĂ« mesazhi mund tĂ« ruhet, pavarĂ«sisht nga sasia e memories nĂ« pajisje. Ky lloj mesazhi nĂ«nkupton se mesazhi ka arritur te adresati;
Lloji i mesazhit
Mesazh i heshtur (SMS0), lloji i mesazhit SMS pa përmbajtje. Ky SMS vjen pa njoftim dhe nuk shfaqet në ekranin e pajisjes.
PDU
Ădo operacion PDU Ă«shtĂ« i çiftĂ«zuar dhe pĂ«rbĂ«het nga njĂ« kĂ«rkesĂ« dhe njĂ« pĂ«rgjigje. PĂ«r shembull: komanda qĂ« flet pĂ«r krijimin e njĂ« lidhjeje (bind_transmitter / bind_transmitter_resp), ose pĂ«r faktin se mesazhi Ă«shtĂ« dĂ«rguar (deliver_sm / deliver_sm_resp)

Ădo paketĂ« PDU pĂ«rbĂ«het nga dy pjesĂ« â njĂ« krye (header) dhe njĂ« trup (body). Struktura e kryes tĂ« paketĂ«s Ă«shtĂ« identike pĂ«r çdo paketĂ« PDU: gjatĂ«si komande tregon gjatĂ«si tĂ« paketĂ«s, id Ă«shtĂ« emri i paketĂ«s, dhe komandĂ« statusi tregon nĂ«se mesazhi Ă«shtĂ« dĂ«rguar me sukses, ose ka ndodhur njĂ« gabim.
Parametrat shtesë TLV
TLV (Tag Length Value), ose fushat shtesë. Këta parametra përdoren për të zgjeruar funksionet e protokollit dhe nuk janë të detyrueshëm. Ky fushë tregohet në fund të fushës PDU. Si një shembull, me anë të TLV dest_addr_np_information mund të organizohet transferimi i informacionit mbi portimin e numrit.
Ton dhe Npi
TON (Tipi i Numrit) është një parametër që informon SMSC për formatin e adresimit dhe llojin e rrjetit.
NPI (Identifikimi i Planit të Numrave) është një parametër që tregon mbi planin e numrimit.

Adresa e burimit të mesazhit, ose emri alfa
Mesazhet e dërguara në telefon janë nga dy lloje: dixhitale dhe alfanumerike. Mesazhet dixhitale mund të jenë të gjata (si numri i telefonit) ose të shkurtra. Ndonjëherë, operatorët kanë kufizime në dërgimin nga emra neutralë, si Infosms, Alert etj. Ndonjëherë, operatorët nuk lejojnë trafikun nëse emri nuk është regjistruar në rrjetin e tyre. Megjithatë, këto janë më shumë veçori të operatorit.
Fazat e dërgimit
![]()
SMS-SUBMIT â Ă«shtĂ« dĂ«rgimi i mesazhit MO FSM (mesazh i shkurtĂ«r nga terminali mobil)
SMS-SUBMIT REPORT â konfirmimi qĂ« mesazhi Ă«shtĂ« dĂ«rguar nĂ« SMSC
SRI SM (SendRoutingInfo) â SMSC merr informacionin nga HLR nĂ« lidhje me MSC / VLR vendndodhjen e abonenetit
SRI SM RESP â pĂ«rgjigja nga HLR nĂ« lidhje me vendndodhjen e abonenetit
MT-FSM â pas merrjes sĂ« vendndodhjes, dĂ«rgohet mesazhi duke pĂ«rdorur operacionin "Forward Short Message"
MT-FSM ACK â pĂ«rgjigje nga SMSC qĂ« mesazhi Ă«shtĂ« dĂ«rguar
SMS-STATUS REPORT â SMSC dĂ«rgon statusin e dĂ«rgesĂ«s sĂ« mesazhit.
Statusi i dërgesës së mesazhit
SMS-STATUS REPORT mund të prijë disa vlera:
DELIVRD mesazhi është dërguar me sukses
REJECTD â mesazhi Ă«shtĂ« refuzuar nga SMS-qendra
EXPIRED â mesazhi Ă«shtĂ« fshirĂ« nga radhĂ«t e dĂ«rgimit pasi pĂ«rfundoi TTL (kohĂ«zgjatja e jetĂ«s sĂ« mesazhit)
NEDHĂS â raste tĂ« tjera tĂ« mosdĂ«rgimit
UNKNOWN- nuk është marrë përgjigje për dërgimin.
Gabimet e transmetimit
Nganjëherë shkaku për të cilat mesazhet SMS nuk dërgohen te abonenti. Pasojat e këtyre shkakut janë shfaqja e gabimeve. Gabimet kthehen në PDUs_sms_resp. Të gjitha gabimet mund të ndahen në përkohshme (Temporary) dhe të përhershme (Permanent).
Si një shembull, përkohësor mund të konsiderohet absent_subscriber, abonenti nuk është i qasshëm ose jashtë rrjetit, ndërsa përherë është abonenti që nuk ekziston. Sipas gabimeve që ndodhin formohet politika e ripërpjesëtimit të këtyre mesazheve.
Për shembull, nëse abonenti ishte i zënë në një bisedë dhe mori gabimin MT handset is busy, mesazhi mund të dërgohet përsëri pas disa minutash, megjithatë nëse abonenti ka bllokuar shërbimin e pranimit të mesazheve, ripërsëritja e dërgimit nuk do të ketë kuptim. Listën e gabimeve mund ta gjeni në faqet e SMSC, për shembull, si .
Burimi: habr.com
