WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

SOCKS (сокращение от «SOCKet Secure») — сетевой протокол, который позволяет пересылать пакеты от клиента к серверу через прокси-сервер прозрачно (незаметно для них) и таким образом использовать сервисы за межсетевыми экранами (фаерволами).

Более поздняя версия SOCKS5 предполагает аутентификацию, так что только авторизованные пользователи получают доступ к серверу.

Введение

Клиенты за межсетевым экраном, нуждающиеся в доступе к внешним серверам, вместо этого могут быть соединены с SOCKS-прокси-сервером. Такой прокси-сервер контролирует права клиента на доступ к внешним ресурсам и передаёт клиентский запрос внешнему серверу. SOCKS может использоваться и противоположным способом, осуществляя контроль прав внешних клиентов соединяться с внутренними серверами, находящимися за межсетевым экраном (брандмауэром).

В отличие от HTTP-прокси-серверов, SOCKS передаёт все данные от клиента, ничего не добавляя от себя, то есть с точки зрения конечного сервера, данные, полученные им от SOCKS-прокси, идентичны данным, которые клиент передал бы напрямую, без проксирования. SOCKS более универсален, он не зависит от конкретных протоколов уровня приложений (7-го уровня модели OSI) и оперирует на уровне TCP-соединений (4‑й уровень модели OSI). Зато HTTP-прокси кэширует данные и может более тщательно фильтровать содержимое передаваемых данных.

Протокол был разработан системным администратором компании MIPS Дэвидом Кобласом (David Koblas). После того, как в 1992 году MIPS вошла в состав корпорации Silicon Graphics, Коблас сделал доклад о SOCKS на Симпозиуме по безопасности Usenix, и SOCKS стал публично доступным. Четвёртую версию протокола разработал Ин-Да Ли (Ying-Da Lee) из NEC.

SOCKS-серверы обычно используют порт 1080[1].

Протокол SOCKS 4

SOCKS 4 предназначен для работы через межсетевой экран без аутентификации для приложений типа клиент-сервер, работающих по протоколу TCP, таких, как Telnet, FTP и таких популярных протоколов обмена информацией, как HTTP, WAIS и Gopher. По существу, SOCKS-сервер можно рассматривать как межсетевой экран, поддерживающий протокол SOCKS.

Типичный запрос SOCKS 4 выглядит следующим образом:

Запрос клиента к SOCKS-Серверу:

Размер Описание
1 байт Номер версии SOCKS, 1 байт (для этой версии должен быть 0x04)
1 байт Код команды:
  • 0x01 = установка TCP/IP соединения
  • 0x02 = назначение TCP/IP-порта (binding)
2 байта Номер порта
4 байта IP-адрес
n+1 байт ID пользователя. Строка переменной длины, завершается NUL-байтом (0x00). Поле предназначено для идентификации пользователя (см. Ident)

Ответ сервера SOCKS-Клиенту:

Размер Описание
1 байт NUL-байт
1 байт Код ответа:
  • 0x5a = запрос предоставлен
  • 0x5b = запрос отклонён или ошибочен
  • 0x5c = запрос не удался, потому что не запущен identd (или не доступен с сервера)
  • 0x5d = запрос не удался, поскольку клиентский identd не может подтвердить идентификатор пользователя в запросе
2 байта Произвольные данные, должны быть проигнорированы
4 байта Произвольные данные, должны быть проигнорированы

Протокол SOCKS 5

SOCKS 5 расширяет модель SOCKS 4, добавляя к ней поддержку UDP, обеспечение универсальных схем строгой аутентификации и расширяет методы адресации, добавляя поддержку доменных имен и адресов IPv6. Начальная установка связи теперь состоит из следующего:

  • Клиент подключается, и посылает приветствие, которое включает перечень поддерживаемых методов аутентификации
  • Сервер выбирает из них один (или посылает ответ о неудаче запроса, если ни один из предложенных методов неприемлем)
  • В зависимости от выбранного метода, между клиентом и сервером может пройти некоторое количество сообщений
  • Клиент посылает запрос на соединение, аналогично SOCKS 4
  • Сервер отвечает, аналогично SOCKS 4

Методы аутентификации пронумерованы следующим образом:

0x00Аутентификация не требуется
0x01GSSAPI
0x02Имя пользователя / пароль
0x03-0x7FЗарезервировано IANA
0x80-0xFEЗарезервировано для методов частного использования

Начальное приветствие от клиента:

Размер Описание
1 байт Номер версии SOCKS (должен быть 0x05 для этой версии)
1 байт Количество поддерживаемых методов аутентификации
n байт Номера методов аутентификации, переменная длина, 1 байт для каждого поддерживаемого метода

Сервер сообщает о своём выборе:

Размер Описание
1 байт Номер версии SOCKS (должен быть 0x05 для этой версии)
1 байт Выбранный метод аутентификации или 0xFF, если не было предложено приемлемого метода

Последующая идентификация зависит от выбранного метода.

Запрос клиента:

Размер Описание
1 байт Номер версии SOCKS (должен быть 0x05 для этой версии)
1 байт Код команды:
  • 0x01 = установка TCP/IP соединения
  • 0x02 = назначение TCP/IP порта (binding)
  • 0x03 = ассоциирование UDP-порта
1 байт Зарезервированный байт, должен быть 0x00
1 байт Тип адреса:
  • 0x01 = адрес IPv4
  • 0x03 = имя домена
  • 0x04 = адрес IPv6
Зависит от типа адреса Назначение адреса:
  • 4 байта для адреса IPv4
  • Первый байт — длина имени, затем следует имя домена без завершающего нуля на конце
  • 16 байт для адреса IPv6
2 байта Номер порта, в порядке от старшего к младшему (big-endian)

Ответ сервера:

Размер Описание
1 байт Номер версии SOCKS (0x05 для этой версии)
1 байт Код ответа:
  • 0x00 = запрос предоставлен
  • 0x01 = ошибка SOCKS-сервера
  • 0x02 = соединение запрещено набором правил
  • 0x03 = сеть недоступна
  • 0x04 = хост недоступен
  • 0x05 = отказ в соединении
  • 0x06 = истечение TTL
  • 0x07 = команда не поддерживается / ошибка протокола
  • 0x08 = тип адреса не поддерживается
1 байт Байт зарезервирован, должен быть 0x00
1 байт Тип последующего адреса:
  • 0x01 = адрес IPv4
  • 0x03 = имя домена
  • 0x04 = адрес IPv6
Зависит от типа адреса Назначение адреса:
  • 4 байта для адреса IPv4
  • Первый байт — длина имени, затем следует имя домена без завершающего нуля на конце
  • 16 байт для адреса IPv6
2 байта Номер порта, в порядке от старшего к младшему (big-endian)

Реализации

  • Sun Java System Web Proxy Server[en] — кеширующий прокси сервер для Solaris, Linux, Windows, поддерживает HTTPS, фильтры NSAPI I/O, динамическую реконфигурацию и обратный прокси.
  • DeleGate — многофункциональный шлюз прикладного уровня и прокси-сервер, работающий на различных платформах, кроме SOCKS также поддерживает HTTP(S), FTP, NNTP, SMTP, POP3, IMAP, LDAP, Telnet, DNS и другие протоколы.
  • 3proxy — лёгкий прокси-сервер с поддержкой SOCKS-proxy
  • WinGate — многопротокольный прокси-сервер с поддержкой SOCKS для Windows.
  • OpenSSH позволяет динамически создавать туннели, заданные через подмножество протокола SOCKS.
  • Dante - сервер SOCKS прокси для Linux.

См. также

Примечания

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии