2012-08-19 10 views
32

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?¿Por qué los proxies HTTP pueden admitir protocolos como IRC y FTP?

+4

He leído las respuestas, pero todavía no está tan claro ... ¿Puede alguien explicar esto un poco más simplemente ... gracias! – eRaisedToX

+0

Básicamente, el proxy HTTP espera a que el lado del cliente envíe una solicitud http con un método de conexión, para permitir que el proxy HTTP acepte la contraseña de inicio de sesión, el proxy http solo puede responder 200 o responder otras cosas. De modo que el proxy http puede responder adecuadamente para informar al cliente que puede convertirse en otro tipo de proxy. – for1096

Respuesta

15

proxy HTTP es capaz de soportar los protocolos de alto nivel que no sea HTTP si es compatible con el método CONNECT, que se utiliza principalmente para conexiones HTTPS, aquí está la descripción de la wiki de calamar:

El método CONNECT es una manera 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 intercambia paquetes entre el cliente y el servidor, sin entender o interpretar el tráfico tunelizado

Si el software de cliente es compatible con la conexión a través de HTTP CONNECT' habilitado (HTTPS) proxy' puede ser cualquier protocolo de alto nivel que se puede trabajar con un proxy tales (VPN, SSH, SQL, control de versiones, etc.)

5

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 para poder hacer cosas de alto nivel con ella (por ejemplo, buscar 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 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)

Cuestiones relacionadas