CONNECT, BIND и UDP ASSOCIATE в SOCKS5
После согласования метода доступа клиент SOCKS5 отправляет одну из команд релея. Для большинства прикладных задач используется CONNECT, но стандарт также определяет BIND и UDP ASSOCIATE. Знание их назначения помогает не ожидать от TCP-проверки подтверждения UDP и не считать неполную реализацию клиента неисправностью всей прокси.
Главное за минуту
- CONNECT создаёт исходящее TCP-соединение.
- BIND ожидает входящее соединение в предусмотренном протоколом сценарии.
- UDP ASSOCIATE создаёт контекст для UDP-релея.
- Поддержка команды должна присутствовать и на клиенте, и на сервере.
CONNECT для обычных TCP-задач
Команда CONNECT просит SOCKS-сервер соединиться с указанным адресом и портом. После успешного ответа стороны передают TCP-данные через релей. Веб-запросы, API и многие корпоративные приложения используют именно этот путь.
BIND для ожидаемого входящего соединения
BIND применяется, когда протокол клиента ожидает соединение с удалённой стороны. Сервер сообщает адрес привязки, а после входящего подключения отправляет второй ответ. Эта команда нужна реже и часто отсутствует в пользовательских программах.
UDP ASSOCIATE и отдельный формат датаграмм
UDP ASSOCIATE сообщает адрес UDP-релея, после чего датаграммы передаются со служебным заголовком SOCKS5. UDP не становится TCP и требует отдельной проверки. Стандарт допускает фрагментацию, однако реализация фрагментов необязательна, поэтому приложениям лучше её избегать.
Как тестировать возможности
Проверка CONNECT подтверждает только TCP-сценарий. Для UDP нужен разрешённый UDP-тест, а для BIND — контролируемая входящая сторона. В документации сервиса следует честно перечислять поддерживаемые команды, не выдавая полный набор стандарта за реализованный набор продукта.
Практический чек-лист
- 1Определить требуемую команду до настройки программы.
- 2Проверить поддержку команды клиентом и сервером.
- 3Не использовать TCP-тест как доказательство работы UDP.
- 4Ограничить назначения разрешёнными рабочими сервисами.
- 5Сохранять SOCKS5-код результата для каждого этапа.
Источники и документы
Материал подготовлен по первичным, официальным и техническим источникам. Формулировки статьи являются самостоятельным изложением.