1.何为DNS?
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。你可以把它想象成一本巨大的电话本。
举例来说,如果你要访问域名www.qq.com,首先要通过DNS查出它的IP地址是119.147.15.13(地址可能不同,因为百度的服务器有很多)
DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示:
2. 域名的层级
由于后面我会讲到 DNS 的解析过程,因此需要你对域名的层级有一些了解
-
根域名 :
.root
或者.
,通常是省略的 -
顶级域名,如
.com
,.cn
等 -
次级域名,如
baidu.com
里的baidu
,这个是用户可以进行注册购买的 -
主机域名,比如
baike.baidu.com
里的baike
,这个是用户可分配的 -
主机名 次级域名 顶级域名 根域名 baike .baidu .com .
3. DNS 解析过程
咱们以访问 www.163.com
这个域名为例,来看一看当你访问 www.163.com 时,会发生哪些事:
-
先查找本地 DNS 缓存(自己的电脑上),有则返回,没有则进入下一步
-
查看本地 hosts 文件有没有相应的映射记录,有则返回,没有则进入下一步
-
向本地 DNS 服务器(一般都是你的网络接入服务器商提供,比如中国电信,中国移动)发送请求进行查询,本地DNS服务器收到请求后,会先查下自己的缓存记录,如果查到了直接返回就结束了,如果没有查到,本地DNS服务器就会向DNS的根域名服务器发起查询请求:请问老大,
www.163.com
的ip是啥? -
根域名服务器收到请求后,看到这是个
.com
的域名,就回信说:这个域名是由.com
老弟管理的,你去问他好了,这是.com
老弟的联系方式(ip1)。 -
本地 DNS 服务器接收到回信后,照着老大哥给的联系方式(ip1),马上给
.com
这个顶级域名服务器发起请求:请问.com
大大,www.163.com
的ip 是啥? -
.com
顶级域名服务器接收到请求后,看到这是163.com
的域名,就回信说:这个域名是.163.com
老弟管理的,你就去问他就行了,这是他的联系方式(ip2) -
本地 DNS 服务器接收到回信后,按照前辈的指引(ip2),又向
.163.com
这个权威域名服务器发起请求:请问163.com
大大,请问www.163.com
的ip是啥? -
163.com
权威域名服务器接收到请求后,确认了是自己管理的域名,马上查了下自己的小本本,把www.163.com
的ip告诉了 本地DNS服务器。 -
本地DNS服务器接收到回信后,非常地开心,这下总算拿到了
www.163.com
的ip了,马上把这个消息告诉了要求查询的客户(就是你的电脑)。由于这个过程比较漫长,本地DNS服务器为了节省时间,也为了尽量不去打扰各位老大哥,就把这个查询结果偷偷地记在了自己的小本本上,方便下次有人来查询时,可以快速回应。
总结起来就是三句话
-
从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录(IP地址)
-
从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录(IP地址)
-
从"次级域名服务器"查出"主机名"的IP地址
3.1查询方式
-
递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,
若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结
果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
-
迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对
方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起
进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需
要发起多次查询。(需要自己动手)
4.各种资源记录
区域解析库:由众多资源记录RR(Resource Record)组成
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解
析库的第一条记录SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。在任何DNS记录文件中,都是以SOA ( Startof Authority )记录开始。SOA资源记录表明此DNS名称服务器是该DNS域中数据信息的最佳来源。
A(internet Address):作用,域名解析成IP地址
AAAA(FQDN): --> IPV6
PTR(PoinTeR):反向解析,ip地址解析成域名
NS(Name Server):,专用于标明当前区域的DNS服务器,服务器类型为域名服务器
CNAME : Canonical Name,别名记录
MX(Mail eXchanger)邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮
件)记录,https验证等
SOA记录与NS记录的区别:NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。