Nicht genau: Es hängt davon ab, wie der Client konfiguriert ist. Verwenden wir den IE als grundlegendes Beispiel.
Wenn Sie IE mit einem expliziten Proxy konfigurieren : z. B. keine anderen Optionen angekreuzt, Proxy auf etwas festgelegt: 8080.
Benutzer gibt eine Adresse ein
IE vergleicht die Adresse auf eine Zeichenfolgenübereinstimmung mit der IE-Proxy-Ausnahmeliste (dh "Proxy für diese Adressen umgehen:")
ein. Wenn es einen Eintrag in der übereinstimmt Bypass Liste der Client verwendet einen eigenen DNS den Namen aufzulösen, und dann wird die Verbindung Client direkt an die Ziel - IP - Adresse auf Port 80 (angenommen), sendet dann eine Anfrage wie:
GET /something.htm HTTP/1.1
Host: fulldomainame.example.com
b. Wenn keine Umgehungslisteneinträge übereinstimmen , fahren Sie fort:
IE stellt eine Verbindung zu seinem konfigurierten Proxy her und sendet eine Anfrage des Formulars:
GET http://fulldomainname.example.com/something.htm HTTP/1.1
Bonus factoid: Mit dieser Verwendung des FQDN in der URL können Sie feststellen, dass ein Client denkt, dass er mit einem Proxy anstelle eines echten Webservers spricht
Der Proxy löst diesen Hostnamen mithilfe seines eigenen DNS auf und stellt dann eine Verbindung zum Zielstandort her (verhält sich wie der Client in Schritt 2 oben) usw. usw.
Bei Verwendung von WPAD / PAC:
Bei Verwendung eines Skripts für die automatische Webproxyerkennung (WPAD) oder die automatische Proxykonfiguration (PAC oder Autoconfig), wie sie von ISA / TMG bereitgestellt werden, wenn die automatische Konfiguration aktiviert ist, ist dies anders:
Benutzer gibt eine Adresse ein
Der Client lädt die aktuelle Datei wpad.dat / autoproxy.js / .pac von seinem konfigurierten Speicherort herunter
Der Client sucht in der js-Datei nach der Funktion " FindProxyForUrl " und führt sie aus
Das Autoproxy-Skript verarbeitet den Hostnamen und die URL . Dies ist eine Javascript-Datei mit eingeschränkten Funktionen, aber viele Dinge sind noch möglich:
ein. Dies kann die Namensauflösung beinhalten (IsInNet, DnsResolve)
b. Dies kann einen String-Abgleich beinhalten (ShExpMatch)
c. Dies kann das Zählen bis zu einer Million (i ++) beinhalten.
d. Dies kann narky Alert Popup-Meldungen enthalten, wenn der Administrator ein Idiot ist
- (oder einfach nur lustig)
- ((oder Debugging))
Die FindProxyForUrl- Funktion gibt mindestens eine Zeichenfolge zurück : eine geordnete Liste der besten zu verwendenden Proxys (durch Semikolon getrennt)
ein. Entweder "DIRECT" . In diesem Fall muss der Client den Namen selbst auflösen und eine direkte Verbindung herstellen, wie im obigen Bypass-Fall beschrieben
b. oder "PROXY-Proxyname: 8080" oder ähnlich. In diesem Fall stellt der Client eine Verbindung zu diesem Port auf diesem Proxy her, fordert ihn auf, die vollständige URL abzurufen , und der Proxy führt die Namensauflösung durch .
- Als Beispiel : Wenn die Script - Funktion zurückgegeben „PROXY yourProxy: 8080; DIRECT“ , dass der Kunde sagt zu verbinden yourproxy auf TCP - Port 8080 diese URL zu beantragen, und wenn die Verbindung nicht hergestellt werden kann, versuchen Sie direkt gehen.
Beachten Sie, dass der Fehler beim Einrichten der TCP-Sitzung nicht gerade schnell ist. Daher ist dies wahrscheinlich keine angenehme Failover-Erfahrung für einen Benutzer, schlägt aber nichts. Vielleicht.
Es gibt gelegentlich Störungen, Feinheiten und unerklärliche Verhaltensweisen, aber zum größten Teil, wenn die Dinge nicht auf seltsame und interessante Weise zerbrochen sind, habe ich gesehen, wie es über viele Jahre funktioniert. Neuere Browser optimieren das Verhalten und parallelisieren die Inhalte. Sie probieren die ganze Zeit interessante Dinge aus. Sehen Sie sich daher die neuesten Dokumente Ihres Browsers an, um die Details zu verstehen.
WinSock Proxy / ISA-Firewall-Client / TMG-Client :
Wenn Sie sich für den Winsock-Proxy-Client (von TMG / ISA Server) interessieren, ist das eine andere Geschichte, mit mehr Flexibilität und beweglichen Teilen. Zu viel, um hier darauf einzugehen, aber es gibt Dokumente, die beschreiben, wie es funktioniert. Kurz gesagt: Es wird in Windows Sockets eingesteckt und kann sowohl TCP / UDP-basierten Datenverkehr als auch Anforderungen zur Namensauflösung pro App und pro Benutzer abfangen. Sehr leistungsfähig, jetzt aber auch veraltet und seit einigen Jahren nicht mehr aktualisiert.
Kunden können wirklich anhänglich sein:
Ein letzter Hinweis : Sobald ein HTTP-Client entschieden hat, mit einem Proxy für eine bestimmte Site / URL zu sprechen, kann der Proxy nicht mehr sagen, dass er dies nicht tun soll .
Es gibt keinen HTTP-Statuscode oder -Header für "Ich versorge das nicht, du solltest stattdessen direkt dorthin gehen" ...
Sobald der Client entscheidet, dass eine bestimmte URL vom Proxy bedient wird, erfolgt der Proxy-Death-Grip .
Die einzige Möglichkeit, dies zu vermeiden, besteht darin, die Auswahllogik direkt vor dem Herstellen der Verbindung durch den Client in der PAC- oder Bypass-Liste abzurufen.
Ein letzter Hinweis zu Zonen und PAC-Dateien
IE behandelt Sites, die DIREKT verbunden sind - auch wenn sie Punkte in der URL enthalten - als Teil der lokalen Intranetzone (standardmäßig in den Zoneneigenschaften einstellbar) und ermöglicht daher die integrierte Windows-Authentifizierung für diese Sites (z. B. Kerberos- und / oder NTLM-Authentifizierung (transparent). Die Kontrolle darüber, ob sich etwas in der lokalen Intranetzone befindet, definiert, wie vertrauenswürdig es in Bezug auf die automatische Authentifizierung ist. Zumindest wieder standardmäßig.