解析慢,并不是 LocalDNS 最大的问题,它还存在一些更为严重的问题,例如:DNS 劫持、DNS 调度不准确(缓存、转发、NAT)导致性能退化等等,这些才是网络优化最应该解决的问题。
想要优化 DNS,现在最简单成熟的方案,就是使用 HTTPDNS。
今天就来聊聊,DNS、HTTPDNS,以及在 Android 下,如何使用 OKHttp 来集成 HTTPDNS。
二、DNS 和 HTTPDNS
2.1 什么是 DNS
在说到 HTTPDNS 之前,先简单了解一下什么是 DNS?
在网络的世界中,每个有效的域名背后都有为其提供服务的服务器,而我们网络通信的首要条件,就是知道服务器的 IP 地址。
但是记住域名(网址)肯定是比记住 IP 地址简单。如果有某种方法,可以通过域名,查到其提供服务的服务器 IP 地址,那就非常方便了。这里就需要用到 DNS 服务器以及 DNS 解析。
DNS(Domain Name System),它的作用就是根据域名,查出对应的 IP 地址,它是 HTTP 协议的前提。只有将域名正确的解析成 IP 地址后,后面的 HTTP 流程才可以继续进行下去。
DNS 服务器的要求,一定是高可用、高并发和分布式的服务器。它被分为多个层次结构。
- 根 DNS 服务器:返回顶级域 DNS 服务器的 IP 地址。
- 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址。
- 权威 DNS 服务器:返回相应主机的 IP 地址。
这三类 DNS 服务器,类似一种树状的结构,分级存在。
当开始 DNS 解析的时候,如果 LocalDNS 没有缓存,那就会向 LocalDNS 服务器请求(通常就是运营商),如果还是没有,就会一级一级的,从根域名查对应的顶级域名&#x