「DNS」- 原理概述

  CREATED BY JENKINSBOT

查询流程

DNS 是一个分布式系统,绝大多数的 DNS-Server 端的数据库不会拥有所有的域名记录,当客户端向一个 DNS-Server 端查询域名但该 DNS-Server 端上却没有该域名的记录时,此时会有两种继续查询的方式:

递归查询

由 DNS-Server 向其他 DNS-Server 进行查询,将最终查询结果返回给 DNS-Client

迭代查询

DNS-Server 告知 DNS-Client 其他 DNS-Server 地址,客户端自行向其他 DNS-Server 进行查询;

关于 CNAME 解析

是否 DNS-Client 会发送两次请求?

domain name system – Do CNAME records result in a second DNS lookup?

根据 DNS 抓包,只产生一次请求,我们猜测 CNAME 解析发生在 DNS-Server(而非 DNS-Client):

# dig k4nz.com @8.8.8.8
...

# tcpdump -n -i any host 8.8.8.8 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
17:30:37.454799 IP 172.31.252.20.42318 > 8.8.8.8.53: 25416+ [1au] A? k4nz.com. (49)
17:30:37.692619 IP 8.8.8.8.53 > 172.31.252.20.42318: 25416 2/0/1 CNAME k4nz.host.d3rm.org., A 115.159.122.157 (85)