Разница между SOCKS, DIRECT и HTTP в программировании сокетов

1

Может кто-нибудь, пожалуйста, сообщите, какая разница между соединениями SOCKS, DIRECT и HTTP в контексте программирования сокетов?

В частности, я имею в виду классы сокетов Android перечисление типа прокси, но представьте, что этот вопрос относится к другим языкам.

Теги:
sockets
language-agnostic

1 ответ

7
Лучший ответ

Когда вы пишете приложение, использующее сокет для связи с Интернетом в целом, в частности все, что хочет использовать HTTP, вы можете быть в одной из трех разных ситуаций:

  • Направление соединения с Интернетом - вы можете установить соединение TCP/IP непосредственно с сервером на другом конце.

  • Соединение через прокси SOCKS - вы не можете установить прямое подключение к серверу в конце. Вместо этого вам необходимо связаться с локальным шлюзом шлюза локальной сети с использованием протокола SOCKS и попросить его открыть соединение с сервером в конце, откройте сокет на прокси-сервере SOCKS и попросите его исправить вас до сервера путем пересылки трафика между вами и целевой сервер, предполагая, что локальная политика безопасности позволяет это.

  • Подключение через прокси-сервер HTTP - вы либо не можете установить прямое подключение к Интернету, либо полезно использовать прокси для повышения производительности (кэширования). Еще раз, вместо того, чтобы открывать соединение с сервером на другом конце, вы открываете соединение с прокси-сервером HTTP рядом с вами (которое может или может быть в вашей локальной сети) по протоколу HTTP, и попросите его провести от вашего имени HTTP-транзакция с конечным устройством.

Это 3 ситуации, описанные значениями перечисления.

В действительности существует 4-я ситуация - прозрачная прокси, но поскольку название подразумевает, что ваш код не знает об этом, поэтому он не представлен значением перечисления. В этой ситуации вы действуете согласно сценарию 1 (направление соединения), но на самом деле вы находитесь в сценарии 3 (HTTP-прокси). Перенаправление с вашего целевого сервера на прокси-сервер HTTP осуществляется прозрачно сетевым оборудованием в локальной сети (обычно это маршрутизатор, когда-то коммутатор).

  • 0
    Спасибо за подробный ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню