什么是DNS?
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。
DNS域名称
域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成一个分层树状结构称为域命名空间。域名包含单个标签分隔点,例如:im.qq.com。完全限定的域名 (FQDN) 唯一地标识在 DNS 分层树中的主机的位置,通过指定的路径中点分隔从根引用的主机的名称列表。 下图显示与主机称为 im 内 qq.com DNS 树的示例。 主机的 FQDN 是 im.qq.com。
DNS 域的名称层次结构
DNS域名称空间的组织方式
按其功能命名空间中用来描述 DNS 域名称的五个类别的介绍详见下表中,以及与每个名称类型的示例。
DNS 和 Internet 域
互联网域名系统由名称注册机构负责维护分配由组织和国家/地区的顶级域在 Internet 上进行管理。 这些域名按照国际标准 3166。 一些很多现有缩写,保留以供组织中,以及两个字母和三个字母的国家/地区使用的缩写使用下表所示。一些常见的DNS域名称如下图:
资源记录
DNS 数据库中包含的资源记录 (RR)。 每个 RR 标识数据库中的特定资源。我们在建立DNS服务器时,经常会用到SOA,NS,A之类的记录,在维护DNS服务器时,会用到MX,CNAME记录。
常见的RR见下图:
Dns服务的工作过程
当 DNS 客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。
● 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。
● 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。
● DNS域名的指定类别。
对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称搜索地址资源记录。
DNS 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。
另外,客户机自己也可尝试联系其他的 DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代,即DNS服务器之间的交互查询就是迭代查询。
DNS 查询的过程如下图所示。
[iyunv@Gin scripts]# dig 8.8.8.8 www.baidu.com +trace
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> 8.8.8.8 www.baidu.com +trace
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 2524
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;8.8.8.8. IN A
;; AUTHORITY SECTION:
. 3600 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2017020400 1800 900 604800 86400
;; Query time: 239 msec
;; SERVER: 202.106.0.20#53(202.106.0.20)
;; WHEN: Sat Feb 4 15:15:36 2017
;; MSG SIZE rcvd: 100
. 35840 IN NS e.root-servers.net.
. 35840 IN NS c.root-servers.net.
. 35840 IN NS g.root-servers.net.
. 35840 IN NS i.root-servers.net.
. 35840 IN NS h.root-servers.net.
. 35840 IN NS l.root-servers.net.
. 35840 IN NS m.root-servers.net.
. 35840 IN NS f.root-servers.net.
. 35840 IN NS k.root-servers.net.
. 35840 IN NS d.root-servers.net.
. 35840 IN NS j.root-servers.net.
. 35840 IN NS b.root-servers.net.
. 35840 IN NS a.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 77939 ms
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
;; Received 491 bytes from 202.12.27.33#53(202.12.27.33) in 78137 ms
baidu.com. 172800 IN NS dns.baidu.com.
baidu.com. 172800 IN NS ns2.baidu.com.
baidu.com. 172800 IN NS ns3.baidu.com.
baidu.com. 172800 IN NS ns4.baidu.com.
baidu.com. 172800 IN NS ns7.baidu.com.
;; Received 201 bytes from 192.54.112.30#53(192.54.112.30) in 66527 ms
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
a.shifen.com. 1200 IN NS ns5.a.shifen.com.
a.shifen.com. 1200 IN NS ns2.a.shifen.com.
a.shifen.com. 1200 IN NS ns4.a.shifen.com.
a.shifen.com. 1200 IN NS ns3.a.shifen.com.
a.shifen.com. 1200 IN NS ns1.a.shifen.com.
;; Received 228 bytes from 61.135.165.235#53(61.135.165.235) in 73 ms
[iyunv@Gin scripts]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 111.206.223.205
www.a.shifen.com has address 111.206.223.206
ping
[iyunv@Gin scripts]# ping -c2 www.baidu.com
PING www.a.shifen.com (111.206.223.206) 56(84) bytes of data.
64 bytes from 111.206.223.206: icmp_seq=1 ttl=128 time=52.9 ms
64 bytes from 111.206.223.206: icmp_seq=2 ttl=128 time=78.6 ms
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 5217ms
rtt min/avg/max/mdev = 52.976/65.821/78.667/12.848 ms