【转】一个域名对应多个IP地址,接下来系统是依据什么决定使用哪个IP地址的?

例如下图所示:nslookup 返回了多个IP地址,当使用curl通过域名进行访问时,则自动选择了其中一个地址进行访问,这个选择的过程里发生了什么事情?

绝大多数Resolver,也就是操作系统用于解析出IP给应用程序使用的那个API,都是只使用第一个得到的IP地址。至于第一个IP地址出现的是哪一个,那就是DNS服务器端所决定的了。
题主举的例子,DNS服务器端返回IP列表的算法稍微复杂。简而言之的话,第一步是根据客户的IP判断客户地理位置和网络状况,返回离客户位置最近的缓存节点的IP组(可以参见CDN了解相关知识)。而这组IP呢,客户每次查询服务器返回列表内顺序都会变,因此第一个IP也就会变。服务器可以根据算法决定这个排序是按权重,或者是完全均等。由这个算法,平衡每个IP收到的请求量。
客户端的算法简单至极,还是那句话,只要第一个IP。


作者:韩晓
链接:http://www.zhihu.com/question/23652763/answer/25260532
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文地址:https://www.cnblogs.com/xuan52rock/p/5454877.html