DNS? 其实就是域名系统,作为互联网基础服务,互联网发展到今天,包括今天的5G技术,都离不开DNS的贡献。
DNS(Domain Name System)
以下是wikipedia对DNS的定义:
The Domain Name System (DNS) is a hierarchical and decentralized naming system for computers, services, or other resources connected to the Internet or a private network. It associates various information with domain names assigned to each of the participating entities. Most prominently, it translates more readily memorized domain names to the numerical IP addresses needed for locating and identifying computer services and devices with the underlying network protocols. By providing a worldwide, distributed directory service, the Domain Name System has been an essential component of the functionality of the Internet since 1985.
大意就是,DNS旨在建立域名与IP的映射关系,其本身为分布式的内存数据库,底层采用红黑树实现。
DNS解析过程分为递归和迭代解析两种,本文主要讨论递归解析。全球共有13台DNS根服务器,由ICANN(The Internet Corporation for Assigned Names and Numbers)维护,当然,为了减少 这些根服务器的压力,全球建立了许多镜像节点。这样,由这些根DNS服务器完成递归解析过程。下图为递归解析过程示例:
DNS的递归解析过程
- 当客户端请求example.microsoft.com的域名查询请求时,即Q1,会首先查询本地名称服务器,查看其缓存是否存在此域名的IP,如果存在,直接返回IP,即A5;如果不存在,会向根名称服务器发起请求,即Q2。
- 根名称服务器不知道此域名的对应IP,但它知道顶级域.com的名称服务器,因此,先返回本地名称服务器,即A1,再请求.com顶级名称服务器,即Q3。
- 执行Q3查询后,将会响应A2,再响应A2后,会发出Q4的查询。
- 就这样递归一级一级递归下去,直到查询到example.microsoft.com的权威服务器时,将IP返回本地名称服务器,即A4。
- 最后将查询结果返回客户端,即A5。
PS: 以上只是三级域名的查询,简单的递归过程是这样的,如果为多级域名查询时,情况更为复杂,如上层是否使用Anycast与CDN缓存技术。当然,多级递归会带来许多问题,一是安全,二是性能,我们将在后面讨论。
,