DNS之CNAME

DNS 的原理就是一层层从根域名递归查询,其中让我觉得有疑问的就是 CNAME

反复使用命令查询七牛的官网,我知道他们一定会使用 CDN,CDN 也是 CNAME 使用最多的场景。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ dig qiniu.com

; <<>> DiG 9.10.6 <<>> qiniu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14562
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;qiniu.com. IN A

;; ANSWER SECTION:
qiniu.com. 212 IN CNAME mid-lvs-public.qiniu.com.
mid-lvs-public.qiniu.com. 212 IN CNAME jjh-lvs-public.qiniu.com.
jjh-lvs-public.qiniu.com. 212 IN A 180.97.147.243

;; Query time: 72 msec
;; SERVER: 223.5.5.5#53(223.5.5.5)
;; WHEN: Mon Aug 10 18:41:59 CST 2020
;; MSG SIZE rcvd: 101

可以看到路径是这样子的 qiniu.com. => mid-lvs-public.qiniu.com. => jjh-lvs-public.qiniu.com. => 给了一个 A 记录 180.97.147.243

最终我们的请求肯定也都是发到 A 记录上,也就是将 qiniu.com 交到 180.97.147.243,这个 IP 对应的服务接受到请求才开始往客户端吐数据。

CNAME 提供一个窍门将解析 A 记录的权利交到下一个域名上,具体下一个域名对应的 ip 可能以后会变,但是对于上一个域名所对应的域名不会变,这个点很像 JAVA 中的一个接口,接口的实现可能会变,但是接口名和方法名提前就确定好了。

参考文档

坚持原创技术分享,您的支持将鼓励我继续创作!