浏览器如何处理DNS返回的单个主机名对应多个IP地址的情况?

6
我想知道这是如何处理的,或者是否有一个标准?
2个回答

5
浏览器会将 DNS 响应缓存几分钟,并通常尝试与 DNS 响应中返回的第一个 IP 地址建立连接。在缓存过期之前,使用相同的 IP 地址。

Internet Explorer 默认情况下将 DNS 查找缓存 30 分钟,由 DnsCacheTimeout 注册表设置指定。Firefox 将 DNS 查找缓存 1 分钟,由 network.dnsCacheExpiration 配置设置控制。

来自:Yahoo Dev Network: Best Practices for Speeding Up Your Web Site

因此,为了实现负载均衡而使用多个 IP 地址,DNS 服务器必须更改响应中提供的地址顺序,随机选择或按顺序 "轮询" 方式选择顺序。事实上,当 DNS 服务器对具有多个 A 记录的主机名进行响应时,这通常是默认行为。

在确定请求应用程序将使用哪个地址方面,没有标准的程序 - 一些解析器尝试重新排序列表,以优先考虑数字上“更接近”的网络。一些桌面客户端在连接超时30-45秒后尝试备用地址。

来自:维基百科:轮询DNS


当浏览器缓存了入口,而服务器宕机或无法访问时会发生什么?这是否意味着需要在DNS上重新查询以获取新的入口?此外,插件是否也会跟随浏览器(如Flash插件)?还是它们有自己独立的操作方式? - Ankur Chauhan
@Ankur:至于插件,它们有自己的东西。大多数插件甚至提供完整的TCP套接字API,因此它们可以自行进行查找,并且通常与浏览器无关,除了被插入文档之外。至于你的问题,我相信是的,它将保持下线直到缓存过期,但我不确定...我正在查找是否能找到一些权威的答案... - Daniel Vassallo

0
通常它们会遍历响应并使用第一个可以连接的响应。

嗯...不行。他们尝试连接一个,如果无法连接,则失败。但哪一个是个谜,因为这取决于软件创建者的实现方式。 - Jeroen Landheer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接