ora*_*ius 26 domain-name-system http proxy
我最近参加了一个关于客户端从代理服务器请求页面时会发生什么的讨论。我只是想确保我对这一系列事件的理解在一般情况下是正确的:
任何反馈将不胜感激。
Tri*_*anK 27
不完全是:这取决于客户端的配置方式。让我们使用 IE 作为基本示例。
如果您使用显式代理配置 IE :例如没有勾选其他选项,代理设置为 something:8080。
用户输入地址
IE根据 IE 代理例外列表检查字符串匹配的地址(即“绕过这些地址的代理:”)
一种。如果它匹配Bypass list中的条目,则客户端使用自己的 DNS来解析名称,然后客户端直接连接到端口 80(假设)上的目标 IP 地址,然后发送如下请求:
GET /something.htm HTTP/1.1
Host: fulldomainame.example.com
湾 如果没有绕过列表条目匹配,请继续:
IE 连接到其配置的 proxy,并发送以下形式的请求:
GET http://fulldomainname.example.com/something.htm HTTP/1.1
额外的事实:在 URL 中使用FQDN是一种方式,您可以告诉客户端认为它正在与代理而不是真正的 Web 服务器交谈
代理使用自己的DNS解析该主机名,然后连接到目标站点(就像上面第 2 步中的客户端一样),等等。
使用 WPAD/PAC 时:
在使用 Web 代理自动发现 (WPAD) 或代理自动配置(PAC 或 Autoconfig)脚本的情况下,例如在启用自动配置时由 ISA/TMG 提供的脚本,则有所不同:
用户输入地址
客户端从其配置的位置下载当前的wpad.dat/autoproxy.js/.pac文件
客户端在js文件中查找函数“ FindProxyForUrl ”,并执行
Autoproxy 脚本处理主机名和URL。这是一个功能有限的 javascript 文件,但仍有很多事情是可能的:
一种。这可能包括名称解析(IsInNet、DnsResolve)
湾 这可能包括字符串匹配(ShExpMatch)
C。这可能包括数到一百万(i++)
d. 如果管理员是个混蛋,这可能包括narky 警报弹出消息
该FindProxyForUrl至少一个字符串函数返回最佳的代理来使用的有序列表(分号分隔):
一种。要么"DIRECT",在这种情况下,客户端需要自己解析名称并直接连接,如上面的 Bypass 案例
湾 或"PROXY proxyname:8080"或类似的,在这种情况下,客户端连接到该代理上的该端口,告诉它获取完整 URL,代理执行名称解析。
偶尔会有小故障、微妙之处和无法解释的行为,但在大多数情况下,当事情没有以奇怪和有趣的方式被破坏时,以上是我多年来看到它的工作方式。较新的浏览器正在优化行为,并行化内容,并一直在尝试有趣的事情,因此请查看给定浏览器的最新文档以了解详细信息。
WinSock 代理 / ISA 防火墙客户端 / TMG 客户端:
如果您对 Winsock 代理客户端(来自 TMG/ISA Server)感兴趣,那就是另一回事了,它具有更多的灵活性和移动部件。这里介绍的太多了,但是有一些文档描述了它是如何工作的。简而言之:它插入 Windows Sockets,可以拦截基于 TCP/UDP 的流量和基于每个应用程序和每个用户的名称解析请求。非常强大,但现在也已弃用,并且已经几年没有更新了。
客户可能真的很粘人:
一个最后要注意:一旦一个HTTP客户端已决定跟一个代理指定网站/ URL,也没有办法为代理告诉它不要。
没有 HTTP 状态代码或标头“我不提供它,你应该直接转到它”......
一旦客户端决定一个特定的 URL 是代理服务的,代理死亡控制随之而来。
避免它的唯一方法是在客户端建立连接之前,在 PAC 或旁路列表中获取选择逻辑。
关于区域和 PAC 文件的最后说明
IE 将直接连接的站点- 即使它们在 URL 中有点 - 视为本地 Intranet 区域的一部分(默认情况下 - 可在区域属性中设置),因此将执行诸如允许对这些站点进行集成 Windows 身份验证之类的操作(即Kerberos 和/或 NTLM 身份验证,透明)。因此,控制某些内容是否在本地 Intranet 区域中定义了它在自动身份验证方面的可信度。同样,至少,默认情况下。
| 归档时间: |
|
| 查看次数: |
93683 次 |
| 最近记录: |