Принципы работы проксификаторов: Proxyfier, ProxyCap, SocksCap и др.
В привычном представлении прокси-сервер предназначен для проксирования HTTP и HTTPs трафика. Однако, иногда возникает потребность в проксированиии других стандартных протоколов ICQ, почтовых SMTP, IMAP, POP3, протоколов небраузерных игр и т.д. Как правило клиенты, работающие по этим протоколам не имеют настроек прокси и не способны работать через прокс-сервера. В этой ситуации на помощь могут прийти специальные программы — проксификаторы. Для примера рассмотрим проксирование SMTP-почтового трафика.
Сначала попытаемся разобраться, как вообще происходит сетевое взаимодействие в сети Интернет. Любое взаимодействие происходит в рамках так называемого стека (или по русски набора) протоколов OSI (Open Systems Interconnection). Это семиуровневая модель взаимодействия всех устройств в Интернете. Для понимания работы проксификатора разберем работу следующих уровней:
прикладной (HTTP,SMTP) — это уровень приложений. Содержит данные и команды, которыми обмениваются программы. В случае HTTP — это браузер и сайт. В случае SMPT — это программа почтового клиента и сервера
транспортный TCP (Transport Control Protocol) — как понятно из названия выполняет транспорт данных между программами. Наверняка вы уже встречались с понятием порт. Сайты работают на 80м порту, почта на 25 и 110, ICQ на порту 5190 и т.д. Понятие порта — это понятие протокола транспортного уровня TCP. Для транспорта данных программы устанавливают между собой сокет — это понятие из программирования. Образно это абстрактный канал передачи данных по типу точка-точка на концах которого и располагаются порты. На конце сервера располагается порт 25 например, а на конце клиента, как правило случайный порт. Используя эти пары портов, сокет связывает программы на своих концах для передачи данных.
сетевой IP (Internet Protocol) - это протокол адресации в Интернете. Он использует IP-адрес Вашего компьютера и IP-адрес сервера, чтобы они могли найти друг друга в Интернете.
Данные любого из протоколов предаются пакетами ограниченного размера. В пакете есть служебная часть и контейнер под данные. Весь стек протоколов OSI работает по принципу матрешки. Пакеты верхних уровней вкладываются в контейнеры данных нижних уровней. Поясним этот принцип на примере взаимодействия почтового клиента с почтовым сервером на рисунке ниже.
Почтовый клиент формирует команды для почтового сервера и помещает их в SMTP-пакет прикладного уровня (сноска 1). Затем формируется TCP-пакет в служебной части которого задается случайный порт источника 34567 (сноска 2) и порт назначения 25 почтового сервера (сноска 3), а в контейнер данных помещается SMTP-пакет, сформированный ранее. Далее формируется IP-пакет, в служебной части которого Ваш IP-адрес IPc задается как адрес источника (сноска 4), а IP-адрес почтового сервера IPs, как адрес назначения (сноска 5). Затем IP-пакеты упаковываются в пакеты следующих протоколов стека OSI пока не превратятся в итоге в электрические сигналы, сигналы оптики или радиосигналы WIFI, 3G для передачи по каналам связи от вашего компьютера на почтовый сервер. Эта часть стека нам для понимания работы проксифера не нужна, поэтому скажем просто - IP-пакет доставляется по маршрутам Интернета на почтовый сервер. На почтовом сервере из IP-пакета извлекается TCP-пакет и для пары портов 25 и 34567 создается TCP-сокет между программой Вашего почтового клиента и программой почтового сервера, через который уже пойдут пакеты с почтовыми командами прикладного уровня SMTP. Ответ от сервера клиенту происходит по тому же принципу матрешки только порты и IP-адреса выставляются в обратном порядке. На рисунке обратное взаимодействие не изображено, чтобы не загромождать его.
В спецификацию протокола прикладного уровня HTTP заложена возможность упаковывать в контейнеры данных HTTP-пакетов пакеты других прикладных протоколов. В нашем примере пакеты протокола SMTP. Проксификаторы используют эту технологию совместно с прокси-серверами для проксирования любого трафика, отличного он HTTP. Разберем по шагам, как выстраивается взаимодействие Вашего почтового клиента с почтовым сервером через проксификатор и прокси-сервер.
Почтовый клиент формирует SMTP-пакет с почтовыми командами (сноска 6), упаковывает SMTP-пакет в TCP-пакет с портами отправителя и получателя. TCP-пакет упаковывает в IP-пакет с адресом отправителя IPc (сноска 7) и адресом получателя IPs (сноска 8). На этом этапе нет отличий от прямого взаимодействия почтового клиента и сервера.Дальше пакет передается не почтовому серверу, как при прямом взаимодействии, а проксификатору! Проксификатор формирует HTTP-пакет, в контейнер данных которого вкладывает так называемый метод «CONNECT IPs:25» и SMTP-пакет Вашего почтового клиента (сноска 9). Метод CONNECT дает указание прокси-серверу подключиться к почтовому серверу с IP-адресом IPs на порт 25. Далее HTTP пакет упаковывается в TCP-пакет, с портом назначения прокси 7951 (сноска 11) и случайным портом клиента 45273 (сноска 10), затем TCP-пакет упаковывается в IP-пакет в котором IPp адрес прокси-сервера задается как адрес назначения (сноска 13) и IPc Вашего компьютера как адрес источника (сноска 12). Потом IP-пакет отправляется по Интернету на прокси-сервер.
Прокси-сервер извлекает данные из контейнера HTTP-пакета (сноска 14) и видит SMTP-пакет с почтовыми командами, а также метод CONNECT с указанием соединиться с IPs-адресом почтового сервера. Теперь внимание! Ядро проси-сервера создает собственный TCP-сокет с программой почтового сервера. Для этого ядро берет Ваши SMTP команды из полученного SMTP-пакета (сноска 15), упаковывает в TCP-пакет, где порт назначения по-прежнему ставит 25, а порт источника прокси-сервер ставит уже свой 15895 (сноска 16). Упаковывает TCP-пакет в IP пакет. В качестве IP-адреса назначения используется IPs-адрес почтового сервера из метода CONNECT, а в качестве IP-адреса источника прокси ставит свой IP-адрес IPp (сноска 17). Затем IP-пакет отправляется через Интернет почтовому серверу.
Технически получается что на прикладном, транспортном, сетевом и всех остальных уровнях с почтовым сервером общается прокси-сервер, однако данные прикладного уровня прокси-сервер не генерирует сам, а берет из SMTP-пакетов клиента. Этот же механизм применяется для проксирования всех остальных протоколов прикладного уровня, которые используют сетевые приложения.
Чтобы использовать проксификатор на своем компьютере, ознакомьтесь со статьей установка, настройка и использование проксификатора Proxyfier. Мы рекомендуем проксификатор Proxyfier как один из лучших. Он отличается простотой и удобноством настройки, а также очень хорошей функциональностью. Помимо подрообной инструкции по установке и настройке вы можете бесплатно скачать Proxyfier (проксифер) .