Home Archives Categories Tags

DNS实现原理

发布时间: 更新时间: 总字数:1355 阅读时间:3m 作者: 分享

域名系统(Domain Name System, DNS)是整个互联网的通讯录,它能够将容易识别的域名翻译成可被机器理解IP地址。

前言

DNS 可以理解为一个分布式的树状命名系统,它就像一个去中心化的分布式数据库,存储着从域名到IP地址的映射关系。

工作原理

本例采用一台机器访问xiexianbin.cn为例,详解DNS工作原理,如下图:

  1. 本地的DNS客户端向DNS解析器发出解析xiexianbin.cn域名的请求
  2. DNS解析器向就近的根DNS服务器.请求顶级域名DNS服务cn.的地址
  3. 拿到顶级域名DNS服务cn.的地址之后,DNS解析器会向顶级域名服务请求负责xiexianbin.cn.域名解析的命名服务Name Server
  4. 得到授权的DNS命名服务,就可以根据请求的具体的主机IP地址
  5. DNS解析器将IP地址返回本地的DNS客户端

DNS解析器有两种查询方式:

  • 迭代查询:依次返回DNS服务地址,直到最终查到
  • 递归查询:DNS服务器收到客户端结果时,若本地有缓存,直接返回;若无,就询问其他的服务器,并将结果返回客户端

域名层级

域名层级是一个层级的树形结构,树的最顶层是根域名,一般使用.来表示,域名xiexianbin.cn,该写法其实省略了最后的.,全称域名(FQDN)为xiexianbin.cn.

域名服务器

DNS 域名服务器大体分成三类:

  • 根域名服务
  • 顶级域名服务
  • 权威域名服务

域名的命名空间是树形的,决定了处理域名解析的DNS服务器也是树形的,只是在树的组织和每一层的职责上有一些不同。 DNS解析器根域名服务器查找到顶级域名服务器IP地址,又从顶级域名服务器查找到权威域名服务器IP地址,最终从权威域名服务器查出了对应服务的IP地址,如下:

dig -t A www.xiexianbin.cn +trace

; <<>> DiG 9.10.6 <<>> -t A www.xiexianbin.cn +trace
;; global options: +cmd
.			46	IN	NS	c.root-servers.net.    # 13 组根域名服务器
.			46	IN	NS	e.root-servers.net.
.			46	IN	NS	a.root-servers.net.
.			46	IN	NS	b.root-servers.net.
.			46	IN	NS	f.root-servers.net.
.			46	IN	NS	h.root-servers.net.
.			46	IN	NS	m.root-servers.net.
.			46	IN	NS	k.root-servers.net.
.			46	IN	NS	j.root-servers.net.
.			46	IN	NS	i.root-servers.net.
.			46	IN	NS	d.root-servers.net.
.			46	IN	NS	l.root-servers.net.
.			46	IN	NS	g.root-servers.net.
;; Received 239 bytes from 192.168.1.1#53(192.168.1.1) in 8 ms

cn.			172800	IN	NS	a.dns.cn.    # 名 DNS 服务器
cn.			172800	IN	NS	b.dns.cn.
cn.			172800	IN	NS	c.dns.cn.
cn.			172800	IN	NS	d.dns.cn.
cn.			172800	IN	NS	e.dns.cn.
cn.			172800	IN	NS	f.dns.cn.
cn.			172800	IN	NS	g.dns.cn.
cn.			172800	IN	NS	ns.cernet.net.
cn.			86400	IN	DS	57724 8 2 5D0423633EB24A499BE78AA22D1C0C9BA36218FF49FD95A4CDF1A4AD 97C67044
cn.			86400	IN	RRSIG	DS 8 1 86400 20210313050000 20210228040000 42351 . cNhKizxSK7mTGfToT6aneUHMvysGwD0BmdkpkrJG6LRTClIeFp6OxYv9 woofV06dpzrb4XrUCaZzedloaSiS5gz0NLRpUxu9LMWzPqugJ6mB5Nku Tzh7z6hWqI4P6RWm0jdUuV0UU8tHnLg+z0R9oTLgHZFzCZ2VWb5fbBws iZY0buc5Goq5okBoUQuYxJnYBbJs6jaZ6SgK57lueIkx6TW7rU69ZcWX 33CWOV3GoJ+cMS57dSWtwrQxfN8S32x5eWFM7P/PSh3qA8Pb5qdqVW9x Mzz6ll/lk2lpgLNWH2OZHM+x9q9+o/0DhjrkoRxsbmdZWPqaDscedVwV PSru4w==
;; Received 708 bytes from 198.41.0.4#53(a.root-servers.net) in 243 ms

xiexianbin.cn.		86400	IN	NS	dns27.hichina.com.    # 权威DNS服务器
xiexianbin.cn.		86400	IN	NS	dns28.hichina.com.
3qdaqa092ee5belp64a74ebnb8j53d7e.cn. 21600 IN NSEC3 1 1 10 AEF123AB 3QLMP0QRNQ96G5AFGOPNB7U7IJ4MBP4B  NS SOA RRSIG DNSKEY NSEC3PARAM
3qdaqa092ee5belp64a74ebnb8j53d7e.cn. 21600 IN RRSIG NSEC3 8 2 21600 20210314110243 20210212102103 38388 cn. JKhH8x1OG/7Caw+HOskaQeqa4HUkFl3y7iRA5yO3vCiaDpPB3vycUeIq BvuOtXUhatYpn9BeBeyrOlTHBt2VdTtAPDtTct771qUzyoptqeMbLu8D p+TJL8/QEiA9DPiiu8ijgGSq3dT5RE2NE8dzYPGVyVfGOvJ3l341FUG+ JFY=
lvmcu6rg30kg6ch8v95m5orojf1s15k3.cn. 21600 IN NSEC3 1 1 10 AEF123AB M00DET6UMAB8JVV453K3P4SRBR44G7RI  CNAME RRSIG
lvmcu6rg30kg6ch8v95m5orojf1s15k3.cn. 21600 IN RRSIG NSEC3 8 2 21600 20210314100107 20210212092032 38388 cn. LEX4+QruWCNZCcJk9i3RdXdnoQhLb85fp21R6bePmcuWnuBuDF/3hPyH CV6/2Y23p8ucFS12Wj0DBsIwPBEWuXuXvFBqv7eosiiGIic3cS5Wa+tF 5Wu9pvWLkfP9ngEALMzPcVvSiUSgLTH9KpeMPdT6f9M+90auGDZl1mf7 u+0=
;; Received 665 bytes from 2001:dc7:1000::1#53(d.dns.cn) in 25 ms

www.xiexianbin.cn.	600	IN	CNAME	www.xiexianbin.cn.w.cdngslb.com.    # 解析地址
;; Received 91 bytes from 106.11.141.120#53(dns28.hichina.com) in 43 ms

胶水记录

胶水记录(Glue Record)解决在出现循环依赖时,直接在上一级作用域返回 DNS 服务器的 IP 地址

dig +trace +additional www.xiexianbin.cn

; <<>> DiG 9.10.6 <<>> +trace +additional www.xiexianbin.cn
;; global options: +cmd
.			3512	IN	NS	h.root-servers.net.
.			3512	IN	NS	b.root-servers.net.
.			3512	IN	NS	e.root-servers.net.
.			3512	IN	NS	m.root-servers.net.
.			3512	IN	NS	k.root-servers.net.
.			3512	IN	NS	d.root-servers.net.
.			3512	IN	NS	j.root-servers.net.
.			3512	IN	NS	f.root-servers.net.
.			3512	IN	NS	l.root-servers.net.
.			3512	IN	NS	c.root-servers.net.
.			3512	IN	NS	g.root-servers.net.
.			3512	IN	NS	a.root-servers.net.
.			3512	IN	NS	i.root-servers.net.
;; Received 239 bytes from 192.168.1.1#53(192.168.1.1) in 7 ms

cn.			172800	IN	NS	a.dns.cn.
cn.			172800	IN	NS	b.dns.cn.
cn.			172800	IN	NS	c.dns.cn.
cn.			172800	IN	NS	d.dns.cn.
cn.			172800	IN	NS	e.dns.cn.
cn.			172800	IN	NS	f.dns.cn.
cn.			172800	IN	NS	g.dns.cn.
cn.			172800	IN	NS	ns.cernet.net.
cn.			86400	IN	DS	57724 8 2 5D0423633EB24A499BE78AA22D1C0C9BA36218FF49FD95A4CDF1A4AD 97C67044
cn.			86400	IN	RRSIG	DS 8 1 86400 20210313050000 20210228040000 42351 . cNhKizxSK7mTGfToT6aneUHMvysGwD0BmdkpkrJG6LRTClIeFp6OxYv9 woofV06dpzrb4XrUCaZzedloaSiS5gz0NLRpUxu9LMWzPqugJ6mB5Nku Tzh7z6hWqI4P6RWm0jdUuV0UU8tHnLg+z0R9oTLgHZFzCZ2VWb5fbBws iZY0buc5Goq5okBoUQuYxJnYBbJs6jaZ6SgK57lueIkx6TW7rU69ZcWX 33CWOV3GoJ+cMS57dSWtwrQxfN8S32x5eWFM7P/PSh3qA8Pb5qdqVW9x Mzz6ll/lk2lpgLNWH2OZHM+x9q9+o/0DhjrkoRxsbmdZWPqaDscedVwV PSru4w==
a.dns.cn.		172800	IN	A	203.119.25.1    # 返回IP地址
b.dns.cn.		172800	IN	A	203.119.26.1
c.dns.cn.		172800	IN	A	203.119.27.1
d.dns.cn.		172800	IN	A	203.119.28.1
e.dns.cn.		172800	IN	A	203.119.29.1
f.dns.cn.		172800	IN	A	195.219.8.90
g.dns.cn.		172800	IN	A	66.198.183.65
ns.cernet.net.		172800	IN	A	202.112.0.44
a.dns.cn.		172800	IN	AAAA	2001:dc7::1
d.dns.cn.		172800	IN	AAAA	2001:dc7:1000::1
;; Received 708 bytes from 192.58.128.30#53(j.root-servers.net) in 32 ms

xiexianbin.cn.		86400	IN	NS	dns27.hichina.com.
xiexianbin.cn.		86400	IN	NS	dns28.hichina.com.
3qdaqa092ee5belp64a74ebnb8j53d7e.cn. 21600 IN NSEC3 1 1 10 AEF123AB 3QLMP0QRNQ96G5AFGOPNB7U7IJ4MBP4B  NS SOA RRSIG DNSKEY NSEC3PARAM
3qdaqa092ee5belp64a74ebnb8j53d7e.cn. 21600 IN RRSIG NSEC3 8 2 21600 20210314110243 20210212102103 38388 cn. JKhH8x1OG/7Caw+HOskaQeqa4HUkFl3y7iRA5yO3vCiaDpPB3vycUeIq BvuOtXUhatYpn9BeBeyrOlTHBt2VdTtAPDtTct771qUzyoptqeMbLu8D p+TJL8/QEiA9DPiiu8ijgGSq3dT5RE2NE8dzYPGVyVfGOvJ3l341FUG+ JFY=
lvmcu6rg30kg6ch8v95m5orojf1s15k3.cn. 21600 IN NSEC3 1 1 10 AEF123AB M00DET6UMAB8JVV453K3P4SRBR44G7RI  CNAME RRSIG
lvmcu6rg30kg6ch8v95m5orojf1s15k3.cn. 21600 IN RRSIG NSEC3 8 2 21600 20210314100107 20210212092032 38388 cn. LEX4+QruWCNZCcJk9i3RdXdnoQhLb85fp21R6bePmcuWnuBuDF/3hPyH CV6/2Y23p8ucFS12Wj0DBsIwPBEWuXuXvFBqv7eosiiGIic3cS5Wa+tF 5Wu9pvWLkfP9ngEALMzPcVvSiUSgLTH9KpeMPdT6f9M+90auGDZl1mf7 u+0=
;; Received 665 bytes from 2001:dc7::1#53(a.dns.cn) in 28 ms

www.xiexianbin.cn.	600	IN	CNAME	www.xiexianbin.cn.w.cdngslb.com.
;; Received 91 bytes from 2400:3200:2000:47::1#53(dns28.hichina.com) in 9 ms

参考

  1. https://www.iana.org/domains/root/servers
最新评论
加载中...