SMPP — ein Peer-to-Peer-Protokoll fĂŒr Kurzmitteilungen

Hallo! Obwohl Messenger und soziale Netzwerke die traditionellen Kommunikationswege zunehmend verdrĂ€ngen, mindert dies nicht die Beliebtheit von SMS. Die Verifizierung auf einer beliebten Website oder die Benachrichtigung ĂŒber eine Transaktion werden weiterhin genutzt und werden auch in Zukunft bestehen bleiben. Haben Sie sich schon einmal gefragt, wie das alles funktioniert? Sehr oft wird fĂŒr den Versand von Massen-Nachrichten das SMPP-Protokoll verwendet, ĂŒber das wir im Folgenden sprechen werden.

Auf Habr gab es bereits Artikel ĂŒber SMPP, 1,2, aber deren Ziel war es nicht, das Protokoll selbst zu beschreiben. NatĂŒrlich können Sie direkt beim Ursprung beginnen — Spezifikationen, aber ich denke, es wĂ€re nicht schlecht, wenn es auch eine kurze Zusammenfassung gĂ€be. Ich werde es am Beispiel von v3.4 erklĂ€ren. Ich freue mich auf Ihre 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:

SMPP — ein Peer-to-Peer-Protokoll fĂŒr Kurzmitteilungen

Wenn jedoch der nationale Betreiber keine Route zu einer abgelegenen Region hat, bittet er einen Vermittler — einen SMS-Hub. Manchmal muss fĂŒr den Versand einer SMS eine Kette zwischen mehreren LĂ€ndern oder sogar Kontinenten aufgebaut werden.

Über das Protokoll

SMPP — ein Anwendungsprotokoll, das auf dem Austausch von PDUs basiert und ĂŒber TCP/IP oder X.25-Sitzungen zum Versand von SMS- und USSD-Nachrichten ĂŒbertragen wird. In der Regel wird SMPP im Modus einer permanenten Verbindung verwendet, was Zeit spart. SMPP nutzt das Client-Server-Kommunikationsmodell.

Kommunikationsmodus

SMPP — ein Peer-to-Peer-Protokoll fĂŒr Kurzmitteilungen

Der Nachrichtenwechsel zwischen dem Absender und dem SMS-Zentrum ĂŒber SMPP kann in den folgenden Modi erfolgen:

Transmitter (Sender) — Übertragung der Nachricht in eine Richtung, nacheinander.
Receiver (EmpfĂ€nger) — nur Empfang von Nachrichten vom SMS-Zentrum.
Transreceiver (Sende- und EmpfangsgerĂ€t) — Nachrichtenwechsel zwischen dem SMS-Zentrum und dem Benutzer.

Struktur

SMPP — ein Peer-to-Peer-Protokoll fĂŒr Kurzmitteilungen

Nachrichtendauer

Eine SMS-Nachricht kann 70 Zeichen in kyrillischer Schrift und höchstens 157 lateinische Zeichen + 3 UDH enthalten. Wenn Sie eine SMS mit einer grĂ¶ĂŸeren Anzahl von Zeichen senden, wird sie in mehrere Segmente aufgeteilt und im empfangenden GerĂ€t zusammengefĂŒgt. Bei der Segmentierung reduziert sich die Anzahl der Zeichen aufgrund der Kopfzeilen der Nachricht, in denen der Teil der Nachricht angegeben wird. Daher enthĂ€lt eine große SMS-Nachricht maximal 153 lateinische Zeichen oder 67 unĂŒbliche Zeichen.

Data Coding Scheme

FĂŒr die Übertragung von Nachrichten mĂŒssen die Zeichen kodiert werden. Im SMPP-Protokoll ĂŒbernimmt ein spezielles Feld die Kodierung – das Data Coding Scheme, oder DCS. Dieses Feld gibt an, wie Nachrichten erkannt werden sollen. DarĂŒber hinaus beinhaltet das DCS-Feld:

  • ein Zeichensatz, der die Kodierung definiert;
  • die Klassifikation der Nachricht;
  • die Aufforderung zur automatischen Löschung nach dem Lesen;
  • die Angabe zur Kompression der Nachricht;
  • die Sprache der Broadcast-Nachricht;

Der standardisierte 7-Bit-Zeichensatz (GSM 03.38). Er wurde fĂŒr das Nachrichtensystem im GSM entwickelt. Diese Kodierung eignet sich fĂŒr Englisch und eine Reihe von lateinischen Sprachen. Jedes Zeichen besteht aus 7 Bits und wird in einem Oktett kodiert.

UTF-16 (im GSM UCS2) wurde entwickelt, um fehlende Zeichen im 7-Bit-Zeichensatz zu integrieren. Diese Kodierung fĂŒgt zusĂ€tzliche Zeichen (einschließlich kyrillischer) hinzu, indem die NachrichtenlĂ€nge von 160 auf 70 Zeichen reduziert wird. Dieser Kodierungstyp spiegelt fast vollstĂ€ndig Unicode wider.

Benutzerdefinierte 8-Bit-Daten. Dazu gehören KOI8-R und Windows-1251. Obwohl diese Lösung wirtschaftlicher erscheint als UTF-16, stellt sich die berechtigte Frage der KompatibilitĂ€t auf verschiedenen GerĂ€ten. In diesem Fall mĂŒssen beide GerĂ€te im Voraus konfiguriert sein.

Nachrichtentyp

  • Class0 oder Flash-Nachrichten, die im Speicher des Telefons nach Wunsch des Benutzers gespeichert werden;
  • Class1 oder solche, die im Speicher des Telefons gespeichert werden;
  • Class1 oder solche, die im Speicher des Telefons gespeichert werden;
  • Class2, die garantieren muss, dass die Nachricht im Speicher des MobilgerĂ€ts gespeichert wird; andernfalls muss sie dem SMS-Zentrum eine Benachrichtigung ĂŒber die Unmöglichkeit der Speicherung ĂŒbermitteln;
  • Class3 – in diesem Fall muss das Telefon eine Benachrichtigung senden, dass die Nachricht gespeichert werden kann, unabhĂ€ngig von der verfĂŒgbaren SpeicherkapazitĂ€t des GerĂ€ts. Dieser Nachrichtentyp impliziert, dass die Nachricht den EmpfĂ€nger erreicht hat;

Nachrichtentyp

Stille Nachricht (SMS0) – SMS-Nachricht ohne Inhalt. Diese SMS kommt ohne Benachrichtigung und wird nicht auf dem Bildschirm des GerĂ€ts angezeigt.

PDU

Jede PDU-Operation ist paarweise und besteht aus einer Anfrage und einer Antwort. Zum Beispiel: der Befehl, der die Verbindung herstellt (bind_transmitter / bind_transmitter_resp) oder der angibt, dass eine Nachricht ĂŒbermittelt wurde (deliver_sm / deliver_sm_resp).

SMPP — ein Peer-to-Peer-Protokoll fĂŒr Kurzmitteilungen

Jedes PDU-Paket besteht aus zwei Teilen – Header und Body. Die Struktur des Headers ist fĂŒr jedes PDU-Paket gleich: die BefehlslĂ€nge steht fĂŒr die LĂ€nge des Pakets, die ID ist der Name des Pakets, und der Statusbefehl zeigt an, ob die Nachricht erfolgreich ĂŒbermittelt wurde oder ob ein Fehler aufgetreten ist.

ZusÀtzliche TLV-Parameter

TLV (Tag Length Value) oder zusĂ€tzliche Felder. Solche Parameter werden verwendet, um die Funktionen des Protokolls zu erweitern und sind nicht obligatorisch. Dieses Feld wird am Ende des PDU-Felds angegeben. Als Beispiel kann mithilfe von TLV dest_addr_np_information die Übertragung von Informationen zur RufnummernportabilitĂ€t organisiert werden.

TON und NPI

TON (Type of Number) ist ein Parameter, der der SMSC das Adressierungsformat und den Netztyp mitteilt.
NPI (Numbering Plan Identification) ist ein Parameter, der den Plan zur Nummerierung angibt.

SMPP — ein Peer-to-Peer-Protokoll fĂŒr Kurzmitteilungen

Die Quelladresse der Nachricht oder der Alpha-Name.

Die an das Telefon gesendeten Nachrichten lassen sich in zwei Kategorien unterteilen: digitale und alphanumerische. Digitale Nachrichten können lang (Ă€hnlich einer Telefonnummer) oder kurz sein. Manchmal haben Anbieter EinschrĂ€nkungen bezĂŒglich der Absendernamen, wie z. B. Infosms, Alert usw. Gelegentlich wird der Datenverkehr nicht durchgelassen, wenn der Name nicht im Netzwerk registriert ist. Dies sind jedoch eher Eigenheiten des jeweiligen Anbieters.

Übermittlungsphasen

SMPP — ein Peer-to-Peer-Protokoll fĂŒr Kurzmitteilungen

SMS-SUBMIT — dies ist die Übermittlung einer MO FSM-Nachricht (kurze Nachricht von einem mobilen Terminal)
SMS-SUBMIT REPORT — BestĂ€tigung, dass die Nachricht an den SMSC gesendet wurde
SRI SM (SendRoutingInfo) — der SMSC erhĂ€lt Informationen vom HLR ĂŒber den MSC / VLR Standort des Teilnehmers
SRI SM RESP — Antwort vom HLR bezĂŒglich des Standorts des Teilnehmers
MT-FSM — nach Erhalt des Standorts wird die Nachricht mittels der Operation „Forward Short Message“ gesendet
MT-FSM ACK — Antwort vom SMSC, dass die Nachricht gesendet wurde
SMS-STATUS REPORT — der SMSC sendet den Status zur Zustellung der Nachricht.

Der Zustellstatus der Nachricht

SMS-STATUS REPORT kann mehrere Werte annehmen:
DELIVRD Nachricht erfolgreich zugestellt
REJECTD — Nachricht wurde vom SMS-Zentrum abgelehnt
EXPIRED — Nachricht wurde aus der Versandwarteschlange nach Ablauf der TTL (Lebensdauer der Nachricht) entfernt
UNDELIV — andere Zustellfehler
UNBEKANNT- keine RĂŒckmeldung ĂŒber den Versand erhalten.

Übertragungsfehler

Es gibt verschiedene GrĂŒnde, warum SMS-Nachrichten nicht an den EmpfĂ€nger zugestellt werden. Diese GrĂŒnde fĂŒhren zu Fehlern. Fehler werden in PDUs_sms_resp zurĂŒckgegeben. Alle Fehler können in vorĂŒbergehende (Temporary) und permanente (Permanent) unterteilt werden.

Ein Beispiel fĂŒr vorĂŒbergehende Fehler wĂ€re 'absent_subscriber' – der Abonnent ist nicht erreichbar oder nicht im Netz, wĂ€hrend permanente Fehler darauf hinweisen, dass der Abonnent nicht existiert. Die Art der auftretenden Fehler beeinflusst die Richtlinien fĂŒr die Wiederzusendung dieser Nachrichten.

Wenn der Abonnent beispielsweise wÀhrend eines GesprÀchs beschÀftigt war und den Fehler 'MT handset is busy' erhielt, könnte die Nachricht nach einigen Minuten erneut gesendet werden. Wenn jedoch der Dienst zum Empfang von Nachrichten beim Abonnenten gesperrt wurde, hÀtte eine erneute Versendung keinen Sinn. Eine Liste der Fehler finden Sie auf den Seiten der SMSC, zum Beispiel, wie diesem.

Quelle: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster