2.3.4 使用 HTTPDNS

解决权威解析服务器的问题之后,我们再回过头看看 DNS 解析器(也就是 LocalDNS)的问题。

当我们发出域名解析请求时,会先连接到运营商就近的 DNS 解析器,由这个服务器帮我们去整棵 DNS 树上进行解析,然后将解析的结果返回给客户端,但是本地的 DNS 解析器,往往有自己的“小心思”。一个最令人头痛的问题就是域名劫持,其他还存在延迟、调度不精准等问题。传统域名解析面临的诸多问题与挑战本质根源在于 Local DNS 服务经历了过多的中间环节,服务质量不可控,如果能绕过中间环节,设计一个更安全、直接、高效的 DNS 解析服务,上述问题看起来就可以彻底地得到解决。

HTTPDNS 模式在这样的背景下应运而生。

简而言之,HTTPDNS 就是使用 HTTP 协议直接向 DNS 的权威解析服务器进行请求,从而获取域名对应的 IP 地址。HTTPDNS 跳过默认系统 DNS 解析的过程,使用 HTTP(S) 协议绕过运营商的 Local DNS,从而避免域名劫持,也更准确地判断客户端地区和运营商,得到更精准的解析结果。

图2-8 HTTPDNS 模式下 DNS 解析流程

使用 HTTPDNS 配合客户端策略(预解析、懒加载等),可以实现低解析延迟的域名解析效果。在笔者的实践中,移动端产品使用 HTTPDNS 服务,初次请求延迟约下降 25% 左右,之前各类的劫持、页面无法打开故障也大幅下降。

Last Updated:
Contributors: isno