趣谈网络协议笔记-二(第十九讲)

趣谈网络协议笔记-二(第十九讲)

HttpDNS:网络世界的地址簿也会指错路


自勉

  • 勿谓言之不预也 —— 向为祖国牺牲的先烈致敬!

引用


正文

这一节并没有一张图片,主要讲解的是DNS在某些特定情况下的不足,以及为了应对这些不足,而使用httpDNS。
[image:1AD2982D-8556-44C5-8C34-C6C56E9155C3-1226-00002B1C44E786B4/569ddad1a0c5a5f60341fbe023b47cd1.jpg]

权威服务器在进行DNS解析时会做负载均衡,在低量级的情况下,权威服务器会直接返回给本地服务器几个IP地址,由客户端在需要的时候进行轮询即可。
但是对于高量级的情况,往往在一个城市或者区域内就会部署多个边缘节点,用于更高速地进行请求的反馈。
地方服务器在请求权威服务器解析mail.163.com时,会通过CNAME的方式从而获取到请求域名的一个别名,例如mail.ciruy.163.com,并让本地服务器到第一层的GSLB去解析这个域名。
第一层GSLB服务器在获取到这个解析请求后,会根据运营商来通过CNAME来再一次修改域名,并让本地服务器去请求第二层GSLB服务器来对其进行进一步的解析。
第二层GSLB服务器在获取到第一层传输过来的域名之后,就明白了用户当前是在哪个运行商干活,然后根据用户所在的地理位置,为其分配对应的较优节点并返回给本地DNS服务器。

一. 传统DNS存在哪些问题?

1. 域名缓存问题

很多时候,本地DNS服务器会缓存对于域名的解析结果用于加快客户端对于域名请求的响应效率,另外对于一些静态页面也会有一定程度的缓存。这对于对于即时性比较高的请求就比较尴尬了。
根据dns缓存刷新时间是多久?dns本地缓存时间介绍 - 东大网管 - 博客园所言,DNS服务器在传回解析结果时,也会传递有效时间TTL,各个平台的客户端请求DNS结果缓存的时间会对此进行参考,记住,仅仅是参考。

2. 域名转发问题

不同本地DNS服务器的解析策略不同,有些比较勤劳的DNS服务器会亲自进行DNS的解析,但是有些比较懒的则是转发到别的运营商进行解析。这样一来通过NAT转换IP地址后,GSLB第一层进行负载均衡时就会按照别的运营商的较优路径进行分配,这就完全没有意义了。

3. 域名更新问题

还是因为本地DNS服务器的缓存,如果我一个IP地址出了故障,从理论角度上来看,我会直接更新对应的权威DNS服务器上的映射信息。但是,本地服务器缓存了他之前的DNS请求结果,所以对于客户端的DNS请求,他依然可能会返回已经故障的IP地址,这样就会造成一部分用户无法访问服务器的结果。

4. 解析延迟问题

DNS解析还是会通过递归的方式,从根服务器开始逐级访问,所以会存在效率低甚至会超时的问题。

二. 那么如何解决这个问题呢?

请问,如果别人家的设备不好用,同时制造这个设备的门槛很低,你应该怎么办?
当然是自己自己干啊,社会可没有你想象中的那么友善,潜在的敌人无处不在!永远要有危机意识,就算是世界最强也需要时刻保持危机心理。
HttpDNS其实就是自己实现一套简易版的DNS解析逻辑。这在移动端会实现的更多,因为在移动端,你可以更加轻易地获取到运营商信息和地理位置信息。
在请求解析时,会先确定本地缓存是否存在对应的解析结果,如果有,直接进行返回;如果没有,则通过http协议访问httpDNS服务器,服务器地址通过传统DNS解析方式解析域名得到,另外,由于其一般不会变动,也有将其写死到SDK的做法。httpDNS服务器在收到解析域名请求后,通过分析运营商和地理信息进行负载均衡,将IP解析结果返回给客户端。至此,解析就结束了。

猜你喜欢

转载自blog.csdn.net/qq_31433709/article/details/108330788