DNS首选与备用作用机制探究

转载自 http://www.360doc6.net/wxarticlenew/806020380.html

我们知道在计算机上可以配置首选DNS和备用DNS,当首选DNS不响应的时候,计算机依然可以通过请求备用DNS来进行解析。那么,究竟在什么情况下,计算机才会去找备用DNS服务器呢?从找首选到找备用,这中间切换的时间无疑会影响到用户的使用体验,那么这中间的切换时间大概是多久呢?能否更改这样一个时间呢?

1. 单网卡情况

通过查找微软资料,并且实际进行抓包测试,单网卡情况下,如果配置了首选和备用DNS,情况如下:

1) DNS客户端向首选DNS发送请求(试图建立连接),等待1秒;

2) 如果客户端在1秒内没有收到回复,则它向此网卡上的所有的DNS服务器发送请求(试图建立连接),等待1秒;

3) 如果客户端在1秒内仍然没有收到回复,则它向此网卡上的所有的DNS服务器再次发送请求,等待1秒;

4) 此循环一直进行下去(至少在我抓包的这30秒内,规律如此)。

2. 多网卡情况

如果计算机配置有多张网卡,情况会变得复杂一些。多网卡情况下,计算机又是通过怎样的机制来请求首选和备用DNS来进行名称解析的呢?具体的过程下图:

1) 客户端发起DNS查询请求,查询首先网卡上的首选DNS,并等待1s;

2) 1s后没有响应,发起查询请求到所有网卡的首选DNS上,并等待2s;

3) 2s后依旧没有响应,发起请求到所有网卡的所有DNS上,并再次等待2s;

4) 2s后依然没有响应,再发起所有的请求,并等待4s;

5) 4s还没有,再发起,并等待8s;

6) 在任何一次查询过程中,有任何一个DNS优先响应,就跟它进行DNS的查询,并将查询结果缓存下来;

7) 8s还没有响应,客户端提示超时;

8) 并且对于某个特定的网卡,如果至此未收到任何DNS的回应,那么在接下来的30s内,从此网卡上接收到的所有DNS解析请求都会被回复超时,系统将上述DNS标记为超时服务器(不可用),下次查询将不再用它;

9) 如果查询过程中,收到一个否定的结果(DNS服务器有响应,但是它说不知道),客户端将终止查询,并接受该结果;

10) 客户端对DNS服务器的查询反馈保持跟踪,根据他们响应的数据来灵活移动他们的先后顺序(也就是说,出问题的时候,首选和备选的先后顺序不是写死的)。

以上是单网卡情况下以及多网卡情况下,客户端请求首选DNS和备用DNS的机制。有兴趣的同学,可以参考此处微软官方链接:http://technet.microsoft.com/zh-cn/library/dd197552(v=WS.10).aspx.aspx)

所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!

  Previous post PHP8.1编译配置命令
Next post   macOS里编译安装PHP7.3

评论已关闭

  关于博主

灵魂的一半是学识,另一半是骨子里的涵养!

  近期评论

  • 暂无评论

成功源于不懈的努力。

暗自伤心,不如立即行动。

再多一点努力,就多一点成功。

得意淡然,失意坦然;喜而不狂,忧而不伤。

海纳百川,有容乃大;壁立千仞,无欲则刚。