SMPP – ett peer-to-peer-protokoll för korta meddelanden

Hej! Även om meddelandeappar och sociala medier undan för undan ersĂ€tter traditionella kommunikationssĂ€tt, minskar det inte SMS:ens popularitet. Verifiering pĂ„ en populĂ€r webbplats eller meddelanden om transaktioner upprepas i realtid och kommer att fortsĂ€tta att existera. Har du nĂ„gonsin funderat över hur allt detta fungerar? Mycket oftast anvĂ€nds protokollet SMPP för massutskick av meddelanden, vilket Ă€r vad vi kommer att diskutera nedan.

Det har redan publicerats artiklar om SMPP pĂ„ HabrĂ©, 1,2, men deras syfte var inte att beskriva sjĂ€lva protokollet. SjĂ€lvklart kan du börja direkt med kĂ€llan — specifikationen, men jag tycker det skulle vara bra att det Ă€ven finns en sammanfattning. Jag kommer att förklara med exemplet v3.4 Jag uppskattar din objektiva kritik.

SMPP-protokollet Àr ett protokoll för peer-to-peer-meddelanden. Det innebÀr att varje peer/hubserver Àr lika vÀrdig. I enklaste fall ser schemat för utbyte av SMS-meddelanden ut sÄ hÀr:

SMPP – ett peer-to-peer-protokoll för korta meddelanden

Men om den nationella operatören inte har en rutt till nĂ„gon avlĂ€gsen region ber han en mellanhand — SMS-hubben. Ibland, för att skicka ett SMS, mĂ„ste man bygga en kedja mellan flera lĂ€nder eller till och med kontinenter.

Om protokollet

SMPP Àr ett applikationsprotokoll som bygger pÄ utbyte av PDU och överförs över TCP/IP eller X.25-sessioner för att skicka SMS och USSD-meddelanden. Vanligtvis anvÀnds SMPP i ett lÀge med stÀndig anslutning, vilket hjÀlper till att spara tid. SMPP anvÀnder modellen klient-server.

KommunikationslÀge

SMPP – ett peer-to-peer-protokoll för korta meddelanden

Utbyte av meddelanden mellan avsÀndaren och SMS-centret via SMPP kan ske i följande lÀgen:

Transmitter (sĂ€ndare) — överföring av meddelanden i en riktning, sekventiellt
Receiver (mottagare) — endast mottagande av meddelanden frĂ„n SMS-centret.
Transreceiver (sĂ€nd- och mottagare) — Utbyte av meddelanden mellan SMS-centret och anvĂ€ndaren

Struktur

SMPP – ett peer-to-peer-protokoll för korta meddelanden

Meddelandets lÀngd

Ett SMS-meddelande kan innehÄlla 70 tecken nÀr det skrivs med kyrilliska bokstÀver och högst 157 latinska tecken + 3 UDH. Om du skickar ett SMS med ett stort antal tecken kommer det att delas upp i flera segment och sammanfogas i mottagarens enhet. Vid segmentering minskar antalet tecken pÄ grund av meddelandets rubriker som anger delen av meddelandet. DÀrför, nÀr du skickar ett stort SMS, innehÄller det högst 153 latinska tecken eller 67 atypiska tecken.

Data Coding Scheme

Men för att överföra ett meddelande krĂ€vs kodning av tecken. I SMPP-protokollet ansvarar ett speciellt fĂ€lt för kodning — Data Coding Scheme, eller DCS. Detta fĂ€lt anger hur meddelanden ska tolkas. Dessutom innehĂ„ller DCS-fĂ€ltet:

  • ett teckenuppsĂ€ttning som definierar kodningen;
  • meddelandeklass;
  • förfrĂ„gan om automatisk borttagning efter lĂ€sning;
  • indikation om komprimering av meddelandet;
  • sprĂ„k för broadcast-meddelandet;

Standard 7-bitars alfabet (GSM 03.38). Det utvecklades för meddelandesystemet i GSM. Denna kodning Àr lÀmplig för engelska och flera latinska sprÄk. Varje tecken bestÄr av 7 bitar och kodas i en oktett.

UTF-16 (i GSM UCS2) För att inkludera saknade tecken i det 7-bitar alfabetet utvecklades kodningen UTF-16 som lÀgger till extra tecken (inklusive kyrilliska) genom att minska storleken pÄ meddelandet frÄn 160 till 70; denna typ av kodning motsvarar nÀstan helt Unicode.

AnvĂ€ndardefinierade 8-bitarsdata. SĂ„dana inkluderar KOI8-R och Windows-1251. Även om denna lösning verkar mer kostnadseffektiv jĂ€mfört med UTF-16, uppstĂ„r en rimlig frĂ„ga om kompatibilitet pĂ„ olika enheter. Eftersom bĂ„da enheterna i sĂ„dana fall mĂ„ste vara instĂ€llda i förvĂ€g.

Meddelandeklass

  • Class0, eller flash, meddelande, lagrat i telefonens minne pĂ„ anvĂ€ndarens begĂ€ran;
  • Class1, eller de som lagras i telefonens minne;
  • Class1, eller de som lagras i telefonens minne;
  • Class2, ska sĂ€kerstĂ€lla att meddelandet sparas i det mobila terminalens minne; annars ska den skicka en notifikation till SMS-centret om att det inte gĂ„r att spara;
  • Class3 — i detta fall ska telefonen skicka en notifiering om att meddelandet kan sparas, oavsett mĂ€ngden minne i enheten. Denna typ av meddelande innebĂ€r att meddelandet har nĂ„tt mottagaren;

Meddelandetyp

Silent message (SMS0) Typ av SMS-meddelande utan innehÄll. Detta SMS kommer utan avisering och visas inte pÄ enhetens skÀrm.

PDU

Varje PDU-operation Àr parvis och bestÄr av en begÀran och ett svar. Till exempel: kommandot som handlar om att etablera en anslutning (bind_transmitter / bind_transmitter_resp), eller att meddelandet har skickats (deliver_sm / deliver_sm_resp)

SMPP – ett peer-to-peer-protokoll för korta meddelanden

Varje PDU-paket bestĂ„r av tvĂ„ delar — en rubrik (header) och ett innehĂ„ll (body). Strukturens rubrik Ă€r densamma för varje PDU-paket: command length Ă€r paketets lĂ€ngd, id Ă€r paketets namn, och kommandot status visar om meddelandet har skickats framgĂ„ngsrikt eller om det har uppstĂ„tt ett fel.

Ytterligare TLV-parametrar

TLV (Tag Length Value), eller ytterligare fÀlt. Dessa parametrar anvÀnds för att utöka protokollets funktioner och Àr inte obligatoriska. Detta fÀlt anges i slutet av PDU-fÀltet. Som exempel kan TLV dest_addr_np_information anvÀndas för att organisera överföring av information om nummerportabilitet.

Ton och Npi

TON (Type of Number) parametern informerar SMSC om adresseringsformatet och nÀtverkstypen.
NPI (Numbering Plan Identification) parametern indikerar nummerrÀkningsplan.

SMPP – ett peer-to-peer-protokoll för korta meddelanden

AvsÀndaradressen för meddelandet, eller alfa-namnet

Meddelanden som skickas till telefoner kan vara av tvÄ typer: digitala och alfabetiska. Digitala kan vara lÄnga (liknande ett telefonnummer) och korta. Ibland har operatörer begrÀnsningar för sÀndning frÄn neutrala namn, sÄsom Infosms, Alert etc. Ibland tillÄter operatörer inte trafik om namnet inte Àr registrerat i deras nÀtverk. Men detta Àr mer en operatörsspecifik egenskap.

Skeden av sÀndning

SMPP – ett peer-to-peer-protokoll för korta meddelanden

SMS-SUBMIT — det Ă€r sĂ€ndning av ett MO FSM (kort meddelande frĂ„n en mobil terminal)
SMS-SUBMIT RAPPORT — bekrĂ€ftelse pĂ„ att meddelandet har skickats till SMSC
SRI SM (SendRoutingInfo) — SMSC fĂ„r information frĂ„n HLR angĂ„ende MSC / VLR-platsen för abonnenten
SRI SM RESP — svar frĂ„n HLR angĂ„ende abonnentens plats
MT-FSM — efter att ha mottagit platsen skickas ett meddelande med operationen "Forward Short Message"
MT-FSM ACK — svar frĂ„n SMSC om att meddelandet har skickats
SMS-STATUS RAPPORT — SMSC skickar status för meddelandets leverans.

Meddelandets leveransstatus

SMS-STATUS RAPPORT kan ta flera vÀrden:
DELIVRD meddelandet har levererats framgÄngsrikt
REJECTD — meddelandet har avvisats av SMS-centret
EXPIRED — meddelandet har tagits bort frĂ„n kö för sĂ€ndning efter att TTL (livslĂ€ngd för meddelandet) har löpt ut
UNDELIV — andra fall av misslyckad leverans
UNKNOWN- inget svar har mottagits om sÀndningen.

Överföringsfel

Ibland finns det orsaker till varför SMS-meddelanden inte levereras till abonnenten. Följderna av dessa orsaker Àr uppkomsten av fel. Felen returneras i PDUs_sms_resp. Alla fel kan delas in i temporÀra (Temporary) och permanenta (Permanent).

Som exempel kan tillfÀlliga meddelanden som absent_subscriber stÄ för en abonnent som inte Àr tillgÀnglig eller inte Àr online, medan permanenta meddelanden innebÀr att abonnenten inte existerar. Beroende pÄ de fel som uppstÄr, formas policyn för ÄterutsÀndning av dessa meddelanden.

Till exempel, om abonnenten var upptagen i ett samtal och fick felet MT handset is busy, kan meddelandet skickas igen efter nÄgra minuter. Men om abonnenten har blockerat tjÀnsten för att ta emot meddelanden, kommer en ÄterutsÀndning inte att ha nÄgon mening. Listan över fel kan du hitta pÄ SMSC:s sidor, till exempel hur detta.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster