Einführung in den SMS-PDU-Modus
Mobilfunknetzbetreiber und SMS-Dienstleister nutzen das SMS-Protokoll zum Austausch von SMS-Nachrichten zwischen Netzwerkentitäten. Das SMS-Protokoll ermöglicht Mobilgeräten das Senden und Empfangen von SMS. Eine vom Mobilgerät gesendete SMS wird als Mobile Originated (MO) SMS bezeichnet. Eine vom Mobilgerät empfangene SMS wird als Mobile Terminated (MT) SMS bezeichnet. Dieser Leitfaden enthält Informationen darüber, wie Mobiltelefone MO- und MT-SMS-Nachrichten kodieren, mit anderen Worten, wie sie die Protocol Data Units (PDUs) formulieren, um Nachrichten über das Netzwerk zu senden und zu empfangen.
Einführung
Der PDU-Modus ermöglicht das Senden von binären Informationen im 7-Bit- oder 8-Bit-Format. Das ist hilfreich, wenn Sie komprimierte Daten, Binärdaten senden müssen oder Ihre eigene Kodierung der Zeichen im Binärbitstrom erstellen möchten. Wenn Sie auf die alte Kodierung eines Fernschreibers zurückgreifen, werden nur 5 Bit benötigt, um einen alphanumerischen Text zu senden. Mit 5-Bit-Kodierung können Sie 224 Zeichen statt 160 Zeichen im 7-Bit-Textmodus enthalten. Ein weiterer Grund könnte das Senden von ganzzahligen Daten sein.
Wenn Sie die volle Kontrolle über Ihre übertragenen Daten im Textmodus haben möchten, müssen Sie den PDU-Modus verstehen, da es einige Befehle gibt, mit denen Sie numerische Parameter setzen können, die auch die Art des Sendens und Empfangens einer SMS im Textmodus ändern.
Bitte beachten Sie, dass es einige Unterschiede in der Art der Implementierung des PDU-Modus und bei anderen AT-Befehlen gibt.
Die SMS-Nachricht, wie von der Etsi-Organisation festgelegt (Dokumente GSM 03.40 und GSM 03.38), kann bis zu 160 Zeichen lang sein, wobei jedes Zeichen 7 Bit gemäß dem 7-Bit-Standardalphabet umfasst. Acht-Bit- Nachrichten (max. 140 Zeichen) sind in der Regel nicht als Textnachrichten auf den Telefonen sichtbar; stattdessen werden sie für Daten verwendet, z.B. in Smart Messaging (Bilder und Klingeltöne) und OTA-Provisionierung von WAP-Einstellungen. 16-Bit-Nachrichten (max. 70 Zeichen) werden für Unicode (UCS2)-Textnachrichten verwendet, die von den meisten Telefonen angezeigt werden können. Eine 16-Bit-Textnachricht der Klasse 0 wird auf einigen Telefonen als Flash-SMS (auch blinkende SMS oder Alarm-SMS) angezeigt.
Das PDU-Format
Es gibt zwei Möglichkeiten, SMS-Nachrichten zu senden und zu empfangen: im Textmodus und im PDU-Modus (Protocol Description Unit). Der Textmodus (auf einigen Telefonen nicht verfügbar) ist lediglich eine Kodierung des Bitstroms, der durch den PDU-Modus repräsentiert wird. Alphabete können variieren, und es gibt mehrere Kodierungs- alternativen bei der Anzeige einer SMS-Nachricht. Die gebräuchlichsten Optionen sind; "PCCP437", "PCDN", "8859-1", "IRA" und "GSM". Diese werden alle durch den AT-Befehl AT+CSCS festgelegt, wenn Sie die Nachricht in einer Computeranwendung lesen. Wenn Sie die Nachricht auf Ihrem Telefon lesen, wählt das Telefon eine geeignete Kodierung. Eine Anwendung, die eingehende SMS-Nachrichten lesen kann, kann somit den Text- modus oder den PDU-Modus verwenden. Wenn der Textmodus verwendet wird, ist die Anwendung an (oder durch) die voreingestellten Kodierungsoptionen gebunden. In einigen Fällen reicht das einfach nicht aus. Wenn der PDU-Modus verwendet wird, kann jede Kodierung implementiert werden.
Empfangen einer Nachricht im PDU-Modus
Die PDU-Zeichenfolge enthält nicht nur die Nachricht, sondern auch viele Metadaten über den Absender, sein SMS-Service Center, den Zeitstempel usw. Alles ist in Form von hexadezimalen Oktetten oder dezimalen Semi-Oktetten dargestellt. Die folgende Zeichenfolge habe ich auf einem Nokia 6110 empfangen, als ich die Nachricht mit dem Inhalt "hellohello" von www.mtn.co.za gesendet habe.
07 |
917238010010F5 |
040BC87238880900F100009930925161958003C16010 |
Diese Oktettsequenz besteht aus drei Teilen: Einem ersten Oktett, das die Länge der SMSC-Informationen angibt ("07"), den SMSC-Informationen selbst ("917238010010F5") und dem SMS_DELIVER-Teil (von ETSI in GSM 03.40 spezifiziert).
! Hinweis: Bei einigen Telefonen (z.B. Ericsson 888?) werden die ersten drei (farbigen) Teile weggelassen, wenn die Nachricht im PDU-Modus angezeigt wird !
Oktett(e) | Beschreibung |
---|---|
07 |
Länge der SMSC-Informationen (in diesem Fall 7 Oktette) |
91 |
Typ der Adresse des SMSC. (91 bedeutet internationales Format der Telefonnummer) |
72 38 01 00 10 F5 |
Service Center-Nummer (in dezimalen Semi-Oktetten). Die Länge der Telefonnummer ist ungerade (11), daher wurde ein nachgestelltes F hinzugefügt, um korrekte Oktette zu bilden. Die Telefonnummer dieses Service Centers lautet "+27831000015". Siehe unten. |
04 |
Erstes Oktett dieser SMS-DELIVER-Nachricht. |
0B |
Adresslänge. Länge der Absendernummer (0B hex = 11 dez) |
C8 |
Typ der Adresse der Absendernummer |
72 38 88 09 00 F1 |
Absendernummer (dezimale Semi-Oktette), mit einem nachgestellten F |
00 |
TP-PID. Protokollkennung. |
00 |
TP-DCS Datenkodierungsschema |
99 30 92 51 61 95 80 |
TP-SCTS. Zeitstempel (Semi-Oktette) |
0A |
TP-UDL. Benutzerdatenlänge, Länge der Nachricht. Das TP-DCS-Feld zeigt 7-Bit-Daten an, daher ist die Länge hier die Anzahl der Septetten (10). Wenn das TP-DCS-Feld auf 8-Bit-Daten oder Unicode eingestellt wäre, wäre die Länge die Anzahl der Oktette (9). |
E8329BFD4697D9EC37 |
TP-UD. Nachricht "hellohello", 8-Bit-Oktette, die 7-Bit-Daten repräsentieren. |
Alle oben genannten Oktette sind hexadezimale 8-Bit-Oktette, außer der Service Center- Nummer, der Absendernummer und dem Zeitstempel; diese sind dezimale Semi-Oktette. Der Nachrichtenteil am Ende der PDU-Zeichenfolge besteht aus hexadezimalen 8-Bit-Oktetten, aber diese Oktette repräsentieren 7-Bit-Daten (siehe unten). Die Semi-Oktette sind dezimal, und z.B. wird die Absendernummer durch internes Vertauschen innerhalb der Semi-Oktette von "72 38 88 09 00 F1" zu "27 83 88 90 00 1F" erhalten. Die Länge der Telefonnummer ist ungerade, daher kann keine korrekte Oktettsequenz aus dieser Nummer gebildet werden. Dies ist der Grund, warum das nachgestellte F hinzugefügt wurde. Der Zeitstempel, wenn analysiert, entspricht "99 03 29 15 16 59 08", wobei die ersten 6 Zeichen das Datum repräsentieren, die folgenden 6 die Zeit und die letzten beiden die Zeitzone in Bezug auf GMT.
Interpretation von 8-Bit-Oktetten als 7-Bit-Nachrichten
Diese Transformation ist detailliert in GSM 03.38 beschrieben, und ein Beispiel der "hellohello"-Transformation wird hier gezeigt. Die Transformation basiert auf dem 7-Bit-Standardalphabet, aber eine Anwendung, die auf dem PDU-Modus basiert, kann jede Zeichenkodierung verwenden.
Senden einer Nachricht im PDU-Modus
Das folgende Beispiel zeigt, wie die Nachricht "hellohello" im PDU-Modus von einem Nokia 6110 gesendet wird.
AT+CMGF=0 //PDU-Modus einstellen
AT+CSMS=0 //Überprüfen, ob das Modem SMS-Befehle unterstützt
AT+CMGS=23 //Nachricht senden, 23 Oktette (ohne die beiden initialen Nullen) >0011000B916407281553F80000AA0AE8329BFD4697D9EC37Es gibt 23 Oktette in dieser Nachricht (46 'Zeichen'). Das erste Oktett ("00") zählt nicht, es ist nur ein Indikator für die Länge der SMSC-Informationen (0). Die PDU-Zeichenfolge besteht aus Folgendem:
Oktett(e) | Beschreibung |
---|---|
00 |
Länge der SMSC-Informationen. Hier ist die Länge 0, was bedeutet, dass das im Telefon gespeicherte SMSC verwendet werden soll. Hinweis: Dieses Oktett ist optional. Bei einigen Telefonen sollte dieses Oktett weggelassen werden! (Die Verwendung des im Telefon gespeicherten SMSC ist dann implizit) |
11 |
Erstes Oktett der SMS-SUBMIT-Nachricht. |
00 |
TP-Message-Reference. Der Wert "00" lässt das Telefon die Nachrichtenreferenznummer selbst setzen. |
0B |
Adresslänge. Länge der Telefonnummer (11) |
91 |
Typ der Adresse. (91 zeigt internationales Format der Telefonnummer an). |
6407281553F8 |
Die Telefonnummer in Semi-Oktetten (46708251358). Die Länge der Telefonnummer ist ungerade (11), daher wurde ein nachgestelltes F hinzugefügt, als ob die Telefonnummer "46708251358F" wäre. Die Verwendung des unbekannten Formats (d.h. des Typ-der-Adresse 81 statt 91) würde die Telefonnummern-Oktettsequenz 7080523185 (0708251358) ergeben. Beachten Sie, dass dies die Länge 10 (A) hat, die gerade ist. |
00 |
TP-PID. Protokollkennung |
00 |
TP-DCS. Datenkodierungsschema. Diese Nachricht ist gemäß dem 7-Bit-Standardalphabet kodiert. Wenn hier "02" statt "00" stünde, würde dies anzeigen, dass das TP-User-Data-Feld dieser Nachricht als 8-Bit statt 7-Bit interpretiert werden sollte (verwendet z.B. in Smart Messaging, OTA-Provisioning usw.). |
AA |
TP-Validity-Period. "AA" bedeutet 4 Tage. Hinweis: Dieses Oktett ist optional, siehe Bits 4 und 3 des ersten Oktetts |
0A |
TP-User-Data-Length. Länge der Nachricht. Das TP-DCS-Feld zeigte 7-Bit-Daten an, daher ist die Länge hier die Anzahl der Septetten (10). Wenn das TP-DCS-Feld auf 8-Bit-Daten oder Unicode eingestellt wäre, wäre die Länge die Anzahl der Oktette. |
E8329BFD4697D9EC3 7 |
TP-User-Data. Diese Oktette repräsentieren die Nachricht "hellohello". Wie die Transformation von 7-Bit-Septetten in Oktette durchgeführt wird, wird hier gezeigt |
Einführung in den SMS-Textmodus
Der Short Message Service SMS, wie er im GSM 900 / 1800 / 1900 digitalen Mobilfunkstandard definiert ist, hat mehrere einzigartige Merkmale:
Eine einzelne Kurznachricht kann bis zu 160 Zeichen (7-Bit kodiert) oder 140 Zeichen (8-Bit kodiert) Text lang sein. Diese 140 /160 Zeichen können aus Wörtern oder Zahlen oder einer alphanumerischen Kombination bestehen. Nicht textbasierte Kurznachrichten (z.B. im Binärformat) werden ebenfalls unterstützt. Mehr über diesen Binärmodus finden Sie unter dem Link PDU-Modus.
Der Short Message Service ist ein Store-and-Forward-Service, mit anderen Worten, Kurznachrichten werden nicht direkt vom Absender zum Empfänger gesendet, sondern immer über ein SMS-Center (SMSC). Jedes Mobilfunknetzwerk, das SMS unterstützt, hat ein oder mehrere Nachrichtenzentren, um die Kurznachrichten zu verwalten. Mehr über SMSC können Sie unter dem Link SMSC lesen.
Der Short Message Service bietet eine Bestätigung der Nachrichtenzustellung. Das bedeutet, dass im Gegensatz zum Paging Benutzer nicht einfach eine Kurznachricht senden und darauf vertrauen, dass sie zugestellt wird. Stattdessen kann der Absender der Kurznachricht eine Rückmeldung erhalten, die ihn darüber informiert, ob die Kurznachricht zugestellt wurde oder nicht. Der Standardparameter dieser Bestätigung vom Sender einer SMS an den Empfänger einer Nachricht ist bei den meisten GSM-Modems AUS, sodass Sie keine Bestätigung vom Empfänger erhalten. Wenn Sie ihn einschalten, erhalten Sie eine Bestätigung, dass das SMSC die Nachricht erhalten hat, und nach der Zustellung der Kurznachricht an den Empfänger erhalten Sie eine zusätzliche, zweite Nachricht (SMS rückwärts), dass die Nachricht an ein GSM-Telefon oder Modem zugestellt wurde. In dieser automatisch generierten Nachricht sind das Datum und die Uhrzeit der Zustellung kodiert. Die Bestätigung, das Kodierungsschema, die Zeit der Speicherung einer Kurznachricht im SMSC und vieles mehr werden mit dem Befehl AT+CSMP eingestellt.
Eine andere Möglichkeit besteht darin, der Textnachricht ein Präfix voranzustellen. Diese Präfixe sind nicht bei den verschiedenen GSM-Netzbetreibern weltweit gleich. Beim deutschen GSM-Netzbetreiber Vodafone müssen Sie *N# und beim GSM-Netzbetreiber T-Mobile *T# hinzufügen. Die Notation mit AT+CSMP ist bei allen SMSC gleich. Die Handhabung mit dem Präfix *T# oder *N# war oder ist notwendig, wenn Sie eine Bestätigung beim Senden einer SMS mit einem mobilen GSM-Handy erhalten möchten. Nicht alle Mobiltelefone können das Bit für eine Bestätigung einschalten.
Wenn Sie die 3 Parameter dieses Befehls verstehen möchten, müssen Sie die SMS im PDU-Modus verstehen. Ein weiterer wichtiger Befehl ist AT+CNMI. Er teilt dem GSM-Modem mit, wie mit einer eingehenden Kurznachricht umzugehen ist.
Kurznachrichten können gleichzeitig mit GSM-Sprach-, Daten- und Faxanrufen gesendet und empfangen werden. Dies ist möglich, weil während Sprach-, Daten- und Faxanrufe einen dedizierten Funkkanal für die Dauer des Anrufs belegen, Kurznachrichten über und neben dem Funkkanal den Signalisierungspfad nutzen. Daher erhalten Benutzer von SMS selten oder nie ein Besetztzeichen, wie es während Spitzenzeiten der Netzauslastung der Fall sein kann. Wenn Sie den gleichzeitigen Empfang einer SMS während eines Datenanrufs einschalten, erhalten Sie eine SMS-Zeichenfolge während eines Fax- oder Datenanrufs.
Es gibt Möglichkeiten, mehrere Kurznachrichten zu senden. SMS- Verkettung (Aneinanderreihen mehrerer Kurznachrichten) und SMS-Komprimierung (Erhalten von mehr als 160 Zeichen Informationen innerhalb einer einzelnen Kurz- nachricht) wurden definiert und in die GSM-SMS-Standards aufgenommen. Nicht alle möglichen Funktionen sind von allen GSM-Netzbetreibern weltweit implementiert. Einzelne Nachrichten sollten überall funktionieren.
Um den Short Message Service zu nutzen, benötigen Benutzer die entsprechenden Verträge und Hardware, insbesondere:
Ein Vertrag mit einem Mobilfunknetzbetreiber, der SMS unterstützt. In Deutschland bieten GSM-Netzbetreiber diesen Service mit jedem Vertragstyp an.
Die Nutzung von SMS muss für diesen Benutzer aktiviert sein (automatischer Zugriff auf die SMS wird von einigen Mobilfunknetzbetreibern gewährt, andere berechnen eine monatliche Gebühr und erfordern eine spezielle Opt-in, um den Service zu nutzen). In Deutschland ist das immer inbegriffen.
Ein Mobiltelefon oder GSM-Modem, das SMS unterstützt. Heute wird das von jedem GSM-Telefon oder GSM-Modem unterstützt.
Kenntnisse darüber, wie man mit ihrem spezifischen Modell von Mobiltelefon oder GSM-Modem eine Kurznachricht sendet oder liest. Die Implementierung ist nicht bei jedem Gerät gleich. Nicht alle GSM-Telefone, PCMIA-Modemkarten oder GSM-Modems bieten alle Funktionen, die in der ETSI beschrieben sind.
Ein Ziel, an das eine Kurznachricht gesendet oder von dem eine Nachricht empfangen werden soll, ist normalerweise ein anderes Mobiltelefon, aber es kann auch ein Faxgerät oder eine E-Mail-Adresse sein. In einigen GSM-Netzwerken ist es möglich, eine Kurznachricht in ein Fax oder eine E-Mail umzuwandeln.
More information
- SMS-Protokoll erklärt
- Einführung in den SMS-PDU-Modus