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

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

- Канонический URL: https://www.broadnet.me/ru/reference/sms-segmentation-concatenation-udh
- Язык: ru
- Последнее обновление: 2026-07-18
- Издатель: BroadNet (https://www.broadnet.me)

Как длинные SMS разбиваются и собираются заново: 6-байтовый User Data Header, вытекающие из него 153 (GSM-7) и 67 (UCS-2) символов на сегмент, номер ссылки и упорядочивание сегментов.

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

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

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

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

*6-байтовый UDH конкатенации (8-битная ссылка)*

| Октет | Поле | Значение / смысл |
|---|---|---|
| 1 | UDHL | 0x05 — длина следующего за ним заголовка |
| 2 | IEI | 0x00 — составное короткое сообщение, 8-битный номер-ссылка |
| 3 | IEDL | 0x03 — длина этого информационного элемента |
| 4 | Ссылка | Общий для всех сегментов сообщения |
| 5 | Всего сегментов | Сколько всего частей |
| 6 | Порядковый номер | Позиция этого сегмента (1..всего) |

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

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

*Ёмкость конкатенированного сегмента*

| Кодировка | Одиночный SMS | За сегмент (с UDH) |
|---|---|---|
| GSM-7 | 160 | 153 |
| UCS-2 | 70 | 67 |
| 8-бит | 140 байт | 134 байта |

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

Сегменты одного логического сообщения имеют общий номер ссылки; аппарат группирует их по ссылке и упорядочивает по номеру последовательности, чтобы восстановить текст. Сегменты могут приходить не по порядку или с опозданием, поэтому недостающая часть оставляет сообщение неполным, пока не появится (или не истечёт тайм-аут). В 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, поэтому они могут приходить не по порядку или с задержкой. Аппарат собирает их по номеру ссылки и последовательности; недостающий сегмент оставляет сообщение неполным, пока не придёт.

## Источники

- [3GPP TS 23.040 — User Data Header (§9.2.3.24)](https://www.3gpp.org/dynareport/23040.htm)
- [3GPP TS 23.038 — alphabets and data coding](https://www.3gpp.org/dynareport/23038.htm)

## См. также

- [Определение кодировки и стоимость](https://www.broadnet.me/ru/reference/encoding-detection-and-cost)
- [Опциональные параметры TLV в SMPP](https://www.broadnet.me/ru/reference/smpp-tlv-parameters)
- [Набор символов GSM-7](https://www.broadnet.me/ru/reference/gsm7-character-set)
- [Калькулятор сегментов SMS (бесплатный инструмент)](https://www.broadnet.me/ru/tools/sms-segment-calculator)
- [Продукт A2P SMS](https://www.broadnet.me/ru/products/a2p-sms)
