DNS(Domain Name System)即域名解析系统,是网络访问时用于将域名解析成对应IP地址的一种分布式网络服务。比如,要访问www.google.com这个域名,Android系统会首先发送一个UDP请求到标准的53端口系统的域名解析服务器,拿到对应的IP地址后才会与服务端建立连接。除了标准的DNS服务外,目前还有HttpDNS(DNS over Https, DoH)以及基于TSL的DNS服务(DNS over TLS, DoT)。
那么,Android中DNS解析的大致框架是怎么的?整个DNS解析的流程又是怎么样的? 在看具体实现细节之前,我们不妨思考一下几个问题,想一想,如果我们自己从零开始为Android设计一个DNS系统,应该怎么做?