7. Структура данных при использовании SMS-сервиса в качестве резервного канала передачи

7. Структура данных при использовании SMS-сервиса
в качестве резервного канала передачи

7.1. При использовании SMS для передачи пакетов данных Протокола используется режим PDU. Режим PDU позволяет передавать не только текстовую, но и бинарную информацию через SMS-сервис оператора подвижной радиотелефонной связи.

7.2. Для передачи используется структура SMS-SUBMIT с 8-ми битной кодировкой. Таблица N 7 описывает формат SMS сообщения для отправки в PDU режиме.

Таблица N 7. Формат SMS с использованием PDU
режима (SMS-SUBMIT)

┌──────┬───────┬──────┬─────┬──────┬─────┬──────┬──────┬───┬──────────────┐
│Бит 7 │ Бит 6 │Бит 5 │Бит 4│Бит 3 │Бит 2│Бит 1 │Бит 0 │Тип│ Размер, байт │
├──────┴───────┴──────┴─────┴──────┴─────┴──────┴──────┼───┼──────────────┤
│            SMSC AL (SMSC Address Length)             │ M │      1       │
├──────────────────────────────────────────────────────┼───┼──────────────┤
│             SMSC AT (SMSC Address Type)              │ O │     0,1      │
├──────────────────────────────────────────────────────┼───┼──────────────┤
│                SMSC A (SMSC Address)                 │ O │     0,6      │
├──────┬───────┬──────┬────────────┬─────┬─────────────┼───┼──────────────┤
│TP RP │TP UDHI│TP SRR│   TP VPF   │TP RD│   TP MTI    │Тип│ Размер, байт │
├──────┴───────┴──────┴────────────┴─────┴─────────────┼───┼──────────────┤
│              TP MR (Message Reference)               │ M │      1       │
├──────────────────────────────────────────────────────┼───┼──────────────┤
│         TP DA L (Destination Address Length)         │ M │      1       │
├──────────────────────────────────────────────────────┼───┼──────────────┤
│          TP DA T (Destination Address Type)          │ M │      1       │
├──────────────────────────────────────────────────────┼───┼──────────────┤
│             TP DA (Destination Address)              │ M │      6       │
├──────────────────────────────────────────────────────┼───┼──────────────┤
│             TP PID (Protocol Identifier)             │ M │      1       │
├──────────────────────────────────────────────────────┼───┼──────────────┤
│             TP DCS (Data Coding Schema)              │ M │      1       │
├──────────────────────────────────────────────────────┼───┼──────────────┤
│               TP VP (Validity Period)                │ O │   0, 1, 7    │
├──────────────────────────────────────────────────────┼───┼──────────────┤
│              TP UDL (User Data Length)               │ M │      1       │
├──────────────────────────────────────────────────────┼───┼──────────────┤
│                  TP UD (User Data)                   │ O │  0 ... 140   │
└──────────────────────────────────────────────────────┴───┴──────────────┘

7.3. SMSC AL - длина полезных данных адреса SMSC в октетах плюс 1 октет поля SMSC AT.

7.4. SMSC AT - тип формата адреса SMSC. Возможные значения параметров SMSC AT представлены в Таблице N 7. Поле опциональное, его наличие зависит от значения параметра SMSC AL (если значение SMSC AL > 0, то данное поле присутствует).

7.5. SMSC A - адрес SMSC. Каждая десятичная цифра номера представлена в виде 4-х бит (младшие 4 бита - цифра более старшего разряда, старшие 4 бита - цифра меньшего разряда). При этом, если количество цифр в номере нечетное, то в битах с 4 по 7 последнего байта номера устанавливается значение 0xF (1111b). Данный параметр опциональный и его наличие зависит от значения параметра SMSC AL. В случае отсутствия параметра SMSC A используется SMSC из SIM карты.

7.6. TP MTI - (Message Type Indicator) тип сообщения (содержит бинарное значение 01).

7.7. TP RD - (Reject Duplicates) определяет, необходимо ли SMSC принимать данное сообщение на обработку, если существует предыдущее необработанное отправленное с данного номера сообщение, которое имеет такое же значение поля TP MR и такой же номер получателя в поле TP DA.

7.8. TP VPF - (Validity Period Format) формат параметра TP VP.

7.9. TP SRR - (Status Report Request) определяет необходимость отправки подтверждения со стороны SMSC на данное сообщение (если данный бит имеет значение 1, то требуется подтверждение).

7.10. TP UDHI - (User Data Header Indicator) определяет, передается ли заголовок пользовательских данных TP UD HEADER (если поле имеет значение 1, то заголовок присутствует).

7.11. TP RP - (Reply Path) определяет, присутствует ли поле RP в сообщении.

7.12. TP MR - идентификатор сообщения (увеличивается на 1 при каждой отправке нового сообщения).

7.13. TP DA L - длина полезных данных адреса получателя (определяется как количество символов в номере получателя). Например, если адрес получателя "79991234567", то TP DA L = 0Bh (11).

7.14. TP DA T - тип формата адреса получателя. Возможные значения параметров TP DA T и SMSC AT представлены в Таблице N 9.

7.15. TP DA - адрес получателя. Кодировка номера производится по тем же правилам, что и в параметре SMSC A.

7.16. TP PID - идентификатор протокола (содержит значение 00).

7.17. TP DCS - тип кодировки данных (содержит значение 0x04, определяющий 8-битную кодировку сообщения, отсутствие компрессии).

7.18. TP VP - время актуальности данного сообщения. Таблица N 8 описывает формат данного параметра.

7.19. TP UDL - длина данных сообщения из поля TP DL, в байтах для используемой 8-битной кодировки.

7.20. TP UD - непосредственно передаваемые пользовательские данные. Таблица N 10 описывает формат данного поля.

Таблица N 8. Формат поля TP_VP в зависимости от значения
поля TP_VPF

┌───────────────┬─────────────────────────────────────────────────────────┐
│Значение битов │                        Описание                         │
├───────┬───────┼─────────────────────────────────────────────────────────┤
│   0   │   0   │Поле TP VP не передается                                 │
├───────┼───────┼─────────────────────────────────────────────────────────┤
│   1   │   0   │Поле TP VP имеет формат "относительное время" и размер 1 │
│       │       │байт                                                     │
├───────┼───────┼─────────────────────────────────────────────────────────┤
│   0   │   1   │Поле TP VP имеет формат "расширенное время" и размер 7   │
│       │       │байт                                                     │
├───────┼───────┼─────────────────────────────────────────────────────────┤
│   1   │   1   │Поле TP VP имеет формат "абсолютное время" и размер 7    │
│       │       │байт                                                     │
└───────┴───────┴─────────────────────────────────────────────────────────┘

Таблица N 9. Формат полей TP_DA_T и SMSC_AT (тип адреса)

┌──────┬───────┬──────┬──────┬───────┬──────┬───────┬─────┬───────────────┐
│Бит 7 │ Бит 6 │Бит 5 │Бит 4 │ Бит 3 │Бит 2 │ Бит 1 │Бит 0│ Размер, байт  │
├──────┼───────┴──────┴──────┼───────┴──────┴───────┴─────┼───────────────┤
│  1   │         TON         │                NPI         │       1       │
└──────┴─────────────────────┴────────────────────────────┴───────────────┘

7.21. TON - (Type Of Number) тип номера. TON может принимать следующие значения:

000 - неизвестный;

001 - международный формат;

010 - национальный формат;

011 - специальный номер, определяемый сетью;

100 - номер абонента;

101 - буквенно-цифровой (коды с 7-битной кодировкой по умолчанию);

110 - укороченный;

111 - зарезервировано.

7.22. NPI - (Numeric Plan Identification) тип плана нумерации (применимо для значений поля TON = 000, 001, 010). NPI может принимать следующие значения:

0000 - неизвестный;

0001 - план нумерации ISDN телефонии;

0011 - план нумерации при передаче данных;

0100 - телеграф;

1000 - национальный;

1001 - частный;

1111 - зарезервировано.

Таблица N 10. Формат поля TP_UD

┌──────┬──────┬──────┬──────┬───────┬──────┬──────┬──────┬────┬───────────┐
│Бит 7 │Бит 6 │Бит 5 │Бит 4 │ Бит 3 │Бит 2 │Бит 1 │Бит 0 │Тип │  Размер,  │
│      │      │      │      │       │      │      │      │    │   байт    │
├──────┴──────┴──────┴──────┴───────┴──────┴──────┴──────┼────┼───────────┤
│           LUDH (Length of User Data Header)            │ O  │     1     │
├────────────────────────────────────────────────────────┼────┼───────────┤
│     IEI "A" (Information-Element-Identifier "A")       │ O  │     1     │
├────────────────────────────────────────────────────────┼────┼───────────┤
│      LIE "A" (Length of Information-Element "A")       │ O  │     1     │
├────────────────────────────────────────────────────────┼────┼───────────┤
│       IED "A" (Information-Element-Data of "A")        │ O  │  1 ... n  │
├────────────────────────────────────────────────────────┼────┼───────────┤
│     IEI "B" (Information-Element-Identifier "B")       │ O  │     1     │
├────────────────────────────────────────────────────────┼────┼───────────┤
│      LIE "B" (Length of Information-Element "B")       │ O  │     1     │
├────────────────────────────────────────────────────────┼────┼───────────┤
│       IED "B" (Information-Element-Data of "B")        │ O  │  1 ... n  │
├────────────────────────────────────────────────────────┼────┼───────────┤
│     IEI "N" (Information-Element-Identifier "N")       │ O  │     1     │
├────────────────────────────────────────────────────────┼────┼───────────┤
│      LIE "N" (Length of Information-Element "N")       │ O  │     1     │
├────────────────────────────────────────────────────────┼────┼───────────┤
│       IED "N" (Information-Element-Data of "N")        │ O  │  1 ... n  │
├────────────────────────────────────────────────────────┼────┼───────────┤
│                    UD (User Data)                      │ M  │ 1 ... 140 │
└────────────────────────────────────────────────────────┴────┴───────────┘

7.23. LUDH - длина заголовка пользовательских данных в байтах без учета размера данного поля.

7.24. IEI "A", IEI "B", IEI "N" - идентификатор информационного элемента "A", "B" и "N" соответственно, который определяет тип информационного элемента и может принимать следующие значения (в шестнадцатеричной системе):

00 - часть конкатенируемого SMS сообщения;

01 - индикатор специального SMS сообщения;

02 - зарезервировано;

03 - не используется;

04 - 7F = зарезервировано;

80 - 9F = для специального использования SME;

A0 - BF = зарезервировано;

C0 - DF = для специального использования SC;

E0 - FF = зарезервировано.

7.25. LIE "A", LIE "B", LIE "N" - параметры, определяющие размер данных информационных элементов "A", "B" и "N" соответственно, в байтах без учета размера данного поля.

7.26. IED "A", IED "B", IED "N" - данные информационных элементов "A", "B" и "N" соответственно.

7.27. UD - данные пользователя. Размер данного поля определяется наличием заголовка пользовательских данных PT UD HEADER, состоящего из полей LUDH, IEI, LIE, IED. Если заголовок не передается, то размер равен значению из поля TP UDL из Таблицы N 7. Если заголовок передается, то размер поле вычисляется как разность (TP UDL - LUDH-1).

7.28. В случае если идентификатор информационного элемента IEI заголовка пользовательских данных TP_UD_HEADER имеет значение 00, структура поля IED будет иметь вид, представленный в Таблице N 11.

Таблица N 11. Формат поля данных информационного элемента,
характеризующего часть конкатенируемого SMS сообщения

┌──────┬──────┬──────┬──────┬─────┬──────┬──────┬──────┬───┬──────────────┐
│Бит 7 │Бит 6 │Бит 5 │Бит 4 │Бит 3│Бит 2 │Бит 1 │Бит 0 │Тип│ Размер, байт │
├──────┴──────┴──────┴──────┴─────┴──────┴──────┴──────┼───┼──────────────┤
│ CSMRN (Concatenated Short Message Reference Number)  │ M │      1       │
├──────────────────────────────────────────────────────┼───┼──────────────┤
│       MNSM (Maximum Number of Short Messages)        │ M │      1       │
├──────────────────────────────────────────────────────┼───┼──────────────┤
│   SNCSM (Sequence Number of Current Short Message)   │ M │      1       │
└──────────────────────────────────────────────────────┴───┴──────────────┘

7.29. CSMRN - номер конкатенируемого SMS сообщения. Имеет одинаковое значение для всех частей длинного SMS сообщения.

7.30. MNSM - общее количество сообщений, из которых состоит длинное SMS. Содержит значения в диапазоне от 1 до 255.

7.31. SNCSM - номер передаваемой части длинного SMS сообщения. Инкрементируется при отправке каждой новой части длинного сообщения. Содержит значение в диапазоне от 1 до 255. Если значение данного поля превышает значение из поля MNSM или равно нулю, то принимающая сторона игнорирует весь информационный элемент.

7.32. При приеме SMS используется формат SMS-DELIVER с 8-битной кодировкой. Таблица N 12 определяет формат SMS сообщения в PDU режиме при получении.

Таблица N 12. Формат принимаемого SMS сообщения
в PDU режиме (SMS-DELIVER)

┌──────┬───────┬───────┬──────┬──────┬──────┬──────┬─────┬──────┬─────────┐
│ Бит 7│ Бит 6 │ Бит 5 │ Бит 4│ Бит 3│ Бит 2│Бит 1 │Бит 0│ Тип  │ Размер, │
│      │       │       │      │      │      │      │     │      │   байт  │
├──────┴───────┴───────┴──────┴──────┴──────┴──────┴─────┼──────┼─────────┤
│              SMSC_AL (SMSC Address Length)             │  M   │    1    │
├────────────────────────────────────────────────────────┼──────┼─────────┤
│               SMSC_AT (SMSC Address Type)              │  O   │   0,1   │
├────────────────────────────────────────────────────────┼──────┼─────────┤
│                  SMSC_A (SMSC Address)                 │  O   │   0,6   │
├──────┬───────┬───────┬─────────────┬──────┬────────────┼──────┼─────────┤
│ TP_RP│TP_UDHI│TP_SRI │      -      │TP_MMS│   TP_MTI   │  M   │    1    │
├──────┴───────┴───────┴─────────────┴──────┴────────────┼──────┼─────────┤
│          TP_OA_L (Originating Address Length)          │  M   │    1    │
├────────────────────────────────────────────────────────┼──────┼─────────┤
│           TP_OA_T (Originating Address Type)           │  M   │    1    │
├────────────────────────────────────────────────────────┼──────┼─────────┤
│               TP_OA (Originating Address)              │  M   │  0 - 10 │
├────────────────────────────────────────────────────────┼──────┼─────────┤
│              TP_PID (Protocol Identifier)              │  M   │    1    │
├────────────────────────────────────────────────────────┼──────┼─────────┤
│               TP_DCS (Data Coding Schema)              │  M   │    1    │
├────────────────────────────────────────────────────────┼──────┼─────────┤
│                TP_SCTS (SMSC Time Stamp)               │  M   │    7    │
├────────────────────────────────────────────────────────┼──────┼─────────┤
│                TP_UDL (User Data Length)               │  M   │    1    │
├────────────────────────────────────────────────────────┼──────┼─────────┤
│                    TP_UD (User Data)                   │  O   │0 ... 140│
└────────────────────────────────────────────────────────┴──────┴─────────┘

7.33. SMSC_AL - длина полезных данных адреса SMSC в октетах плюс 1 октет поля SMSC_AT.

7.34. SMSC_AT - тип формата адреса SMSC. Возможные значения параметров SMSC_AT представлены в Таблице N 7. Поле опциональное и его наличие зависит от значения параметра SMSC_AL (если значение SMSC_AL > 0, то данное поле присутствует).

7.35. SMSC_A - адрес SMSC. Каждая десятичная цифра номера представлена в виде 4-х бит (младшие 4 бита - цифра старшего разряда, старшие 4 бита - цифра младшего разряда), при этом если количество цифр в номере нечетное, то в битах с 4 по 7 последнего байта номера устанавливается значение 0xF(1111b).

7.36. TP_MTI - (Message Type Indicator) тип сообщения (содержит бинарное значение 00).

7.37. TP_MMS - (More Messages to Send) определяет, существуют ли сообщения на стороне SMSC, ожидающие доставки данному получателю. Параметр может иметь следующие значения:

0 - есть еще SMS сообщения для доставки;

1 - сообщений для доставки нет.

7.38. TP_SRI - (Status Report Indication) показывает, запрашивает ли сторона, отправившая данное сообщение, уведомление о доставке. Может принимать следующие значения:

0 - уведомление не будет передаваться отправителю;

1 - уведомление будет отправлено.

7.39. TP_UDHI - (User Data Header Indicator) определяет, передается ли заголовок пользовательских данных TP_UD_HEADER (если поле имеет значение 1, то заголовок присутствует).

7.40. TP_RP - (Reply Path) определяет, присутствует ли поле RP в сообщении.

7.41. TP_OA_L - длина полезных данных адреса отправителя.

7.42. TP_OA_T - тип формата адреса отправителя. Возможные значения параметров TP_OA_T и SMSC_AT представлены в Таблицах N 7, 12.

7.43. TP_OA - адрес отправителя. Кодировка номера производится по тем же правилам, что и в параметре SMSC_A.

7.44. TP_PID - идентификатор протокола.

7.45. TP_DCS - тип кодировки данных (содержит значение 0x04, определяющее 8-битную кодировку сообщения, отсутствие компрессии).

7.46. TP_SCTS - время, когда данное сообщение было передано в транспортный уровень SMSC. Формат данного параметра определяется значением из таблицы N 12.

7.47. TP_UDL - длина данных сообщения из поля TP_DL, в байтах для используемой 8-битной кодировки.

7.48. TP_UD - непосредственно передаваемые пользовательские данные. Формат данного поля в зависимости от значения поля TP_UDHI представлен в Таблице N 7.