Pregunta ¿Por qué los proxies HTTP pueden admitir protocolos como IRC y FTP?


Entiendo que un proxy SOCKS solo establece una conexión en el nivel TCP mientras que un proxy HTTP interpreta el tráfico a nivel HTTP. Por lo tanto, un proxy SOCKS puede funcionar para cualquier tipo de protocolo, mientras que un proxy HTTP solo puede manejar el tráfico HTTP. ¿Pero por qué un Proxy HTTP como Squid puede soportar protocolos como IRC, FTP? Cuando utilizamos un Proxy HTTP para una conexión IRC o FTP, ¿qué sucede específicamente? ¿Hay algún metadato agregado al paquete cuando se envía al proxy a través del protocolo HTTP?


32
2017-08-19 11:53


origen


Respuestas:


El proxy HTTP puede admitir protocolos de alto nivel que no sean HTTP si es compatible con el método CONNECT, que se usa principalmente para conexiones HTTPS, aquí hay una descripción de la wiki de Squid:

El método CONNECT es una forma de tunelizar cualquier tipo de conexión a través de un proxy HTTP. De forma predeterminada, el proxy establece una conexión TCP con el servidor especificado, responde con una respuesta HTTP 200 (Conexión establecida) y luego transfiere paquetes entre el cliente y el servidor, sin entender o interpretar el tráfico tunelizado

Si el software del cliente admite la conexión a través del proxy 'HTTP CONNECT' (HTTPS), puede ser cualquier protocolo de alto nivel que pueda funcionar con dicho proxy (VPN, SSH, SQL, control de versiones, etc.)


15
2018-02-27 10:58



Como otros han mencionado, el método "HTTP CONNECT" le permite establecer cualquier conexión basada en TCP a través de un proxy. Esta funcionalidad es necesaria principalmente para las conexiones HTTPS, ya que para las conexiones HTTPS, la solicitud HTTP completa está encriptada (por lo que le parece al proxy una conexión TCP "sin sentido"). En otras palabras, una sesión HTTPS sobre un proxy, o una sesión SSH / FTPS sobre un proxy, ambas aparecerán como "sesiones cifradas" para el proxy, y no podrá distinguirlas, por lo que tiene que permitirles a todos o ninguno de ellos.

Durante el funcionamiento normal, el proxy HTTP recibe la solicitud HTTP y es "lo suficientemente inteligente" para comprender la solicitud y poder hacer cosas de alto nivel con ella (por ejemplo, buscar en su caché para ver si puede servir la respuesta sin ir al destino) servidor, o consulta una lista blanca / lista negra para ver si esta URL está permitida, etc.). En el modo "CONECTAR", nada de esto sucede. El proxy establece una conexión TCP con el servidor de destino y simplemente reenvía todo el tráfico desde el cliente al servidor de destino y todo el tráfico desde el servidor de destino al cliente. Eso significa que cualquier protocolo TCP puede funcionar (HTTPS, SSH, FTP, incluso HTTP simple)


5
2017-08-18 02:19