Happ VPN

TLS-фрагментация: что это

Автор
Екатерина Лебедева, редактор раздела knowledge base
Проверил:
Артём Волков
Проверено:
Опубликовано:
, обновлено
Версия гайда:
1.0

Коротко

TLS-фрагментация — параметр fragment в ссылках Happ на основе Xray-core: он делит первый пакет TLS-рукопожатия (ClientHello) на несколько более коротких TCP-сегментов с паузами между ними вместо отправки одним пакетом.

TLS-рукопожатие начинается с пакета ClientHello, где клиент перечисляет версию TLS, поддерживаемые шифры и имя сервера. Параметр fragment в конфигурациях VLESS и Trojan делит этот пакет на части заданной длины и рассылает их с паузой между собой, вместо одной отправки целиком. Формат параметра — fragment=length,interval,packets, где length задаёт длину частей в байтах, interval — паузу между ними в миллисекундах, а packets — какой именно пакет делить, например только ClientHello. Это меняет то, как рукопожатие видит сетевое оборудование на пути пакетов, включая системы анализа трафика вроде DPI, и в отдельных сетях повышает стабильность соединения — ценой небольшой дополнительной задержки на установку канала.

TLS-фрагментация — параметр fragment в ссылках Happ, который делит первый пакет TLS-рукопожатия (ClientHello) на несколько более коротких TCP-сегментов с паузами между ними вместо отправки его одним пакетом.

Как устроена TLS-фрагментация

TLS-рукопожатие начинается с пакета ClientHello: в нём клиент называет версию TLS, список поддерживаемых шифров, SNI и другие параметры. Обычно этот пакет уходит на сервер одним куском.

Параметр fragment меняет этот порядок: вместо одной отправки ClientHello делится на несколько более коротких TCP-сегментов заданной длины, а между ними выдерживается пауза. Формат записи — fragment=length,interval,packets[,maxSplit], где length — диапазон длины частей в байтах, interval — диапазон паузы между ними в миллисекундах, packets — какой именно пакет делить (чаще всего значение tlshello указывает на ClientHello), а необязательный maxSplit ограничивает число частей.

Результат для сервера тот же: он получает тот же ClientHello, только по частям и с задержкой между ними, а не единым TCP-сегментом.

Где настраивается в Happ и Xray

Параметр fragment — часть конфигурации сервера на основе Xray-core: его добавляют в ссылку VLESS или Trojan вместе с параметрами security и остальными настройками TLS, либо прописывают в JSON-конфигурации ядра.

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

Пример параметра fragment

Условная ссылка VLESS с включённой фрагментацией TLS-рукопожатия:

Ссылка
vless://00000000-0000-0000-0000-000000000000@example.com:443?security=tls&fragment=1-10,5-20,tlshello#Example

Здесь части ClientHello будут по 1–10 байт, с паузой 5–20 миллисекунд между ними. Конкретные числа подбирает администратор сервера или провайдер под свою сеть — универсального набора значений не существует.

Влияние на анализ трафика, стабильность и скорость

Оборудование, которое анализирует сетевой трафик по признакам протокола в первом пакете рукопожатия, включая системы глубокого анализа пакетов (DPI), обычно ищет характерные шаблоны именно в цельном ClientHello. Когда этот пакет разбит на несколько частей во времени, данные приходят к такому оборудованию в изменённом виде.

На стабильность фрагментация влияет по инженерной причине: часть сетевого оборудования на пути обрабатывает один крупный первый пакет TLS хуже, чем несколько небольших, и деление снижает число обрывов рукопожатия в таких сетях. Цена — небольшая дополнительная задержка на установку соединения из-за пауз между сегментами; на скорость самой передачи данных после рукопожатия это не влияет.

Отличия от шумов и обфускации

ТерминЧто этоОтличие от TLS-фрагментации
Шумы (noises)добавление служебных пакетов рядом с рукопожатиемработает только вместе с fragment, а не отдельно
Обфускация Salamanderобработка пакетов QUIC общим паролемотносится к Hysteria2, а не к TCP-протоколам с TLS
TLS-рукопожатиесам процесс согласования TLS-соединенияfragment меняет форму передачи одного его пакета, а не саму процедуру
SNIимя сервера в ClientHelloодно из полей внутри пакета, который делит fragment

TLS-фрагментация не заменяет ни шифрование, ни проверку сертификата: она касается исключительно формы, в которой первый пакет рукопожатия идёт по сети.

Главное

  • TLS-фрагментация делит пакет ClientHello TLS-рукопожатия на части заданной длины и рассылает их с паузой между собой.
  • Формат параметра — fragment=length,interval,packets[,maxSplit]; packets обычно указывает на ClientHello, например значением tlshello.
  • Параметр встречается у протоколов на TCP с TLS или Reality, например VLESS и Trojan, и настраивается прямо в ссылке сервера.
  • Фрагментация меняет то, как первый пакет TLS-рукопожатия видит промежуточное сетевое оборудование, включая системы анализа трафика.
  • У фрагментации есть цена: дополнительные паузы между сегментами немного увеличивают время установки соединения.

Частые вопросы

Что именно делает параметр fragment в ссылке VLESS или Trojan?

Он разбивает первый пакет TLS-рукопожатия — ClientHello — на несколько более коротких TCP-сегментов и отправляет их с паузой, вместо того чтобы передать пакет целиком одним куском. Формат записи — fragment=length,interval,packets, например fragment=1-10,5-20,tlshello: длина частей от 1 до 10 байт, пауза между ними от 5 до 20 миллисекунд, делится именно пакет ClientHello.

Как включить TLS-фрагментацию в Happ?

Параметр fragment добавляется в ссылку конфигурации VLESS или Trojan как один из параметров запроса, вместе с security и другими настройками TLS. В самом приложении Happ также есть общие настройки для таких параметров, и они действуют, пока не отключены; настройка внутри конкретной ссылки сервера применяется как более частный случай. Точные названия пунктов меню зависят от версии приложения.

На что влияет TLS-фрагментация с точки зрения скорости?

Каждая пауза между фрагментами добавляет немного времени к установке соединения — обычно доли секунды при значениях в десятки миллисекунд. На саму скорость передачи данных после установленного соединения фрагментация не влияет: она затрагивает только первый пакет TLS-рукопожатия, а не последующий обмен данными.

Почему TLS-фрагментация иногда повышает стабильность соединения?

Пакет ClientHello при некоторых наборах параметров TLS может получиться крупным, и часть сетевого оборудования на пути обрабатывает такие большие первые пакеты хуже, чем несколько небольших. Деление на фрагменты снижает размер каждого отдельного сегмента, что в отдельных сетях снижает число обрывов рукопожатия. Эффект зависит от конкретной сети и настроек fragment, поэтому единого набора значений, подходящего всем, не существует.

Нужна ли TLS-фрагментация, если соединение и так стабильно?

Нет, это не обязательный параметр: без него VLESS и Trojan подключаются обычным TLS-рукопожатием одним пакетом. Добавлять fragment имеет смысл, если конкретное соединение нестабильно или разрывается на этапе рукопожатия, а не по умолчанию для любого сервера. Лишние паузы между фрагментами без необходимости лишь немного замедляют подключение.

Чем TLS-фрагментация отличается от шифрования TLS?

Шифрование TLS защищает содержимое соединения после рукопожатия — его обеспечивает сам протокол TLS, с сертификатом сервера или через Reality. TLS-фрагментация не добавляет и не убирает шифрование: она лишь меняет, как именно передаются пакеты первого этапа рукопожатия, деля один пакет на несколько частей во времени.

Упомянутые темы

Разделы по теме

Источники

  1. Документация Happ: примеры ссылок и параметры — обращение 28 сентября 2026
  2. Документация Xray: исходящее подключение VLESS — обращение 28 сентября 2026