SOCKS5 – это прокси-сервер на уровне сеансового взаимодействия, который выступает посредником между приложением пользователя и целевым ресурсом в сети.
В отличие от HTTP-прокси, SOCKS5 не «понимает» содержимое веб-страниц и не ограничивается браузерным трафиком: он пересылает данные почти любого типа, работая как универсальный транспортный шлюз.
Когда клиент подключается через SOCKS5, внешний сервис видит не реальный IP-адрес пользователя, а адрес прокси-сервера. Это помогает решать детально задачи маршрутизации, изоляции доступа и контроля соединений, а также используется в сценариях, где важна гибкость протокола и поддержка разных приложений.
Принцип работы SOCKS5
SOCKS5 принимает запрос от клиента, устанавливает соединение с нужным хостом и далее прозрачно передаёт пакеты в обе стороны. На практике это выглядит как «туннель» на уровне приложения: программа думает, что общается с целевым сервером напрямую, а фактически взаимодействует через промежуточный узел.
Ключевые отличия от HTTP/HTTPS-прокси
- Универсальность трафика: SOCKS5 подходит для браузеров, мессенджеров, игр, почтовых клиентов, P2P и других приложений, где HTTP-прокси может быть бесполезен.
- Отсутствие вмешательства в содержимое: прокси не анализирует заголовки HTTP и не модифицирует контент, так как работает на более низком уровне абстракции.
- Гибкость соединений: SOCKS5 поддерживает разные сценарии установления соединения, что полезно для нестандартных сетевых задач.
Поддержка протоколов и адресации
- TCP: основной режим для большинства приложений, требующих надёжной доставки данных.
- UDP: SOCKS5 умеет работать и с UDP (через UDP ASSOCIATE), что важно для некоторых игр, VoIP и сервисов, использующих дейтаграммы.
- IPv4, IPv6 и доменные имена: прокси может принимать адрес назначения в разных форматах, включая передачу доменного имени без локального DNS-резолва.
Принцип работы SOCKS5 на уровне TCP и UDP: как проходит запрос от клиента к узлу
Дальше прокси выступает промежуточной точкой: принимает данные от клиента и пересылает их к серверу, а ответы сервера – обратно клиенту. При этом для TCP используется постоянный двусторонний поток, а для UDP – пересылка датаграмм через отдельный механизм UDP ASSOCIATE.
Путь запроса: от клиента к узлу (TCP CONNECT и UDP ASSOCIATE)
TCP (команда CONNECT) применяется для большинства сценариев, где нужен надежный поток: HTTP(S) через туннель, SSH, IMAP/SMTP, любые TCP-приложения.
- Установка TCP-соединения клиента с SOCKS5-прокси (клиент подключается к IP:порт прокси).
- Согласование метода аутентификации (прокси сообщает, нужен ли пароль/логин или доступ без аутентификации).
- Запрос CONNECT: клиент передает прокси целевой адрес (IPv4/IPv6 или доменное имя) и порт назначения.
- Создание исходящего TCP-соединения прокси > целевой узел (прокси открывает соединение от своего имени).
- Ответ прокси о результате: успех/ошибка (например, недоступен хост, запрещено политикой, таймаут).
- Туннелирование данных: после успеха прокси прозрачно пересылает байтовые потоки в обе стороны до закрытия соединения.
UDP (команда UDP ASSOCIATE) используется, когда важны датаграммы: VoIP, игры, некоторые DNS-сценарии и другие UDP-протоколы.
- Установка TCP-соединения клиента с SOCKS5-прокси и согласование аутентификации (как и для TCP).
- Запрос UDP ASSOCIATE: клиент просит прокси выделить параметры для обмена UDP (фактически – точку приема/отправки датаграмм).
- Прокси возвращает UDP-адрес и порт, куда клиент будет отправлять UDP-пакеты (обычно это адрес/порт прокси или выделенный порт на нем).
- Отправка UDP-датаграмм через прокси: клиент посылает пакеты на выданный UDP-порт, добавляя служебную информацию SOCKS5 (куда именно доставить датаграмму).
- Прокси пересылает датаграммы к целевому узлу и принимает ответы.
- Возврат ответных UDP-датаграмм клиенту через тот же UDP-канал, пока «ассоциация» активна.
- Важно: при SOCKS5 доменное имя может передаваться прокси, поэтому разрешение DNS может выполняться на стороне прокси (если клиент так настроен), снижая утечки DNS и скрывая целевые домены от локальной сети.
- Также важно: SOCKS5 не шифрует трафик сам по себе – он лишь маршрутизирует. Шифрование обеспечивается прикладными протоколами (например, TLS в HTTPS) или дополнительными туннелями.
Итог: на TCP SOCKS5 создает и поддерживает непрерывный двусторонний канал «клиент — прокси — сервер», а на UDP организует пересылку отдельных датаграмм через механизм UDP ASSOCIATE. В обоих случаях прокси выступает транспортным посредником: он меняет точку выхода в сеть, может брать на себя DNS-разрешение и применять правила доступа, оставаясь нейтральным к содержимому передаваемых данных.













