# Основы SMPP

- Канонический URL: https://www.broadnet.me/ru/academy/smpp-fundamentals
- Язык: ru
- Последнее обновление: 2026-07-18
- Издатель: BroadNet (https://www.broadnet.me)
- Markdown-версия страницы, созданная из опубликованной страницы.

Протоколы Средний

Бинарный протокол, лежащий в основе высокообъёмных SMS: типы bind, submit_sm, PDU, окно передачи, отчёты о доставке и keepalive.

5 уроки 3 мин чтения Обучение на основе стандартов · в удобном для вас темпе

Что вы узнаете

- Что такое SMPP и чем он отличается от REST API
- Типы bind: transmitter, receiver и transceiver
- Структура PDU и ключевые поля submit_sm
- Как окно передачи и throttling регулируют пропускную способность
- Как приходят отчёты о доставке и как поддерживать сессию активной

Программа курса

1. 01Что такое SMPP
2. 02Типы bind и сессии
3. 03PDU и submit_sm
4. 04Окно, throttling и keepalive
5. 05Отчёты о доставке через SMPP
6. ★Основные выводы

[Все курсы](https://www.broadnet.me/ru/academy)

Схема SMPP-сессия между вашей платформой и BroadNet

Ваша платформа (ESME)

BroadNet SMSC

Одно постоянное TCP/TLS-соединение

1. `bind_transceiver` Открыть и аутентифицировать сессию
2. `bind_transceiver_resp` Сессия принята
3. `submit_sm` Отправить сообщение
4. `submit_sm_resp` Принято, возвращен ID сообщения
5. `deliver_sm` Подтверждение доставки или входящее сообщение
6. `deliver_sm_resp` Подтверждено
7. `enquire_link` Keepalive в режиме ожидания

Урок 01

## Что такое SMPP

SMPP — Short Message Peer-to-Peer — это бинарный, сессионный протокол, который агрегаторы и операторы предоставляют для высокообъёмного A2P-обмена сообщениями. Там, где REST API удобен и не хранит состояние, SMPP — это постоянное TCP-соединение, созданное для объёма и низкой задержки.

ESME (External Short Messaging Entity — ваша сторона) открывает сессию к SMSC и обменивается PDU (Protocol Data Units). Протокол компактен и эффективен, поэтому он остаётся основой для крупных отправителей, даже когда REST покрывает повседневное использование.

Наиболее широко распространённая версия — SMPP v3.4; v5.0 добавляет сигнализацию состояния перегрузки и расширенные параметры, но остаётся обратно совместимой. Никогда не предполагайте, что функция v5.0 доступна, пока ответ на bind не подтвердит согласованную версию.

Урок 02

## Типы bind и сессии

Прежде чем что-либо отправить, ESME должен выполнить bind — аутентифицироваться и объявить роль. Bind типа transmitter только отправляет сообщения; bind типа receiver только принимает исходящие от абонента сообщения (mobile-originated) и отчёты о доставке; bind типа transceiver делает и то, и другое через одно соединение.

Transceiver обычно предпочтителен, поскольку вдвое сокращает число соединений и упрощает сопоставление DLR с отправленными сообщениями. Число одновременных bind и сообщений в секунду на bind (TPS) устанавливается провайдером и должно соблюдаться.

Bind передаёт system_id, password, system_type и address_range. Несовпадающий address_range незаметно ломает маршрутизацию MO и DLR на receiver-bind — классическая ошибка интеграции, которая не выдаёт ошибок, а просто теряет трафик.

Урок 03

## PDU и submit_sm

Каждое взаимодействие по SMPP — это PDU с заголовком команды (длина, command id, статус, порядковый номер) и телом. Рабочая лошадка — submit_sm, которая переносит одно исходящее сообщение.

Две пары полей определяют адресацию: source_addr со своим TON/NPI (type-of-number / numbering-plan-indicator) и dest_addr со своим. Буквенно-цифровой sender ID использует TON 5; международный MSISDN использует TON 1, NPI 1. Ошибка здесь приводит к некорректному отображению sender ID или отклонению сообщения.

Поле data_coding задаёт кодировку — GSM 7-бит (0), 8-бит (4) или UCS-2 (8) для Unicode. Длинные сообщения конкатенируются либо байтами UDH в теле, либо необязательными параметрами SAR (sar_msg_ref_num, sar_total_segments, sar_segment_seqnum); выберите один способ и придерживайтесь его, поскольку маршруты различаются в том, какой из них принимают.

Урок 04

## Окно, throttling и keepalive

SMPP использует окно передачи: ограничение на число PDU submit_sm, отправленных до получения ответов на них. Превышение окна или установленного TPS вызывает ESME_RTHROTTLED (0x58). Правильная реакция — снизить темп с задержкой jitter, а не зацикливаться на повторных попытках.

Чтобы обнаружить наполовину открытое TCP-соединение, каждая сторона отправляет enquire_link по таймеру простоя (обычно каждые 30–60 секунд) и ожидает enquire_link_resp. Отсутствие ответа означает, что сессия мертва, и её следует пересоздать (re-bind) с экспоненциальной задержкой.

Штатное завершение работы использует unbind / unbind_resp. Неожиданные разрывы соединения должны вызывать переподключение с задержкой и идемпотентными повторами, чтобы потерянное окно не приводило к двойной отправке и двойному выставлению счёта.

Урок 05

## Отчёты о доставке через SMPP

Отчёты о доставке приходят в виде PDU deliver_sm. Текст отчёта в поле short_message содержит id, sub, dlvrd, дату отправки, дату завершения, конечный статус (stat: DELIVRD, UNDELIV, EXPIRED, REJECTD) и код ошибки (err).

Сопоставляйте DLR с исходной отправкой по message_id провайдера, а не только по тексту отчёта — message_id может возвращаться в шестнадцатеричном виде в submit_resp, но в десятичном — в DLR, поэтому нормализуйте оба формата.

Всегда отвечайте deliver_sm_resp. Неподтверждённый DLR будет повторно отправлен SMSC и может остановить окно приёма, поэтому подтверждайте его незамедлительно, даже если ваша дальнейшая обработка асинхронна.

Основные выводы

- SMPP — это постоянная бинарная сессия для высокообъёмного A2P; v3.4 — распространённый базовый вариант, v5.0 обратно совместима.
- Bind выполняется как transmitter, receiver или transceiver; transceiver вдвое сокращает число соединений и упрощает сопоставление DLR.
- TON/NPI определяют отображение sender ID, а data_coding — кодировку; в обоих легко ошибиться.
- Соблюдайте окно и TPS, снижайте темп при ESME_RTHROTTLED и поддерживайте сессию активной с помощью enquire_link.

Продолжать идти

### Ответы на смежные вопросы, товары и инструменты

- [Что такое SMPP?](https://www.broadnet.me/ru/answers/what-is-smpp)
- [SMPP 3.4 против 5.0](https://www.broadnet.me/ru/answers/smpp-3-4-vs-5-0)
- [REST против SMPP](https://www.broadnet.me/ru/compare/sms-api-vs-smpp)
- [Справочник кодов ошибок SMPP (бесплатный инструмент)](https://www.broadnet.me/ru/tools/smpp-error-codes)
- [Декодер DLR (бесплатный инструмент)](https://www.broadnet.me/ru/tools/dlr-decoder)
- [Документация для разработчиков](https://www.broadnet.me/ru/developers)

Ссылки

- [Спецификация SMPP v3.4](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)
- [Спецификация SMPP v5.0](https://smpp.org/SMPP_v5.pdf)

Далее в учебной программе

[Средний · Маршрутизация и качество Маршрутизация SMS и маршрутизация по наименьшей стоимости Как сообщения находят путь к сети назначения — прямые маршруты, серые маршруты, маршрутизация по наименьшей стоимости и переключение на резерв по качеству.](https://www.broadnet.me/ru/academy/sms-routing-and-least-cost-routing) [Средний · Верификация OTP и верификация номера Как работают одноразовые пароли и верификация номера — TOTP/HOTP, каналы доставки и переключение между ними, конвенции автозаполнения и защита от AIT.](https://www.broadnet.me/ru/academy/otp-and-number-verification)

Примените это на практике.

## Используйте полученные знания для построения проектов.

Обсудите свою задачу с опытным инженером или откройте документацию для разработчиков и отправьте сообщение, используя описанные в этом курсе способы.

[Поговорите с инженерами.](https://www.broadnet.me/ru/contact) [Документация для разработчиков](https://www.broadnet.me/ru/developers)

Почему стоит учиться у BroadNet

- С 2003
- Страны 200+
- Ссылки оператора 1,000+
