BroadNet
кодирование SMSСегментация

Сегментация, конкатенация SMS и UDH

Обновлено 2 мин чтенияна основе стандартов
Прямой ответ

Полезные нагрузки SMS длиннее одного сообщения разбиваются на сегменты и сшиваются обратно на аппарате с помощью User Data Header (UDH). Стандартный 6-байтовый UDH конкатенации несёт номер ссылки, общее число сегментов и последовательность данного сегмента. Он занимает часть полезной нагрузки, снижая ёмкость до 153 символов GSM-7 или 67 UCS-2 на сегмент.

§01

Зачем нужна конкатенация

Одно SMS ограничено 140 октетами пользовательских данных. Более длинный текст отправляется как несколько SMS, которые принимающий аппарат собирает в одно сообщение. Это делается с помощью User Data Header (UDH), помещённого в начало пользовательских данных каждого сегмента, вместе с флагом (бит UDHI), сообщающим аппарату о наличии заголовка. Сеть переносит каждый сегмент как независимое SMS; только аппарат объединяет их заново.

§02

6-байтовый UDH конкатенации

Самый распространённый заголовок конкатенации занимает 6 октетов: длина заголовка, идентификатор информационного элемента для 8-битной конкатенации, его длина, затем три значения, управляющие сборкой — номер ссылки, общий для всех сегментов одного сообщения, общее число сегментов и позиция данного сегмента. Существует вариант с 16-битной ссылкой (IEI 0x08) длиной 7 октетов.

6-байтовый UDH конкатенации (8-битная ссылка)
ОктетПолеЗначение / смысл
1UDHL0x05 — длина следующего за ним заголовка
2IEI0x00 — составное короткое сообщение, 8-битный номер-ссылка
3IEDL0x03 — длина этого информационного элемента
4СсылкаОбщий для всех сегментов сообщения
5Всего сегментовСколько всего частей
6Порядковый номерПозиция этого сегмента (1..всего)
§03

Ёмкость на сегмент

UDH находится внутри 140-октетной полезной нагрузки, поэтому он уменьшает объём текста, который может нести каждый сегмент. Для GSM-7 6-октетный UDH должен быть выровнен по септетам, фактически занимая 7 септетов и оставляя 153 символа на сегмент. Для UCS-2 6 октетов оставляют 134 октета — 67 символов. Для 8-битных данных остаётся 134 байта. Поэтому сообщение GSM-7 из 161 символа становится двумя сегментами до 153, а не 160 + 1.

Ёмкость конкатенированного сегмента
КодировкаОдиночный SMSЗа сегмент (с UDH)
GSM-7160153
UCS-27067
8-бит140 байт134 байта
§04

Упорядочивание и сборка

Сегменты одного логического сообщения имеют общий номер ссылки; аппарат группирует их по ссылке и упорядочивает по номеру последовательности, чтобы восстановить текст. Сегменты могут приходить не по порядку или с опозданием, поэтому недостающая часть оставляет сообщение неполным, пока не появится (или не истечёт тайм-аут). В SMPP можно конкатенировать либо байтами UDH в short_message (установив бит UDHI в esm_class), либо с TLV sar_* — выберите один метод на маршрут и придерживайтесь его.

Часто задаваемые вопросы

Часто задаваемые вопросы

Сколько символов на сегмент в конкатенированном SMS?

153 для GSM-7 и 67 для UCS-2, поскольку 6-байтовый User Data Header занимает часть 140-октетной полезной нагрузки. Обычные 8-битные сегменты данных несут по 134 байта.

Что такое UDH в SMS?

User Data Header — это небольшая структура в начале пользовательских данных сегмента, несущая управляющую информацию — для конкатенации это номер ссылки, общее число сегментов и последовательность данного сегмента. Бит UDHI сигнализирует о её наличии.

Почему сообщение из 161 символа стоит двух сегментов по 153?

Потому что как только сообщению нужна конкатенация, каждый сегмент несёт UDH, снижающий ёмкость до 153 символов GSM-7. Поэтому 161 символ разбивается на два сегмента (до 306 символов в сумме), каждый из которых тарифицируется как отдельное SMS.

В чём разница между конкатенацией UDH и SAR?

Оба разбивают длинные сообщения одинаково. UDH встраивает байты заголовка в тело сообщения и устанавливает бит UDHI в esm_class; SAR вместо этого несёт ссылку, итог и последовательность в TLV sar_* SMPP, оставляя тело чистым. Используйте тот, который поддерживает ваш маршрут.

Могут ли конкатенированные сегменты приходить не по порядку?

Да. Каждый сегмент путешествует как независимое SMS, поэтому они могут приходить не по порядку или с задержкой. Аппарат собирает их по номеру ссылки и последовательности; недостающий сегмент оставляет сообщение неполным, пока не придёт.

Ссылки

Технические характеристики источника

На этой странице представлены опубликованные стандарты, на которых они основаны. (Открывается в новой вкладке)

BNПоддерживается инженерной командой BroadNet·Обмен сообщениями операторского класса с 2003 года.
Прикрепите это к проводу

Разработано с использованием реального SMPP подключения и REST API.

Запросите тестовый доступ с реальными тестовыми ключами: сначала отправьте их на свой подтвержденный номер, а затем, после утверждения вашей личности отправителя и маршрутов, переходите к использованию в производственной среде более чем в 200 странах.