No exactamente: depende de cómo esté configurado el cliente. Usemos IE como el ejemplo básico.
Si configura IE con un proxy explícito : por ejemplo, no hay otras opciones marcadas, proxy configurado en algo: 8080.
El usuario escribe una dirección
IE comprueba la dirección para una coincidencia de cadena con la lista de excepciones de proxy de IE (es decir, "Omitir proxy para estas direcciones:")
a. Si coincide con una entrada en la lista de omisión , el cliente usa su propio DNS para resolver el nombre, y luego el cliente se conecta directamente a la dirección IP de destino en el puerto 80 (supuesto), luego envía una solicitud como:
GET /something.htm HTTP/1.1
Host: fulldomainame.example.com
si. Si no coinciden las entradas de la lista de omisión , continúe:
IE se conecta a su proxy configurado y envía una solicitud del formulario:
GET http://fulldomainname.example.com/something.htm HTTP/1.1
Factoid de bonificación: este uso del FQDN en la URL es una forma de saber que un cliente cree que está hablando con un proxy en lugar de un servidor web real
El proxy resuelve ese nombre de host utilizando su propio DNS y luego se conecta al sitio de destino (actúa como el cliente en el paso 2 anterior), etc., etc.
Cuando use WPAD / PAC:
En el caso de utilizar un script de detección automática de proxy web (WPAD) o de configuración automática de proxy (PAC o Autoconfig), como los proporcionados por ISA / TMG cuando la configuración automática está habilitada, es diferente:
El usuario escribe una dirección
El cliente descarga el archivo actual wpad.dat / autoproxy.js / .pac desde su ubicación configurada
El cliente busca la función " FindProxyForUrl " en el archivo js y la ejecuta
El script Autoproxy procesa el nombre de host y la URL . Este es un archivo javascript de función limitada, pero todavía hay muchas cosas posibles:
a. Esto puede incluir la resolución de nombres (IsInNet, DnsResolve)
si. esto puede incluir la coincidencia de cadenas (ShExpMatch)
C. Esto puede incluir contar hasta un millón (i ++)
re. esto puede incluir mensajes emergentes de alerta narky si el administrador es un imbécil
- (o simplemente divertido)
- ((o depuración))
La función FindProxyForUrl devuelve al menos una cadena : una lista ordenada de los mejores proxies para usar (separados por punto y coma)
a. ya sea "DIRECTO" , en cuyo caso el cliente debe resolver el nombre y conectarse directamente, según el caso de omisión anterior
si. o "nombre de proxy PROXY: 8080" o similar, en cuyo caso el cliente se conecta a ese puerto en ese proxy, le dice que OBTENGA la URL completa y el proxy realiza la resolución de nombre .
- Como ejemplo : si la función de script devolvió "PROXY yourProxy: 8080; DIRECT" que le dice al cliente que se conecte a su proxy en el puerto TCP 8080 para solicitar esta URL, y si esa conexión no se puede establecer, intente ir directamente.
Tenga en cuenta que el fallo de configuración de la sesión TCP no es exactamente rápido, por lo que no es probable que sea una experiencia de conmutación por error agradable para un usuario, pero no supera nada. Tal vez.
De vez en cuando hay fallas, sutilezas y comportamientos inexplicables, pero en su mayor parte cuando las cosas no se rompen de maneras extrañas e interesantes, lo anterior es cómo lo he visto funcionar durante muchos años. Los navegadores más nuevos están optimizando el comportamiento, y paralelizando cosas, y probando cosas interesantes todo el tiempo, así que revise los documentos más recientes para su navegador dado para comprender los detalles.
Cliente WinSock Proxy / ISA Firewall / Cliente TMG :
Si está interesado en Winsock Proxy Client (del servidor TMG / ISA), esa es una historia diferente, con más flexibilidad y partes móviles. Demasiado para entrar aquí, pero hay documentos que describen cómo funciona. En resumen: se conecta a Windows Sockets y puede interceptar tanto el tráfico basado en TCP / UDP como las solicitudes de resolución de nombres por aplicación y por usuario. Muy potente, pero también en desuso ahora, y no se ha actualizado en varios años.
Los clientes pueden ser realmente pegajosos:
Una nota final : una vez que un cliente HTTP ha decidido hablar con un proxy para un sitio / url determinado, no hay forma de que el proxy le diga que no lo haga .
No hay un código de estado HTTP o encabezado para "No sirvo eso, simplemente debes ir directamente a él" ...
Una vez que el cliente decide que una URL particular es servida por proxy , se produce proxy-death-grip .
La única forma de evitarlo es obtener la lógica de selección justo antes de que el cliente realice su conexión, en la lista PAC o Bypass.
Una nota final sobre Zonas y archivos PAC
IE trata los sitios que están conectados DIRECTAMENTE , incluso si tienen puntos en la URL, como parte de la Zona de Intranet Local (de forma predeterminada, configurable en las propiedades de la Zona), y así hará cosas como permitir la autenticación integrada de Windows en esos sitios (es decir, Kerberos y / o autenticación NTLM, de forma transparente). Por lo tanto, controlar si algo está en la zona de Intranet local define qué tan confiable es en términos de autenticación automática. De nuevo, al menos, por defecto.