Самая техническая особенность, отличающая SOCKS5 от HTTP прокси, — способность передавать UDP-трафик. HTTP прокси работает только поверх TCP и никак не может передавать UDP-пакеты. Эта разница становится решающей в играх, голосовой связи и некоторых DNS-сценариях.
Команда UDP ASSOCIATE
В SOCKS5 передача UDP начинается командой CMD=0x03 (UDP ASSOCIATE). Механизм отличается от TCP:
Важная деталь: TCP-соединение задаёт «срок жизни» UDP-сессии. Если клиент не держит TCP-соединение открытым, реле закрывается.
Заголовок UDP-пакета
UDP-пакеты не отправляются напрямую; перед каждым пакетом добавляется небольшой заголовок SOCKS5:
Этот дополнительный заголовок обеспечивает маршрутизацию UDP-пакетов через реле к нужному получателю. Размер заголовка добавляет несколько байт накладных расходов на пакет.
Проблема поддержки: её почти нигде нет
Хотя UDP ASSOCIATE описан в RFC, на практике он поддерживается нечасто. Причины операционные:
| Сторона | Типичная ситуация | Почему |
|---|---|---|
| Коммерческие провайдеры прокси | Обычно отключено | Сложность борьбы со злоупотреблениями и управления ресурсами |
| Клиентские библиотеки | Частичная поддержка | Реализация сложнее, чем для TCP |
| Браузеры | Нет | Им это не нужно |
| Собственный развёрнутый сервер | Настраивается | Полный контроль у вас |
Формулировка «мы поддерживаем SOCKS5» может не включать поддержку UDP. Если вам нужен UDP, спросите об этом прямо и протестируйте на пробной версии.
В каких сценариях это нужно?
Задачи, требующие UDP
- Трафик онлайн-игр в реальном времени.
- Протоколы голосовой и видеосвязи.
- Передача DNS-запросов через прокси.
- Некоторые потоковые (streaming) протоколы.
- Соединения на базе QUIC / HTTP-3.
Задачи, не требующие UDP
- Веб-скрапинг и сбор данных.
- Управление аккаунтами в соцсетях.
- Интеграции по API.
- SEO и мониторинг цен.
- Верификация рекламы.
О связи прокси и игр см. снижает ли прокси пинг в игре — в той статье мы также разобрали роль UDP в игровом трафике.
Примечание о QUIC и HTTP/3
Современный веб всё больше переходит на протокол QUIC, а QUIC работает поверх UDP. Если ваш прокси не передаёт UDP, клиент автоматически откатывается к HTTP/2 поверх TCP. Обычно это работает без проблем, но в некоторых случаях добавляет задержку.
Поскольку почти все сайты предоставляют запасной HTTP/2, на практике проблем не возникает. Тем не менее в задачах, чувствительных к задержке, об этом поведении стоит знать.
Тестирование
Протестировать поддержку UDP из командной строки не так просто, как TCP. Самый быстрый путь — получить письменное подтверждение от провайдера и проверить на пробной версии в вашем реальном приложении.
Резюме
SOCKS5 умеет передавать UDP-трафик командой UDP ASSOCIATE — то, чего HTTP прокси не может никак. Однако поддержка не распространена; большинство коммерческих провайдеров держат UDP отключённым. Для веб-скрапинга, управления аккаунтами и сбора данных UDP вам не нужен. А в сценариях вроде игр, VoIP и DNS-туннелирования он незаменим, и его обязательно нужно подтвердить до покупки. Детали продукта — на нашу страницу SOCKS5-прокси можно посмотреть.