¿Por qué los proxies HTTP son capaces de soportar protocolos como IRC y FTP?


Entiendo que un proxy SOCKS solo establece una conexión a 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 usamos un proxy HTTP para una conexión IRC o FTP, ¿qué sucede específicamente? ¿Hay metadatos añadidos al paquete cuando se envía al proxy a través de HTTP protocolo?

Author: Franklin Yu, 2012-08-19

2 answers

El proxy HTTP es capaz de soportar protocolos de alto nivel que no sean HTTP si soporta el método CONNECT, que se usa principalmente para conexiones HTTPS, aquí está la descripción de Squid wiki:

El método CONNECT es una forma de canalizar 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, a continuación, pasa paquetes de un lado a otro entre el cliente y el servidor. servidor, sin entender o interpretar el tráfico tunelizado

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

 15
Author: HongKilDong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-27 10:58:09

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, toda la solicitud HTTP está encriptada (por lo que al proxy le parece una conexión TCP "sin sentido"). En otras palabras, una sesión HTTPS a través de un proxy, o una sesión SSH/FTPS a través de un proxy, ambas aparecerán como" sesiones cifradas " para el proxy, y no podrá distinguirlas, por lo que tiene que permitirlos todos o ninguno de ellos.

Durante el funcionamiento normal, el proxy HTTP recibe la solicitud HTTP, y es "lo suficientemente inteligente" para entender la solicitud para poder hacer cosas de alto nivel con ella (por ejemplo, buscar en su caché para ver si puede servir la respuesta sin ir al servidor de destino, o consultar 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 del cliente al servidor de destino y todo el tráfico del servidor de destino al cliente. Eso significa que cualquier protocolo TCP puede funcionar (HTTPS, SSH, FTP - incluso HTTP simple)

 6
Author: Kal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-26 23:29:21