Поле 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].