当浏览器获得给定主机名称(例如ip1和ip2)的多个Alogging时,有人能够指导我获取有关确切浏览器行为的信息,并且其中一个不可访问。
我对EXACT的细节感兴趣,比如(但不限于):
现在让我们假设浏览器首先尝试使用ip2。
当然,这一切都可能依赖于浏览器,也可能在版本和平台之间有所不同,我很乐意拥有最多的细节。
这样做的目的 – 我试图了解什么时候用户将遇到什么时使用循环DNS基于使用和主机之一失败。
请不要问DNS负载平衡有多糟糕,请不要回答“不要这样做”,“这是一个坏主意”,“你需要心跳/代理/ BGP /不pipe”等等。
毕竟,我必须自己做“研究”。 这里是Chromium(版本12.0.742.112)行为(在Ubuntu 11.04上运行):
一般来说,它的工作原理是这样的:尝试1-st ip,一旦超时(189秒后),尝试2-ip ip。 没有错误信息,直到所有ips试图。 下一个连接将从第一个ip再次开始(即使它刚刚失败了,第二个ip工作 – 浏览器不关心)
一个有趣的事情 – 当用户点击取消时不会丢弃TCP连接尝试 – 即当我点击取消时,并在60秒后单击重试,页面将显示130秒(从第一次尝试189)。但是,如果我点击取消,然后单击190秒后刷新,过程将从头开始。
关于原始问题中的项目:
没有testing。 当我们看chrome:// net-internals /#dns时, 这个博客指出Chrome浏览器的DNScaching长达1分钟。
容量:100成功条目的生存时间(毫秒):60000失败条目的生存时间(毫秒):0
如果第一个IP工作,过程将是相同的,它将始终成功的第一次尝试。
不要告诉人们你不想要什么,为什么不解释你想要达到的目标呢?
如果你所追求的只是已知的数据,那么就去调查自己,或者阅读你正在谈论的任何浏览器(有数百个)的文档。
不过,这可能会帮助你知道这与DNS无关。
如果一个浏览器得到一个请求,它会首先在它的各种caching中查看URL是否已经存在,或者URL是否已经存在。
如果没有,它将命中系统parsing器来parsing主机名。
如果它返回的IP没有响应,它肯定会在内部caching这个负面的查找结果 ,所以直接再次请求相同的URL,希望为它创build一个不同的Alogging可能没有任何用处,因为它会已经存储了主机名结果以及负面的IP结果。
或者,你知道,你可以提供更多的信息。
编辑:我看你提供了所有的要求和smartassery之间的一些信息。
很好:
您似乎也不知道DNSlogging在任何地方都被caching,特别是在客户端。 这些logging会过期,具体取决于域名所有者的意图或者您和他之间configuration的caching。 一小时到一天是常见的,所以不要指望parsing器做另一个DNS查询,如果你像疯子一样刷新。