domain-name-system – 浏览器如何处理多个IP

当浏览器获取给定主机名(例如ip1和ip2)的多个A记录时,有人可以指导我获取有关确切浏览器行为的信息,并且其中一个无法访问.

我对EXACT细节很感兴趣,比如(但不限于):

>浏览器会从操作系统获得2个IP,还是只能获得一个
>哪个ip将首先尝试浏览器(随机或始终是第一个)?
现在,让我们说浏览器以失败的ip1开始
>浏览器尝试ip1多长时间?
>如果用户在等待ip1时点击“停止”,然后单击刷新

>哪个IP将浏览器尝试?

>超时时会发生什么 – 它会开始尝试ip2还是
错误? (如果错误,用户将在浏览器中尝试ip
点击刷新).
>当用户点击刷新时,任何浏览器都会尝试新的DNS查找吗?

现在让我们假设浏览器首先尝试使用ip2.

>对于下一页请求,浏览器仍然会使用ip2,或者它可能是随机
切换ips?
>浏览器将IP保留在缓存中多长时间?
>当浏览器发送新的DNS请求并获得SAME ips时,是否会
继续使用相同的已知工作IP,或者流程从中开始
划伤,它可能尝试两个中的任何一个

当然这一切都可能取决于浏览器,也可能因版本和平台而异,我很乐意拥有最多的细节.

这样做的目的 – 我试图了解当使用基于循环的DNS并且其中一个主机发生故障时用户将会遇到什么.

请问,我不是在问DNS负载均衡有多糟糕,请不要回答“不要做”,“这是一个坏主意”,“你需要心跳/代理/ BGP /无论如何”等等.

解决方法

毕竟,我不得不自己做“研究”.这是Chromium(版本12.0.742.112)行为(在ubuntu 11.04上运行):

通常它的工作原理是:尝试1-ip ip,一旦超时(189秒后)尝试2-nd ip.在所有ips尝试之前没有给出错误消息.下一个连接将从第一个ip再次开始(即使它在一秒钟之前失败,第二个ip工作 – 浏览器不关心)

一个有趣的事情 – 当用户点击取消时不会丢弃TCP连接尝试 – 即当我点击取消时,60秒后点击重试,页面将在130秒内显示(第一次尝试时为189).但是如果我点击取消并点击190秒后刷新,该过程将从头开始.

关于原始课题中的项目:

>浏览器从操作系统获取两个IP,操作系统不会更改IP的顺序.
>浏览器总是尝试连接到首先出现的ip
>它尝试189秒
>在第二次尝试时,它将再次尝试IP.
>当第一次IP超时时,浏览器会静继续第二次IP.如果它工作 – 页面显示,如果没有 – 等待继续.
>未经测试. This blog声明当我们查看chrome:// net-internals / #dns时,Chrome会将DNS缓存最多1分钟:

容量:100
成功条目的生存时间(ms):60000
失败条目的生存时间(ms):0

如果第一个IP工作,进程将是相同的,并且它将始终在第一次尝试时成功.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些