SMPP – Peer-to-Peer-Kurznachrichtenprotokoll

Hallo! Obwohl Instant Messenger und soziale Netzwerke täglich traditionelle Kommunikationsmethoden ersetzen, tut dies der Popularität von SMS keinen Abbruch. Die Verifizierung auf einer beliebten Website oder eine Transaktionsbenachrichtigung wiederholen sie und werden leben. Haben Sie darüber nachgedacht, wie das alles funktioniert? Sehr oft wird das SMPP-Protokoll zum Versenden von Massennachrichten verwendet, worauf im Folgenden eingegangen wird.

Habré hatte bereits Artikel über SMPP, 1,2, aber ihr Zweck bestand nicht darin, das Protokoll selbst zu beschreiben. Natürlich können Sie direkt von der Quelle ausgehen – Spezifikationen, aber ich denke, es wäre schön, wenn es eine Zusammenfassung des Inhalts gäbe. Ich erläutere dies am Beispiel der Version 3.4 und freue mich über Ihre sachliche Kritik.

Das SMPP-Protokoll ist ein Peer-to-Peer-Messaging-Protokoll. Das bedeutet, dass jeder Peer/Hub-Server gleich ist. Im einfachsten Fall sieht das SMS-Nachrichtenschema so aus:

SMPP – Peer-to-Peer-Kurznachrichtenprotokoll

Wenn der nationale Betreiber jedoch keine Route hat, bittet er dafür einen Vermittler in eine abgelegene Region – einen SMS-Hub. Um eine SMS zu versenden, muss man manchmal eine Kette zwischen mehreren Ländern oder sogar Kontinenten aufbauen.

Über das Protokoll

SMPP ist ein Protokoll der Anwendungsschicht, das auf dem Austausch von PDUs basiert und über TCP/IP oder X25-Sitzungen zum Senden von SMS- und USD-Nachrichten übertragen wird. Normalerweise wird SMPP im dauerhaften Verbindungsmodus verwendet, was Zeit spart. SMPP verwendet ein Client-Server-Kommunikationsmodell.

Kommunikationsmodus

SMPP – Peer-to-Peer-Kurznachrichtenprotokoll

Der Nachrichtenaustausch zwischen dem Absender und dem SMS-Zentrum über SMPP kann in folgenden Modi erfolgen:

Sender (Sender) – Übertragung einer Nachricht wiederum in eine Richtung
Empfänger (Empfänger) – empfängt nur eine Nachricht vom SMS-Zentrum.
Transceiver (Transceiver) – Nachrichtenaustausch zwischen dem SMS-Zentrum und dem Benutzer

Struktur

SMPP – Peer-to-Peer-Kurznachrichtenprotokoll

Nachrichtenlänge

Eine SMS-Nachricht kann bei der Eingabe in Kyrillisch 70 Zeichen und nicht mehr als 157 lateinische Zeichen + 3 UDH enthalten. Wenn Sie eine SMS mit einer großen Anzahl von Zeichen senden, wird diese in mehrere Segmente unterteilt und im Empfangsgerät zusammengefasst. Bei der Segmentierung wird die Anzahl der Zeichen um die Nachrichtenkopfzeilen reduziert, die den Teil der Nachricht angeben. Daher enthält eine große SMS-Nachricht maximal 153 lateinische Zeichen oder 67 untypische Zeichen.

Datencodierungsschema

Allerdings müssen Zeichen kodiert werden, um eine Nachricht zu übermitteln. Im SMPP-Protokoll ist ein spezielles Feld für die Kodierung verantwortlich – Data Coding Scheme oder DCS. Dies ist ein Feld, das angibt, wie Nachrichten erkannt werden sollen. Darüber hinaus umfasst das DCS-Feld:

  • der Zeichensatz, der die Kodierung definiert;
  • Nachrichtenklasse;
  • Bitte um automatische Löschung nach dem Lesen;
  • ein Hinweis auf Nachrichtenkomprimierung;
  • Sprache der Rundfunknachricht;

Standard-7-Bit-Alphabet (GSM 03.38). Es wurde für das Nachrichtensystem in GSM entwickelt. Diese Kodierung ist für Englisch und eine Reihe lateinischer Sprachen geeignet. Jedes Zeichen besteht aus 7 Bits und ist in einem Oktett kodiert.

UTF-16 (in GSM UCS2) Um fehlende Zeichen im 7-Bit-Alphabet einzuschließen, wurde die UTF-16-Kodierung entwickelt, die zusätzliche Zeichen (einschließlich kyrillischer Zeichen) hinzufügt, indem die Nachrichtengröße von 160 auf 70 reduziert wird, diese Art der Kodierung wiederholt Unicode fast vollständig.

Benutzerdefinierte 8-Bit-Daten. Dazu gehören KOI8-R und Windows-1251. Obwohl diese Lösung im Vergleich zum gleichen UTF-16 wirtschaftlicher zu sein scheint. Es besteht eine berechtigte Frage der Kompatibilität auf verschiedenen Geräten. Denn in diesem Fall müssen beide Geräte vorab konfiguriert werden.

Nachrichtenklasse

  • Klasse0 oder Flash, eine Nachricht, die auf Wunsch des Benutzers im Telefonspeicher gespeichert wird;
  • Klasse 1 oder solche, die im Telefonspeicher gespeichert sind;
  • Klasse 1 oder solche, die im Telefonspeicher gespeichert sind;
  • Klasse 2, muss sicherstellen, dass die Nachricht im Speicher des mobilen Endgeräts gespeichert wird, andernfalls muss das SMS-Zentrum benachrichtigt werden, dass die Speicherung nicht möglich ist;
  • Klasse 3 – in diesem Fall sollte das Telefon eine Benachrichtigung senden, dass die Nachricht gespeichert werden kann, unabhängig von der Speicherkapazität des Geräts. Diese Art von Nachricht impliziert, dass die Nachricht ihr Ziel erreicht hat;

Nachrichtentyp

Stille Nachricht (SMS0) SMS-Nachrichtentyp ohne Inhalt. Solche SMS kommen ohne Benachrichtigung und werden nicht auf dem Gerätebildschirm angezeigt.

PDU

Jeder PDU-Vorgang ist gepaart und besteht aus einer Anfrage und einer Antwort. Zum Beispiel: ein Befehl, der besagt, dass eine Verbindung hergestellt wurde (bind_transmitter / bind_transmitter_resp) oder dass eine Nachricht gesendet wurde (deliver_sm / Deliver_sm_resp)

SMPP – Peer-to-Peer-Kurznachrichtenprotokoll

Jedes PDU-Paket besteht aus zwei Teilen – einem Header (Header) und einem Body (Body). Die Header-Struktur ist für jedes PDU-Paket gleich: Die Befehlslänge ist die Länge des Pakets, die ID ist der Name des Pakets und der Statusbefehl gibt an, ob die Nachricht erfolgreich gesendet wurde oder fehlgeschlagen ist.

Zusätzliche TLV-Parameter

TLV (Tag-Längenwert) oder zusätzliche Felder. Solche Parameter dienen der Erweiterung der Funktionalität des Protokolls und sind optional. Dieses Feld wird am Ende des PDU-Felds angegeben. Mit dem TLV dest_addr_np_information können Sie beispielsweise die Übermittlung von Informationen zur Nummernportierung organisieren.

Ton und Npi

Der Parameter TON (Type of Number) informiert SMSC über das Adressierungsformat und den Netzwerktyp.
NPI-Parameter (Numbering Plan Identification), der den Nummerierungsplan angibt.

SMPP – Peer-to-Peer-Kurznachrichtenprotokoll

Adresse der Nachrichtenquelle oder Alphaname

An das Telefon gesendete Nachrichten gibt es in zwei Varianten: numerisch und alphabetisch. Nummern können lang (ähnlich einer Telefonnummer) oder kurz sein. Manchmal haben Betreiber Einschränkungen beim Senden von neutralen Namen, wie z. B. Infosms, Alert usw. Manchmal erlauben Betreiber keinen Datenverkehr, wenn der Name nicht in ihrem Netzwerk registriert ist. Dies ist jedoch eher ein Merkmal des Betreibers.

Einreichungsphasen

SMPP – Peer-to-Peer-Kurznachrichtenprotokoll

SMS-SENDEN sendet MO FSM-Nachricht (Kurznachricht vom mobilen Endgerät)
SMS-SENDEBERICHT — Bestätigung, dass die Nachricht von SMSC gesendet wurde
SRI SM (SendRoutingInfo) – Das SMSC empfängt vom HLR Informationen über den MSC/VLR-Standort des Teilnehmers
SRI SM Bzw — Antwort von HLR bezüglich Fleisch der Abonnentenposition
MT-FSM - Nach Erhalt des Standorts wird eine Nachricht mit der Operation „Kurznachricht weiterleiten“ gesendet
MT-FSM-ACK — Antwort von SMSC, dass die Nachricht gesendet wurde
SMS-STATUSBERICHT — SMSC sendet den Nachrichtenübermittlungsstatus.

Status der Nachrichtenzustellung

SMS-STATUSBERICHT kann mehrere Werte annehmen:
LIEFERUNG Nachricht erfolgreich zugestellt
ABGELEHNTD — Nachricht vom SMS-Zentrum abgelehnt
ABGELAUFEN - Die Nachricht wird nach Ablauf der TTL (Nachrichtenlebensdauer) aus der Sendewarteschlange entfernt.
UNDELIV - sonstige Fälle der Nichtlieferung
UNKNOWN- Keine Antwort erhalten.

Übertragungsfehler

Manchmal liegen die Gründe vor, warum SMS-Nachrichten nicht an den Abonnenten zugestellt werden. Die Folge dieser Gründe ist das Auftreten von Fehlern. Fehler werden in PDUs_sms_resp zurückgegeben. Alle Fehler können in temporäre (Temporary) und permanente (Permanent) unterteilt werden.

Beispielsweise ist „abwesender_Abonnent“ temporär, der Abonnent ist nicht verfügbar oder nicht online, und dauerhaft – der Abonnent existiert nicht. Abhängig von den auftretenden Fehlern wird eine Richtlinie zum erneuten Senden dieser Nachrichten erstellt.

Wenn der Teilnehmer beispielsweise mit einem Gespräch beschäftigt war und einen MT-Handset-is-busy-Fehler erhielt, kann die Nachricht nach einigen Minuten erneut gesendet werden. Wenn der Teilnehmer jedoch den Nachrichtenempfangsdienst blockiert hat, ist ein erneutes Senden nicht sinnvoll. Eine Fehlerliste finden Sie beispielsweise auf den SMSC-Seiten als diese.

Source: habr.com

Kommentar hinzufügen