Hej! Selvom messaging-apps og sociale medier hver dag erstatter traditionelle kommunikationsmetoder, mindsker det ikke populariteten af SMS. Verifikation pÄ populÊre hjemmesider eller meddelelser om transaktioner bliver sendt via SMS, og de lever i bedste velgÄende. Har du nogensinde tÊnkt over, hvordan det hele fungerer? Ofte bruges protokollen SMPP til at sende massebeskeder, som vi vil tale om herunder.
Der har allerede vĂŠret artikler om SMPP pĂ„ HabrĂ©, ,, men deres mĂ„l var ikke at beskrive selve protokollen. Du kan selvfĂžlgelig begynde med den originale kilde â , men jeg synes, det ville vĂŠre godt at have et kort resumĂ©. Jeg vil forklare med eksempel fra v3.4. Jeg ser frem til din objektive kritik.
SMPP-protokollen er en protokol til peer-to-peer-beskeder. Det betyder, at hver peer/hub-server er ligestillet. I dens enkleste form ser SMS-beskedudvekslingens ordning sÄledes ud:

Men hvis den nationale operatĂžr ikke har en rute til en afsides region, beder de en mĂŠgler â en SMS-hub â om hjĂŠlp. Nogle gange, for at sende en SMS, skal der opbygges en kĂŠde mellem flere lande eller endda kontinent.
Om protokollen
SMPP er en applikationsprotokol, der er baseret pÄ udveksling af PDU og sendes over TCP / IP eller X25-sessions til transmission af SMS og USSD-beskeder. Normalt anvendes SMPP i permanent tilstand, hvilket sparer tid. SMPP bruger en klient-server kommunikationsmodel.
Kommunikationsmodus

Beskedudvekslingen mellem afsenderen og SMS-centret via SMPP kan finde sted i fĂžlgende tilstande:
Transmitter (afsender) â transmission af beskeder i Ă©n retning, sekventielt
Receiver (modtager) â kun modtagelse af beskeder fra SMS-centret.
Transreceiver (modtagelsestransmitter) â Udveksling af beskeder mellem SMS-centret og brugeren
Struktur

Beskedens lĂŠngde
En SMS-besked kan indeholde 70 tegn, nÄr det skrives med kyrilliske bogstaver og hÞjst 157 latinske tegn + 3 UDH. Hvis der sendes en SMS med et stort antal tegn, vil den blive opdelt i flere segmenter og derefter sammensat i den modtagende enhed. Ved segmentering reduceres antallet af tegn pÄ grund af meddelelsens overskrifter, hvor det angives, hvilken del af meddelelsen det drejer sig om. Derfor vil en stor SMS-besked indeholde maksimalt 153 latinske tegn eller 67 usÊdvanlige tegn.
Data Coding Scheme
Men for at sende en besked skal tegnene kodes. I SMPP-protokollen ansvarer et specielt felt - Data Coding Scheme, eller DCS - for kodningen. Dette felt angiver, hvordan beskeder skal genkendes. Derudover omfatter DCS-feltet:
- et tegnsĂŠt, der bestemmer kodningen;
- typen af besked;
- anmodning om automatisk sletning efter lĂŠsning;
- angivelse af komprimering af besked;
- sproget for broadcast-beskeden;
Standard 7-bit alfabet (GSM 03.38). Dette blev udviklet til beskedssystemet i GSM. Denne kodning er passende for engelsk og en rÊkke latinske sprog. Hvert tegn bestÄr af 7 bit og kodes i en oktet.
UTF-16 (i GSM UCS2) For at inkludere de manglende tegn i 7-bit alfabetet blev UTF-16 kodningen udviklet, som tilfĂžjer ekstra tegn (herunder kyrilliske) ved at reducere stĂžrrelse af beskeden fra 160 til 70; denne type kodning gentager nĂŠsten fuldstĂŠndig Unicode.
Brugerdefinerede 8-bit data. Disse inkluderer KOI8-R og Windows-1251. Selvom denne lÞsning synes mere Þkonomisk sammenlignet med UTF-16, opstÄr et berettiget spÞrgsmÄl om kompatibilitet pÄ forskellige enheder, eftersom begge enheder skal vÊre forudindstillet.
Beskedtype
- Class0 eller flash-besked, gemt i telefonens hukommelse efter brugerens Ăžnske;
- Class1 eller dem, der gemmes i telefonens hukommelse;
- Class1 eller dem, der gemmes i telefonens hukommelse;
- Class2, som skal sikre, at beskeden gemmes i mobilterminalens hukommelse, ellers skal den returnere en SMS-centers underretning om, at det ikke er muligt at gemme;
- Class3 - i dette tilfÊlde skal telefonen sende en meddelelse om, at beskeden kan gemmes, uanset hvor meget hukommelse der er pÄ enheden. Denne type besked forudsÊtter, at beskeden er nÄet modtageren;
Beskedtype
Silent message (SMS0) Type smsbesked uden indhold. Denne sms modtages uden underretning og vises ikke pÄ enhedens skÊrm.
PDU
Hver PDU-operation er parret og bestÄr af anmodning og svar. For eksempel: kommandoen, der angiver forbindelsesoprettelse (bind_transmitter / bind_transmitter_resp), eller at beskeden er sendt (deliver_sm / deliver_sm_resp)

Hver PDU-pakke bestÄr af to dele - header og body. Strukturen af headeren er identisk for enhver PDU-pakke: command length er lÊngden af pakken, id er navnet pÄ pakken, og kommandoen status angiver, om beskeden er blevet sendt succesfuldt eller med fejl.
Supplerende TLV-parametre
TLV (Tag Length Value), eller supplerende felter. Disse parametre bruges til at udvide protokollens funktioner og er ikke obligatoriske. Dette felt angives til sidst i PDU-feltet. Som et eksempel kan TLV-dest_addr_np_information bruges til at organisere overfĂžrsel af information om nummerportabilitet.
Ton og Npi
TON (Type of Number) parameteren informerer SMSC om adresseformatet og typen af netvĂŠrk.
NPI (Numbering Plan Identification) parameteren angiver nummereringsplanen.

Afsenderadressen for beskeden, eller alpha-name
Beskeder, der sendes til telefonen, findes i to varianter: digitale og bogstavelige. Digitale kan vÊre lange (lignende et telefonnummer) eller korte. Nogle gange har operatÞrer begrÊnsninger for at sende fra neutrale navne, sÄsom Infosms, Alert etc. Nogle gange tillader operatÞrer ikke trafik, hvis navnet ikke er registreret i deres netvÊrk. Men dette er snarere operatÞrens specifikationer.
Faser af afsendelse
![]()
SMS-SUBMIT â det er afsendelse af en MO FSM-besked (kort besked fra mobilterminalen)
SMS-SUBMIT REPORT â bekrĂŠftelse pĂ„, at beskeden er sendt til SMSC
SRI SM (SendRoutingInfo) â SMSC modtager information fra HLR vedrĂžrende MSC/VLR, hvor abonnenten befinder sig
SRI SM RESP â svar fra HLR vedrĂžrende abonnentens beliggenhed
MT-FSM â efter modtagelse af placeringen sendes beskeden ved hjĂŠlp af operationen âForward Short Messageâ
MT-FSM ACK â svar fra SMSC om, at beskeden er sendt
SMS-STATUS REPORT â SMSC sender status om levering af beskeden.
Beskedens leveringsstatus
SMS-STATUS REPORT kan have flere vĂŠrdier:
DELIVRD beskeden blev leveret succesfuldt
REJECTD â beskeden blev afvist af SMS-centret
EXPIRED â beskeden blev fjernet fra sendekĂžen efter udlĂžbet af TTL (tid til liv for beskeden)
UNDELIV â andre tilfĂŠlde af manglende levering
UNKNOWN- der blev ikke modtaget svar pÄ afsendelsen.
OverfĂžrselsfejl
Nogle gange er der Ärsager til, at SMS-beskeder ikke leveres til abonnenten. FÞlgerne af disse Ärsager fÞrer til opstÄen af fejl. Fejl returneres i PDUs_sms_resp. Alle fejl kan opdeles i midlertidige (Temporary) og permanente (Permanent).
Som eksemplet kan midlertidige fejl som absent_subscriber, som betyder, at abonnenten ikke er tilgĂŠngelig eller ikke er online, henfĂžres til. Permanent fejl â abonnenten eksisterer ikke. AfhĂŠngigt af de fejl, der opstĂ„r, dannes politikken for at gensende disse meddelelser.
For eksempel, hvis abonnenten var optaget af et opkald og fik fejlen MT handset is busy, kan meddelelsen gensendes efter et par minutter, men hvis abonnenten har blokkeret tjenesten for modtagelse af meddelelser, vil gensendelsen ikke give mening. Du kan finde listen over fejl pÄ SMSC-siderne, for eksempel som .
Kilde: habr.com
