Всё, что стоит знать, и ничего лишнего.
Что это на самом деле делает
Когда SMS-сообщение превышает 160 символов GSM-7 (или 70 символов UCS-2), стек отправителя разбивает его на несколько сегментов и добавляет к каждому сегменту префикс UDH, содержащий: индикатор заголовка конкатенации (0x00), порядковый номер конкатенации (чтобы телефон знал, какие сегменты принадлежат друг другу), общее количество сегментов и текущий индекс сегмента. Телефон получателя собирает сегменты в порядке их следования и отображает их как одно сообщение. UDH занимает 6 байтов тела сообщения, поэтому каждый объединенный сегмент содержит 153 символа GSM-7 (или 67 символов UCS-2) вместо 160 (или 70) символов в необъединенном сообщении.
Почему это важно с коммерческой точки зрения
UDH управляет оплатой длинных SMS-сообщений. Большинство агрегаторов выставляют счета за сегмент, а не за логическое сообщение — сообщение GSM-7 длиной 320 символов состоит из 3 оплачиваемых сегментов (153 + 153 + 14). Для отправителей больших объемов SMS-сообщений, использование UDH-совместимого формата (поддержание длины маркетингового текста ниже 160 символов GSM-7, нормализация знаков препинания, исключающая символы, принудительно используемые в UCS-2) напрямую снижает расходы. UDH также позволяет использовать бинарные SMS-сообщения — обновления SIM-карт по воздуху (OTA), push-уведомления WAP, MMS-уведомления — от которых до сих пор зависят некоторые платформы.
Операционный и интеграционный аспект
Большинство современных агрегаторов автоматически обрабатывают конкатенацию UDH: вы отправляете одну длинную строку сообщения, платформа сама фрагментирует и объединяет UDH, а телефон получателя собирает его заново. Некоторые устаревшие интеграции требуют от отправителя ручной обработки UDH (один submit_sm на сегмент, с UDH, созданным вручную). При отладке проблем с отображением длинных SMS — неправильный порядок сегментов, отсутствующие фрагменты, искажение символов на границах сегментов — почти всегда виновником является UDH.
Вопросы конфиденциальности и соблюдения нормативных требований
UDH сам по себе является метаданными, а не содержимым тела сообщения, и не подпадает под действие PDPL/GDPR. Однако бинарные SMS-сообщения, содержащие UDH (команды обновления SIM-карт по OTA, полезные нагрузки WAP-приложений), могут передавать конфиденциальную информацию — ключи SIM-карт по OTA, URL-адреса, содержащие токены. К бинарным SMS-сообщениям, содержащим UDH, следует относиться с той же осторожностью, что и к любому другому аутентифицированному каналу: используйте TLS при передаче, ведите журналы с контролируемым доступом и проводите аудит любой системы, которая внедряет необработанные SMS-сообщения submit_sm, содержащие UDH.