Hallo! Obwohl Messenger und soziale Netzwerke traditionelle Kommunikationsmittel zunehmend verdrĂ€ngen, mindert das nicht die Beliebtheit von SMS. Die Verifizierung auf beliebten Websites oder die Benachrichtigung ĂŒber Transaktionen wiederholen sie lebendig und werden weiterhin bestehen. Hast du dir schon einmal Gedanken gemacht, wie das alles funktioniert? Sehr oft wird das Protokoll SMPP fĂŒr den Versand von Massenmitteilungen verwendet, ĂŒber das wir im Folgenden sprechen werden.
Auf Habr gab es bereits Artikel ĂŒber SMPP, ,, aber deren Ziel war nicht die Beschreibung des Protokolls selbst. SelbstverstĂ€ndlich kannst du sofort mit der Originalquelle beginnen â , aber ich denke, es wĂ€re nicht schlecht, auch eine kurze Zusammenfassung davon zu haben. Ich werde anhand des Beispiels v3.4 erklĂ€ren. Ich freue mich ĂŒber deine objektive Kritik.
Das SMPP-Protokoll ist ein Protokoll fĂŒr Peer-to-Peer-Nachrichten. Das bedeutet, dass jeder Peer/Hub-Server gleichberechtigt ist. Im einfachsten Fall sieht das Schema fĂŒr den Austausch von SMS-Nachrichten so aus:

Wenn der nationale Betreiber jedoch keinen Zugang zu einem bestimmten abgelegenen Gebiet hat, bittet er einen Vermittler â den SMS-Hub â um Hilfe. Manchmal muss zur Ăbermittlung einer SMS eine Kette zwischen mehreren LĂ€ndern oder sogar Kontinenten aufgebaut werden.
Ăber das Protokoll
SMPP ist ein Anwendungsprotokoll, das auf dem Austausch von PDUs basiert und ĂŒber TCP/IP oder X25-Sitzungen zur Ăbertragung von SMS und USSD-Nachrichten ĂŒbertragen wird. SMPP wird normalerweise im Modus einer stĂ€ndigen Verbindung verwendet, was Zeit spart. SMPP verwendet das Kommunikationsmodell Client-Server.
Verbindungsmodus

Der Austausch von Nachrichten zwischen dem Absender und dem SMS-Zentrum ĂŒber SMPP kann in folgenden Modi erfolgen:
Transmitter (Sender) â Ăbertragung der Nachricht in eine Richtung, nacheinander
Receiver (EmpfĂ€nger) â nur Empfang von Nachrichten vom SMS-Zentrum.
Transreceiver (Sender-EmpfĂ€nger) â Austausch von Nachrichten zwischen dem SMS-Zentrum und dem Benutzer.
Struktur

Nachrichtendauer
Eine SMS-Nachricht kann 70 Zeichen in kyrillischer Schrift und nicht mehr als 157 lateinische Zeichen + 3 UDH enthalten. Wenn du eine SMS mit einer gröĂeren Anzahl von Zeichen sendest, wird sie in mehrere Segmente aufgeteilt und im empfangenden GerĂ€t wieder zusammengefĂŒgt. Bei der Segmentierung verringert sich die Anzahl der Zeichen aufgrund der Nachrichtenelemente, in denen der Teil der Nachricht angegeben ist. Daher enthĂ€lt eine groĂe SMS-Nachricht maximal 153 lateinische Zeichen oder 67 nichttypische Zeichen.
Data Coding Scheme
Um eine Nachricht zu ĂŒbertragen, mĂŒssen die Zeichen kodiert werden. Im SMPP-Protokoll ist ein spezielles Feld fĂŒr die Kodierung verantwortlich â das Data Coding Scheme, oder DCS. Dieses Feld gibt an, wie Nachrichten erkannt werden sollten. AuĂerdem umfasst das DCS-Feld:
- eine Zeichencodierung, die die Kodierung definiert;
- die Nachrichtenklasse;
- eine Anfrage zur automatischen Löschung nach dem Lesen;
- eine Angabe zur Komprimierung der Nachricht;
- die Sprache der Broadcast-Nachricht;
Der standardisierte 7-Bit-Zeichensatz (GSM 03.38). Er wurde fĂŒr das Nachrichtensystem in GSM entwickelt. Diese Kodierung eignet sich fĂŒr Englisch und eine Reihe anderer lateinischer Sprachen. Jedes Zeichen besteht aus 7 Bit und wird in einem Oktett kodiert.
UTF-16 (im GSM UCS2) Um nicht enthaltene Zeichen im 7-Bit-Alphabet einzubringen, wurde die Kodierung UTF-16 entwickelt, die zusĂ€tzliche Zeichen (einschlieĂlich kyrillischer) durch Reduzierung der NachrichtengröĂe von 160 auf 70 hinzufĂŒgt; dieser Kodierungstyp wiederholt fast vollstĂ€ndig Unicode.
Benutzerdefinierte 8-Bit-Daten. Dazu zĂ€hlen KOI8-R und Windows-1251. Obwohl diese Lösung im Vergleich zu UTF-16 wirtschaftlicher erscheint, stellt sich die berechtigte Frage der KompatibilitĂ€t auf verschiedenen GerĂ€ten. In diesem Fall mĂŒssen beide GerĂ€te im Voraus konfiguriert sein.
Nachrichtenklasse
- Class0, oder Flash-Nachricht, die auf Wunsch des Benutzers im Telefonspeicher gespeichert wird;
- Class1, oder solche, die im Telefonspeicher gespeichert werden;
- Class1, oder solche, die im Telefonspeicher gespeichert werden;
- Class2 muss garantieren, dass die Nachricht im Speicher des MobilgerĂ€ts gespeichert bleibt, andernfalls sollte eine Benachrichtigung an das SMS-Zentrum ĂŒber die Unmöglichkeit des Speicherns gesendet werden;
- Class3 â in diesem Fall muss das Telefon eine Benachrichtigung senden, dass die Nachricht gespeichert werden kann, unabhĂ€ngig von der Menge des verfĂŒgbaren Speichers im GerĂ€t. Dieser Nachrichtentyp impliziert, dass die Nachricht den EmpfĂ€nger erreicht hat;
Nachrichtentyp
Silent message (SMS0) Eine SMS-Nachricht ohne Inhalt. Diese SMS kommt ohne Benachrichtigung und wird nicht auf dem Bildschirm des GerÀtes angezeigt.
PDU
Jede PDU-Operation ist paarweise und besteht aus einer Anfrage und einer Antwort. Zum Beispiel: ein Befehl, der ĂŒber den Verbindungsaufbau informiert (bind_transmitter / bind_transmitter_resp), oder dass die Nachricht ĂŒbermittelt wurde (deliver_sm / deliver_sm_resp)

Jedes PDU-Paket besteht aus zwei Teilen â Header und Body. Die Struktur des Headers ist fĂŒr jedes PDU-Paket gleich: 'command length' ist die LĂ€nge des Pakets, 'id' ist der Name des Pakets, und der Befehl 'status' zeigt, ob die Nachricht erfolgreich ĂŒbermittelt oder fehlerhaft war.
ZusÀtzliche TLV-Parameter
TLV (Tag Length Value) oder zusĂ€tzliche Felder. Solche Parameter werden zur Erweiterung der Funktionen des Protokolls verwendet und sind nicht obligatorisch. Dieses Feld wird am Ende des PDU-Feldes angegeben. Zum Beispiel kann mit dem TLV 'dest_addr_np_information' die Ăbertragung von Informationen ĂŒber die PortabilitĂ€t der Nummer organisiert werden.
Ton und Npi
TON (Type of Number) Parameter, der der SMSC das Adressierungsformat und den Typ des Netzwerks mitteilt.
NPI (Numbering Plan Identification) Parameter, der den Nummerierungsplan angibt.

Adresse des Absenders der Nachricht oder alpha Name
Nachrichten, die an das Telefon gesendet werden, gibt es in zwei Varianten: digitale und Buchstabennachrichten. Digitale Nachrichten können lang (Àhnlich wie eine Telefonnummer) oder kurz sein. Manchmal gibt es BeschrÀnkungen der Betreiber bei der Zustellung von neutralen Namen, wie z.B. Infosms, Alert usw. Manchmal lassen Betreiber keinen Traffic durch, wenn der Name nicht in ihrem Netzwerk registriert ist. Allerdings sind das eher spezielle Merkmale des Betreibers.
Phasen des Versands
![]()
SMS-SUBMIT â dies ist das Senden einer MO FSM-Nachricht (kurze Nachricht vom mobilen Terminal)
SMS-SUBMIT REPORT â BestĂ€tigung, dass die Nachricht an die SMSC gesendet wurde
SRI SM (SendRoutingInfo) â die SMSC erhĂ€lt Informationen vom HLR ĂŒber den Standort des MSC / VLR des Teilnehmers
SRI SM RESP â Antwort vom HLR ĂŒber den Standort des Teilnehmers
MT-FSM â nach Erhalt des Standorts wird die Nachricht ĂŒber die Operation âForward Short Messageâ gesendet
MT-FSM ACK â Antwort von der SMSC, dass die Nachricht gesendet wurde
SMS-STATUS REPORT â die SMSC sendet den Status der Zustellung der Nachricht.
Zustellstatus der Nachricht
SMS-STATUS REPORT kann mehrere Werte annehmen:
DELIVRD Nachricht erfolgreich zugestellt
REJECTD â Nachricht wurde von der SMS-Zentrale abgelehnt
EXPIRED â Nachricht wurde nach Ablauf der TTL (Lebensdauer der Nachricht) aus der Versandwarteschlange entfernt
UNDELIV â andere FĂ€lle der Nichtzustellung
UNKNOWN- keine Antwort ĂŒber den Versand erhalten.
Ăbertragungsfehler
Manchmal gibt es GrĂŒnde, warum SMS-Nachrichten nicht an den Teilnehmer zugestellt werden. Die Folge dieser GrĂŒnde sind auftretende Fehler. Fehler werden in den PDUs_sms_resp zurĂŒckgegeben. Alle Fehler können in temporĂ€re (Temporary) und permanente (Permanent) unterteilt werden.
Als Beispiel können temporĂ€re Fehler wie absent_subscriber (Abonnent nicht erreichbar oder offline) und permanente Fehler wie "Abonnent existiert nicht" eingestuft werden. Je nach den auftretenden Fehlern wird eine Politik fĂŒr die erneute Ăbermittlung dieser Nachrichten erstellt.
Wenn der Abonnent beispielsweise im GesprĂ€ch war und den Fehler MT handset is busy erhalten hat, kann die Nachricht nach einigen Minuten erneut gesendet werden. Wenn der Dienst zum Empfang von Nachrichten jedoch beim Abonnenten gesperrt ist, macht eine erneute Ăbertragung keinen Sinn. Eine Liste der Fehler finden Sie auf den Seiten des SMSC, zum Beispiel wie .
Quelle: habr.com
