Технологии

Транспорты VLESS: XHTTP, gRPC и TCP — чем отличаются и что выбрать

7 мин чтения

В настройках современных клиентов рядом с протоколом всегда стоит второй параметр — транспорт. Его часто оставляют по умолчанию, хотя на практике он влияет и на скорость, и на устойчивость соединения не меньше самого протокола. Разбираем три варианта, которые встречаются чаще всего.

Протокол и транспорт — это разные вещи

Протокол (например, VLESS) отвечает за то, как клиент представляется серверу и как шифруются данные. Транспорт — за то, в какую форму эти данные упаковываются перед отправкой. Один и тот же протокол можно везти поверх разных транспортов, и снаружи такие соединения выглядят по-разному, хотя внутри всё одинаково.

TCP — прямой и самый простой

Данные идут одним потоком поверх обычного TCP-соединения. Это самый экономный вариант: нет промежуточных слоёв, нет лишних заголовков, минимальная задержка на установку. Именно поэтому он используется по умолчанию почти везде.

Слабое место — предсказуемость. Соединение живёт долго, поток непрерывный, и его поведение довольно однообразно. Плюс чисто техническое: одно TCP-соединение на всё означает, что потеря одного пакета придерживает всю очередь целиком.

gRPC — поверх HTTP/2

Данные едут внутри gRPC-вызовов поверх HTTP/2. Снаружи это выглядит как обычный обмен современного веб-приложения с сервером. Практические плюсы: соединение мультиплексируется, промежуточные узлы и балансировщики обращаются с ним привычным образом, а восстановление после обрыва обычно проходит мягче.

Плата — накладные расходы. Заголовки HTTP/2 и обёртка gRPC добавляют байты к каждому обмену, а установка соединения занимает чуть больше времени. На быстром канале разница незаметна, на медленном мобильном — уже ощутима.

XHTTP — соединение в виде HTTP-запросов

XHTTP — более новый транспорт ядра Xray: он упаковывает соединение в обычные HTTP-запросы и ответы, а в связке с REALITY они идут внутри того же TLS, что и у сайта-прикрытия. Для сети это похоже на обмен браузера с сайтом, а не на сплошной поток одной и той же формы.

У XHTTP несколько режимов. В packet-up данные к серверу уходят серией коротких запросов, и обрыв одного из них не рушит сессию: следующий запрос уходит независимо. В stream-up и stream-one выгрузка идёт потоком внутри долгого запроса — это быстрее и по поведению ближе к TCP, но внешне остаётся HTTP-обменом. Режим выбирает сервис, он приходит в подписке.

Что выбирать

  • Стабильный домашний интернет, важна максимальная скорость — TCP. Меньше всего накладных расходов.
  • Мобильная сеть, частые переключения между вышками — XHTTP или gRPC: они переживают обрывы мягче.
  • Слабое устройство или очень медленный канал — TCP: остальные варианты тратят чуть больше и процессора, и трафика.
  • Не уверены — оставьте то, что предлагает сервис по умолчанию. Транспорт должен совпадать на клиенте и сервере, произвольно поменять его в одном месте нельзя.
Транспорт задаётся на сервере и приходит в клиент вместе с подпиской. Менять его вручную в настройках клиента не нужно и обычно вредно: параметры перестанут совпадать, и соединение не установится.

XHTTP в ПроксисВпнович

На XHTTP у нас работают Британия и США: VLESS + XHTTP + REALITY в режиме stream-one. Какой вариант получит устройство, решает само приложение: клиенты на ядре Xray — Happ, INCY, v2RayTun и другие — подключаются по XHTTP автоматически, остальные получают ту же локацию по обычному TCP, тоже автоматически. Выбирать вручную не нужно; после смены клиента достаточно обновить подписку.

XHTTP сам по себе не быстрее и не надёжнее TCP — это то же соединение в другой форме, и от транспорта зависит, как трафик выглядит для сети, а не его скорость.

  • Клиент на ядре Xray — например, Happ или INCY — сам подключает Британию и США по XHTTP.
  • Клиенты на ядре sing-box (Hiddify и похожие) XHTTP не поддерживают: они автоматически получают ту же локацию по обычному TCP, второй линии для ручного переключения больше нет.

Про разницу между самими протоколами — в разборе VLESS Reality против Hysteria2. Как устроено ядро, которое всё это исполняет, описано в гайде что такое VPN простыми словами.

XHTTP быстрее, чем TCP?

На хорошем канале — нет, скорее чуть медленнее из-за накладных расходов. Его преимущество не в скорости, а в устойчивости на нестабильной сети.

Можно ли переключить транспорт прямо в клиенте?

Технически поле есть, но менять его в одиночку бессмысленно: сервер ждёт конкретный транспорт, и при несовпадении соединение просто не установится.

Какой транспорт используется у меня сейчас?

Посмотрите параметры сервера в клиенте: там есть поле типа соединения — tcp, grpc или xhttp. Оно приходит из подписки. У нас на ядре Xray Британия и США приходят как xhttp, у остальных клиентов и остальных серверов на VLESS — tcp.

Почему бы не перевести на XHTTP сразу все серверы?

Не все клиенты его понимают. Поэтому сервис сам решает по типу приложения: клиент на ядре Xray получает XHTTP, а остальные — привычный TCP той же локации, без выбора вручную.

Помогла статья?

Ответ ни к чему не обязывает и виден только нам.

Переслать статью

Пригодится тому, у кого та же проблема.

TelegramWhatsAppVK