SMPP - Peer-to-Peer-Kurznachrichtenprotokoll

Hallo! Obwohl Messenger und soziale Netzwerke jeden Tag traditionelle Kommunikationsmethoden verdrängen, beeinträchtigt dies nicht die Popularität von SMS. Die Überprüfung auf einer beliebten Website oder die Transaktionsbenachrichtigung zeigt, dass sie leben und leben werden. Haben Sie sich jemals gefragt, wie das alles funktioniert? Sehr oft wird SMPP verwendet, um Massennachrichten zu senden, die unter der Katze besprochen werden.

Es gab bereits Artikel über Habr über smpp, 1 , 2 , aber ihr Zweck war nicht, das Protokoll selbst zu beschreiben. Natürlich können Sie sofort mit der primären Quelle beginnen - der Spezifikation , aber ich denke, es wäre schön, eine kurze Zusammenfassung zu haben. Ich werde mit einem Beispiel v3.4 erklären. Ich freue mich über Ihre objektive Kritik.

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

Bild

Wenn der nationale Betreiber jedoch keine Route zu einer abgelegenen Region hat, fragt er nach diesem Vermittler - dem SMS-Hub. Manchmal müssen Sie zum Senden einer SMS eine Kette zwischen mehreren Ländern oder sogar Kontinenten aufbauen.

Über das Protokoll


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

Kommunikationsmodus


Bild

Der Nachrichtenaustausch zwischen dem Absender und SMSC über SMPP kann in den folgenden Modi durchgeführt werden:

Sender (Sender) - abwechselnd Übertragung einer Nachricht in eine Richtung
Empfänger (Empfänger) - Empfängt nur Nachrichten von SMSC.
Transreceiver (Transceiver) - Nachrichten zwischen SMSC und Benutzer

Struktur


Bild

Nachrichtenlänge


Eine SMS-Nachricht kann bei Eingabe von Kyrillisch 70 Zeichen und nicht mehr als 157 lateinische Zeichen + 3 UDH enthalten. Wenn gesendet. SMS mit einer großen Anzahl von Zeichen wird in mehrere Segmente unterteilt und im Empfangsgerät kombiniert. Bei der Segmentierung wird die Anzahl der Zeichen aufgrund der Überschriften der Nachricht reduziert, in denen der Teil der Nachricht angegeben ist. Daher enthält eine große SMS-Nachricht maximal 153 lateinische oder 67 atypische Zeichen.

Datencodierungsschema


Zeichen müssen jedoch codiert sein, um eine Nachricht zu übertragen. Im SMPP-Protokoll ist ein spezielles Feld für die Codierung verantwortlich - das Data Coding Scheme (DCS). Dies ist ein Feld, das angibt, wie Nachrichten erkannt werden sollen. Darüber hinaus enthält das DCS-Feld:

  • der Zeichensatz, der die Codierung definiert;
  • Klassennachricht;
  • Antrag auf automatische Löschung nach dem Lesen;
  • Anzeige der Nachrichtenkomprimierung;
  • Rundfunksprache;

Standard 7-Bit-Alphabet (GSM 03.38). Es wurde für das GSM-Nachrichtensystem entwickelt. Eine solche Codierung ist für Englisch und einige lateinische Sprachen geeignet. Jedes Zeichen besteht aus 7 Bits und ist in einem Oktett codiert.

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

Benutzerdefinierte 8-Bit-Daten. Dazu gehören der KOI8-R und Windows-1251. Obwohl diese Lösung im Vergleich zu derselben UTF-1 wirtschaftlicher zu sein scheint, ist zur Verwendung solcher Codierungen eine vorläufige Konfiguration der Empfangs- und Sendevorrichtungen erforderlich. Wenn auf einigen von ihnen die Codierungsdaten nicht unterstützt werden, wird die Meldung nicht korrekt angezeigt. Da in diesem Fall beide Geräte im Voraus konfiguriert werden müssen.

Klassennachrichten


  • Class0 oder Flash, eine Nachricht, die auf Anfrage des Benutzers im Speicher des Telefons gespeichert wird.
  • Klasse 1 oder im Telefon gespeicherte;
  • Klasse 2 muss sicherstellen, dass die Nachricht im Speicher des mobilen Endgeräts gespeichert ist, andernfalls muss sie SMSC-Warnungen über die Unfähigkeit zum Speichern geben.
  • Klasse 3 - In diesem Fall sollte das Telefon eine Benachrichtigung senden, dass die Nachricht unabhängig von der Speicherkapazität im Gerät gespeichert werden kann. Diese Art von Nachricht impliziert, dass die Nachricht ihr Ziel erreicht hat.

Nachrichtentyp


Stille Nachricht (SMS0) Art der SMS-Nachricht ohne Inhalt. Solche SMS kommen ohne Vorankündigung und werden nicht auf dem Gerätebildschirm angezeigt.

PDU


Jede pdu-Operation ist gepaart und besteht aus einer Anfrage und einer Antwort. Beispiel: Ein Befehl zum Herstellen einer Verbindung (bind_transmitter / bind_transmitter_resp) oder zum Senden der Nachricht (Deliver_sm / Deliver_sm_resp).

Bild

Jedes pdu-Paket besteht aus zwei Teilen - einem Header und einem Body. Die Header-Struktur ist für jedes pdu-Paket gleich: Die Befehlslänge ist die Länge des Pakets, id ist der Name des Pakets und der Statusbefehl zeigt eine erfolgreich übertragene Nachricht oder mit einem Fehler an.

Erweiterte TLV-Optionen


TLV (Tag Length Value) oder optionale Felder. Solche Parameter werden verwendet, um die Funktionen des Protokolls zu erweitern, und sind nicht erforderlich. Dieses Feld wird am Ende des pdu-Feldes angezeigt. Mit TLV dest_addr_np_information können Sie beispielsweise die Übertragung von Informationen zum Portieren einer Nummer organisieren.

Ton und Npi


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

Bild

Nachrichtenquellenadresse oder Alphaname


An das Telefon gesendete Nachrichten gibt es in zwei Varianten: digital und alphabetisch. Digital kann lang (ähnlich einer Telefonnummer) und kurz sein. Manchmal haben Betreiber Einschränkungen beim Senden von neutralen Namen, z. B. Infosms, Alert usw. Manchmal erlauben Betreiber keinen Datenverkehr, wenn der Name nicht in ihrem Netzwerk registriert ist. Es sind jedoch eher die Merkmale des Bedieners.

Versandstufen


Bild

SMS-SUBMIT sendet eine MO FSM-Nachricht (Kurznachricht von einem mobilen Endgerät)
SMS-SUBMIT REPORT - Bestätigung, dass die Nachricht von SMSC gesendet wurde
SRI SM (SendRoutingInfo) - SMSC empfängt vom HLR Informationen bezüglich der MSC / VLR des Standortes des Teilnehmers
SRI SM RESP - Antwort des HLR bezüglich des Teilnehmerpositionsfleischs
MT-FSM - Nach dem Empfang des Standorts wird eine Nachricht mit der Operation "Kurznachricht weiterleiten" gesendet
MT-FSM ACK - Antwort von SMSC, dass eine Nachricht gesendet wurde
SMS-STATUS-BERICHT - SMSC sendet den Status der Nachrichtenübermittlung.

Status der Nachrichtenübermittlung


SMS-STATUS REPORT kann mehrere Werte annehmen:
DELIVRD- Nachricht erfolgreich zugestellt
REJECTD - Nachricht vom SMS-Center abgelehnt
ABGELAUFEN - Die Nachricht wird nach dem Ende der TTL (Nachrichtenlebensdauer) aus der Sendewarteschlange entfernt.
UNDELIV - andere Fälle von Nichtlieferung
UNBEKANNT - Keine Antwort gesendet .

Übertragungsfehler


Manchmal werden Nachrichten nicht zugestellt. Infolgedessen treten Fehler auf. Fehler werden an PDUs_sms_resp zurückgegeben. Alle Fehler können in temporäre (temporäre) und permanente (permanente) Fehler unterteilt werden.

Beispielsweise sind die temporären Abonnenten abwesend, der Abonnent ist nicht verfügbar oder nicht im Netzwerk, und der permanente Abonnent existiert nicht. Abhängig von den auftretenden Fehlern wird eine Richtlinie zum Weiterleiten dieser Nachrichten erstellt.

Wenn beispielsweise ein Teilnehmer mit dem Sprechen beschäftigt war und ein MT-Mobilteil empfangen wurde, kann die Nachricht in wenigen Minuten erneut gesendet werden. Wenn der Teilnehmer jedoch einen blockierten Nachrichtendienst hat, ist ein erneutes Senden nicht sinnvoll. Die Liste der Fehler finden Sie beispielsweise auf den SMSC-Seiten.

Source: https://habr.com/ru/post/de452842/


All Articles