Процедура для клиентов работающих по TCP
Когда работающий по TCP клиент хочет соединиться с объектом, доступным только через файрволл, он должен открыть TCP-соединение c соответствующим SOCKS-портом SOCKS-сервера. Сервис SOCKS обычно находится на TCP-порту 1080. Если соединение прошло успешно, клиент начинает переговоры о методе аутентификации, который будет использоваваться, проходит аутентификацию по выбранному методу и посылает свой запрос. SOCKS-сервер обрабатывает запрос и либо пытается установить соответствующее соединение, либо отказывает в нем.
Клиент соединяется с сервером и посылает сообщение с номером версии и выбором соответствующего метода аутентификации:
VER | NMETHODS | METHODS |
---|---|---|
1 | 1 | 1 to 255 |
Значение поля VER равно X'05' для данной версии протокола. Поле NMETHODS содержит число октетов в идентификаторах методов авторизации в поле METHODS.
Серевер выбирает один из предложенных методов, перечисленных в METHODS, и послылает ответ о выбранном методе:
VER | METHODS |
---|---|
1 | 1 |
Если выбранный метод в METHOD равен X'FF', то ни один из предложенных клиентом методов не применим и клиент должен закрыть соединение.
Эти значения определены для поля METHOD:
- X'00' аутентификация не требуется
- X'01' GSSAPI
- X'02' USERNAME/PASSWORD (см. RFC 1929)
- X'03' до X'7F' зарезервировано IANA
- X'80' до X'FE' преднозначено для частных методов
- X'FF' нет применимых методов
Затем клиент и сервер начинают аутентификацию согласно выбранному методу.
Описание методов аутентификации находится в отдельных документах.
Разработчики новых методов аутентификации применимых для этого протокола должны обращаться в IANA для получения номера метода. Документ с выделеными номерами должен дополнить текущий список номеров и соответствущих им методов аутентификации.
Совместимые реализации должны поддерживать GSSAPI и могут поддерживать аутентификацию USERNAME/PASSWORD.