Подтвердить что ты не робот

Почему HTTP-прокси могут поддерживать протоколы, такие как IRC и FTP?

Я понимаю, что прокси-сервер SOCKS устанавливает соединение только на уровне TCP, а прокси-сервер HTTP интерпретирует трафик на уровне HTTP. Таким образом, прокси-сервер SOCKS может работать для любого протокола, в то время как HTTP-прокси может обрабатывать только HTTP-трафик. Но почему HTTP-прокси, например Squid, может поддерживать протокол, такой как IRC, FTP? Когда мы используем HTTP-прокси для IRC или FTP-соединения, что конкретно происходит? Есть ли какие-либо метаданные, добавленные в пакет, когда они отправляются прокси по протоколу HTTP?

4b9b3361

Ответ 1

HTTP-прокси способен поддерживать протоколы высокого уровня, отличные от HTTP, если он поддерживает метод CONNECT, который в основном используется для соединений HTTPS, вот описание из Squid wiki:

Метод CONNECT - способ туннелировать любое соединение через HTTP-прокси. По умолчанию прокси устанавливает TCP-соединение с указанным сервером, отвечает HTTP-сообщением (Connection Foundlished) и затем перебирает пакеты между клиентом и сервером, не понимая и не интерпретируя туннелированный трафик

Если клиентское программное обеспечение поддерживает соединение через прокси-сервер с поддержкой HTTP CONNECT (HTTPS), это может быть любой протокол высокого уровня, который может работать с таким прокси (VPN, SSH, SQL, контроль версий и т.д.).

Ответ 2

Как отмечали другие, метод HTTP CONNECT позволяет вам установить любое TCP-соединение через прокси-сервер. Эта функциональность необходима в первую очередь для HTTPS-соединений, поскольку для HTTPS-соединений весь HTTP-запрос зашифровывается (поэтому он кажется прокси-сервером как "бессмысленное" TCP-соединение). Другими словами, сеанс HTTPS через прокси-сервер или сеанс SSH/FTPS через прокси-сервер будут отображаться как "зашифрованные сеансы" для прокси-сервера, и он не сможет отличить их друг от друга, поэтому он должен либо разрешить их всем или никому из них.

Во время нормальной работы прокси-сервер HTTP получает HTTP-запрос и достаточно "умен", чтобы понимать запрос, чтобы иметь возможность делать с ним вещи высокого уровня (например, искать его кеш, чтобы увидеть, может ли он служить ответом без необходимости на целевой сервер или обратитесь к списку "белый список/черный список", чтобы узнать, разрешен ли этот URL и т.д.). В режиме "CONNECT" ничего не происходит. Прокси устанавливает TCP-соединение с целевым сервером и просто перенаправляет весь трафик с клиента на целевой сервер и весь трафик с целевого сервера на клиента. Это означает, что любой TCP-протокол может работать (HTTPS, SSH, FTP - даже простой HTTP)