Транспорт — это то, во что упаковано соединение. Протокол определяет, как вас узнают, транспорт — как данные выглядят в сети и через что могут пройти. Выбор влияет на задержку, скорость и на то, переживёт ли соединение промежуточное оборудование.
| Транспорт | Накладные расходы | Через CDN | Когда брать |
|---|---|---|---|
raw (TCP) |
минимальные | нет | прямое подключение к серверу, нужна максимальная скорость |
ws (WebSocket) |
небольшие | да | нужен CDN или обычный веб-сервер перед туннелем |
grpc |
средние | да, если поддерживается HTTP/2 | сети, где длинные соединения рвут по таймауту |
httpupgrade |
небольшие | да | облегчённая замена WebSocket без его накладных расходов |
xhttp |
выше остальных | да | жёсткая фильтрация, где остальные транспорты не проходят |
Раньше назывался просто tcp, в новых версиях Xray — raw.
Данные идут прямо в TCP-соединении, без дополнительной упаковки.
Это самый быстрый вариант: нет лишних заголовков, нет промежуточных слоёв,
минимальная задержка.
Только этот транспорт работает вместе с flow=xtls-rprx-vision,
поэтому сочетание RAW + Reality + Vision
считается основным для прямого подключения. Минус один: соединение
идёт напрямую к вашему серверу, спрятать его за CDN нельзя.
Соединение начинается как обычный HTTP-запрос с заголовком Upgrade,
а затем превращается в двусторонний канал. Главное достоинство —
совместимость: WebSocket понимают почти все обратные прокси и CDN,
поэтому туннель можно спрятать за чужой инфраструктурой.
Плата — задержка. Трафик идёт не по прямой, а через узел CDN, и к каждому пакету добавляется обрамление WebSocket. На тяжёлых загрузках разница с RAW заметна.
Использует HTTP/2 и мультиплексирование: несколько логических потоков живут в одном соединении. Это помогает в сетях, где оборудование обрывает долгие соединения, — восстановление проходит быстрее.
Требует поддержки HTTP/2 на всём пути. Не каждый обратный прокси настроен пропускать gRPC корректно, и это самая частая причина, по которой конфигурация «вроде правильная», но не соединяется.
Тот же приём, что у WebSocket, — переключение соединения через
HTTP-заголовок Upgrade, — но без самого протокола WebSocket
и его обрамления кадров. Проходит везде, где проходит WebSocket,
а накладных расходов меньше. Разумный выбор, когда CDN нужен,
а возможности WebSocket не нужны.
Ранее назывался SplitHTTP. Устроен принципиально иначе: вместо одного долго живущего соединения он раскладывает поток на обычные HTTP-запросы, причём отправка и получение могут идти разными путями. Со стороны это выглядит как череда ничем не примечательных обращений к веб-серверу.
Именно поэтому xHTTP проходит там, где остальное режется: оборудованию не за что зацепиться — нет долгого соединения с характерным рисунком. Расплата — накладные расходы: заголовки повторяются в каждом запросе, и на скорости это сказывается.
Практический вывод: xHTTP берут не за скорость, а за проходимость. Если работает RAW — брать RAW.
type=xhttp, а клиент старый и такого
значения не знает, соединение не установится вовсе — обновите приложение.
raw — он быстрее всех.ws либо httpupgrade.grpc.xhttp.Как устроен VLESS · Маскировка через Reality · Клиенты и импорт подписки