SMPP — одноранговий протокол коротких повідомлень

Вітання! Хоча месенджери та соцмережі з кожним днем ​​витісняють традиційні способи зв'язку, це не применшує популярності смс. Верифікація на популярному сайті, або оповіщення про транзакцію повторюють вони живі та житимуть. А замислювалися як це все працює? Дуже часто для розсилки масових повідомлень використовується протокол SMPP, про який піде мова під катом.

На Хабре вже були статті про smpp, 1,2але їх метою не було опис самого протоколу. Безумовно, ви можете відразу почати з першоджерела. специфікаціїале думаю буде непогано, щоб існував і короткий її зміст. Буду пояснювати на прикладі v3.4 Радий вашій об'єктивній критиці.

Протокол SMPP – це протокол однорангових повідомлень. Це означає, що кожен бенкет/хаб сервер рівноправний. У найпростішому випадку схема обміну смс повідомленнями виглядає так:

SMPP — одноранговий протокол коротких повідомлень

Однак, якщо національний оператор не має маршруту, до якогось віддаленого регіону він просить про це посередника — смс хаб. Іноді, щоб відправити одну смс, потрібно побудувати ланцюжок між кількома країнами чи навіть континентами.

Про протокол

SMPP - протокол прикладного рівня, який базується на обміні PDU і передається поверх TCP/IP, або Х25 сесій для передачі SMS та ussd повідомлень. Зазвичай SMPP використовується в режимі постійного підключення, що допомагає заощадити час. SMPP використовує модель спілкування клієнт-сервер.

Режим зв'язку

SMPP — одноранговий протокол коротких повідомлень

Обмін повідомлень між відправником та SMS центром через SMPP може проводитися в наступних режимах:

Transmitter (передавач) — надсилання повідомлення в один бік, по черзі
Receiver (приймач) - тільки прийом повідомлення від центру СМС.
Transreceiver (приймач) — Обмін повідомленнями між СМС центром та користувачем

Структура

SMPP — одноранговий протокол коротких повідомлень

Довжина повідомлення

Одне SMS-повідомлення може містити 70 символів при наборі кирилицею і не більше 157 латинських символів + 3 UDH Якщо надіслати SMS з великою кількістю символів, воно буде поділено на декілька сегментів і об'єднано в пристрій, що приймає. У разі сегментації кількість символів зменшується за рахунок заголовків повідомлення, в якому вказується частина повідомлення. Тому при надсиланні великого SMS-повідомлення воно містить максимум 153 латинських символів або 67 нетипових символів.

Data Coding Scheme

Однак для надсилання повідомлення символи вимагають кодування. У протоколі SMPP за кодування відповідає спеціальне поле - Data Coding Scheme, або DCS. Це поле, яке вказує, як потрібно розпізнавати повідомлення. Крім цього поле DCS включає:

  • набір символів, що визначає кодування;
  • клас повідомлення;
  • запит на автоматичне видалення після прочитання;
  • вказівку про стиснення повідомлення;
  • мова широкомовного повідомлення;

Стандартний 7-бітовий алфавіт (GSM 03.38). Був розроблений для системи повідомлень у GSM. Таке кодування підходить для англійської та низки латинських мов. Кожен символ складається з 7 бітів і кодується в октет.

UTF-16 (у GSM UCS2) Для включення відсутніх символів у 7 бітного алфавіту було розроблено кодування UTF-16, яке і додає додаткові символи (у тому числі і кириличні) за рахунок зменшення розміру повідомлення з 160 до 70 цей тип кодування майже повністю повторює Unicode .

8-бітні дані визначені користувачем. До таких відносяться KOI8-R та Windows-1251. Хоча таке рішення здається більш економічним порівняно з тим самим UTF-16. Виникає резонне питання сумісності різних пристроях. Оскільки обидва пристрої повинні бути заздалегідь налаштовані.

Клас повідомлення

  • Class0, або flash, повідомлення, що зберігаються у пам'яті телефону за бажанням користувача;
  • Class1, або ті, що зберігаються у пам'яті телефону;
  • Class1, або ті, що зберігаються у пам'яті телефону;
  • Class2 повинен гарантувати, що повідомлення збережеться в пам'яті мобільного терміналу, в іншому випадку повинен віддати оповіщення смс центру про неможливість зберегти;
  • Class3 — телефон повинен надіслати повідомлення про збереження повідомлення незалежно від кількості пам'яті пристрою. Такий тип повідомлення передбачає, що повідомлення досягло адресата;

Тип повідомлення

Silent message (SMS0) Тип смс повідомлення без вмісту. Таке смс надходить без попередження та не відображається на екрані пристрою.

PDU

Кожна pdu операція парна і складається із запиту та відповіді. Наприклад: команда, що говорить про встановлення з'єднання (bind_transmitter / bind_transmitter_resp), або про те, що повідомлення передано (deliver_sm / deliver_sm_resp)

SMPP — одноранговий протокол коротких повідомлень

Кожен pdu пакет складається з двох частин - заголовок (header) та тіло (body). Структура заголовка однакова для будь-якого pdu пакета: command length це довжина пакета, id це назва пакета, а команда status показує успішно передане повідомлення, або з помилкою.

Додаткові параметри TLV

TLV (Tag Length Value), або додаткові поля. Такі параметри використовуються для розширення функцій протоколу та не є обов'язковими. Це поле вказується в кінці поля pdu. Як приклад за допомогою TLV dest_addr_np_information можна організувати передачу інформації про портованість номера.

Ton та Npi

TON (Type of Number) параметр, повідомляє SMSC про формат адресації та тип мережі.
NPI (Numbering Plan Identification) – параметр, що вказує на план нумерації.

SMPP — одноранговий протокол коротких повідомлень

Адреса джерела повідомлення, або ім'я альфа

Повідомлення, що надсилаються на телефон бувають двох різновидів: цифрові та буквені. Цифрові можуть бути довгими (схожими на номер телефону) та короткими. Іноді оператори мають обмеження на відправлення від нейтральних імен, наприклад Infosms, Alert etc. Іноді оператори не пропускають трафік, якщо ім'я не зареєстроване в мережі. Однак це скоріше особливості оператора.

Стадії відправлення

SMPP — одноранговий протокол коротких повідомлень

SMS-SUBMIT — це надсилання повідомлення MO FSM (коротке повідомлення від мобільного терміналу)
SMS-SUBMIT REPORT — підтвердження, що повідомлення надіслано SMSC
SRI SM (SendRoutingInfo) — SMSC отримує інформацію від HLR щодо MSC/VLR місця знаходження абонента
SRI SM RESP — відповідь від HLR щодо місця розташування абонента
MT-FSM — після отримання розташування надсилається повідомлення, використовуючи операцію «Forward Short Message»
MT-FSM ACK — відповідь від SMSC про те, що повідомлення надіслано
SMS-STATUS REPORT — SMSC надсилає статус доставки повідомлення.

Статус доставки повідомлення

SMS-STATUS REPORT може набувати кількох значень:
DELIVRD повідомлення успішно доставлено
REJECTD — повідомлення відкинуто SMS-центром
EXPIRED — повідомлення видалено з черги надсилання після закінчення TTL (час життя повідомлення)
НЕПОДІЛ - Інші випадки недоставки
НЕВІДОМИЙ-Не отримано відповідь про відправлення.

Помилки передачі

Іноді причини, при яких смс повідомлення не доставляються до абонента. Наслідком цих причин є помилок. Помилки повертаються до PDUs_sms_resp. Усі помилки можна розділити на тимчасові (Temporary) та постійні (Permanent).

Як приклад, до тимчасових можна віднести absent_subscriber абонент не доступний або не в мережі, а до постійних абонент не існує. Залежно від помилок, що виникають, формується політика перенаправлення цих повідомлень.

Наприклад, якщо абонент був зайнятий розмовою і отримав помилку MT handset is busy, повідомлення можна надіслати повторно через кілька хвилин, проте, якщо у абонента заблоковано сервіс прийому повідомлень повторне перенаправлення не матиме сенсу. Список помилок ви зможете знайти на сторінках SMSC, наприклад, як ця.

Джерело: habr.com

Додати коментар або відгук