skip to content

Протокол SOCKS, версия 5 (часть 6)

Поле RSVзарезервировано (= 0000).

Поле FRAG— номер текущего фрагмента, если данные фрагментированы.

Поле ATYP — тип адреса в поле DST.ADDR состоит из следующих значений:

  • IP-адрес версии 4 (ATYP= 01);
  • доменное имя (ATYP = 03);
  • IP-адрес версии 6 (АТУР= 04).

Поле DST.ADDR — требуемый адрес назначения.

Поле DST.PORT— требуемый порт назначения.

Поле DATA — данные пользователя.

Несколько слов о том, зачем было необходимо включать в ответ SOCKS-сервера поле BND.ADDR, и использовать именно его, а не первоначальный адрес управляющей сессии, при открытии клиентом вторичных соединений. Дело в том, что при разработке протокол SOCKS5 позиционировался как схема, позволяющая создавать целый кластер прокси-серверов, работающих под управлением мастер-сервера. В этом случае мастер-сервер поддерживает только управляющие сессии со всеми подключенными к кластеру клиентами, а всю нагрузку на собственно трансляцию потоков данных (то есть вторичные соединения)   несут распределение  несколько  "рабочих"  серверов.

При обработке каждого очередного запроса от клиента мастер-сервер по какому-либо правилу выбирает один "рабочий" сервер и обменивается с ним всей необходимой информацией о запросе. Затем в ответе клиенту в поля BND.ADDR и BND.PORT подставляются уже координаты «рабочего»   сервера трансляции.

В заключение необходимо добавить, что существуют отдельные документы, описывающие способы аутентификации SOCKS. Для метода GSS-API - это [RFC-19б1], для метода  username/password — [RFC-1929].