Разница между SOCKS, DIRECT и HTTP в программировании сокетов - PullRequest
1 голос
/ 11 апреля 2011

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

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

1 Ответ

7 голосов
/ 11 апреля 2011

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...