一、概况DNS协议
提供的是一种主机名和IP地址转化的服务,就是我们常说的域名系统
。它是由分层的DNS
服务器组成的分布式数据库
,是定义了主机如何查询这个分布式数据库的方法
的应用层协议。DNS
协议运行在UDP
协议上,使用53
号端口。
二、域名的层次结构
域名的层次结构可以如下所示:
主机名.次级域名.顶级域名.根域名
host.sld.tld.root
根据域名的层次结构,管理不同层级的域名的服务器,可以分为根域名服务器,顶级域名服务器和权威域名服务器。
三、查询过程DNS
的查询过程一般为,我们首先将DNS请求发送到本地的DNS
服务器,有本地DNS
服务器代为请求。本地DNS
服务器向根域名服务器
查询顶级域名服务器
的NS
记录,然后本地DNS
服务器又向顶级域名服务器
查询次级域名服务器
的NS
记录。最后次级域名服务器
查询主机名
的ip地址
。
比如说我们如果想要查询www.baidu.com的ip地址,首先我们先向本地域名服务器发起请求,判断是否存在缓
存。如果存在缓存,则应该读取缓存中的ip地址。如果不存在缓存,则本地域名服务器应该向根域名服务器发送
请求,根域名服务器返回.com的顶级域名列表。然后本地服务器又向顶级域名服务器发送请求,顶级域名服务器
负责返回.baidu的ip列表。最后本地域名服务器又向权威域名服务器发送请求,最后返回对应的ip地址。
四、DNS记录和报文DNS
服务器中以资源记录的形式存储信息,每一个DNS
响应报文一般包含多条资源记录。一条资源记录的具体格式为:(Name, Value, Type, TTL)。其中TTL是资源记录的生存时间,它定义了资源记录能被其他的DNS
服务器缓存的时间有多长。
其中一共存在四种Type
的值,分别为:A
, NS
, CNAME
,MX
,不同的type
的值,对应资源记录表示的意义不同。
1、如果 Type = A,则 Name 是主机名,Value 是主机名对应的 IP 地址。因此一条记录为 A 的资源记录,
提供了标准的主机名到 IP 地址的映射。
2、 如果 Type = NS,则 Name 是个域名,Value 是负责该域名的 DNS 服务器的主机名。这个记录主要用于
DNS 链式查询时,返回下一级需要查询的 DNS 服务器的信息。
3、如果 Type = CNAME,则 Name 为别名,Value 为该主机的规范主机名。该条记录用于向查询的主机返回
一个主机名对应的规范主机名,从而告诉查询主机去查询这个主机名的 IP 地址。主机别名主要是为了通过给一
些复杂的主机名提供一个便于记忆的简单的别名。
4、 如果 Type = MX,则 Name 为一个邮件服务器的别名,Value 为邮件服务器的规范主机名。它的作用和
CNAME 是一样的,都是为了解决规范主机名不利于记忆的缺点。
五、迭代查询和递归查询迭代查询:
每一次发送请求,都会相应结果,然后拿到结果后,再次发送请求,就是迭代查询。递归查询:
只需要发送一次请求,我们就可以拿到结果。在DNS请求中的迭代查询和递归查询:
在DNS请求中,我们向本地DNS服务器发送的请求就是递归查询
,本地服务器向其他域名服务器的查询是迭代查询
,因为本地服务器先想根域名服务器发送请求,然后拿到结果后,再想顶级域名服务器发送请求.....
。
六、DNS缓存
当某一个DNS服务器接受到一个DNS响应时,此时就会缓存到本地存储器中。返回的资源的报文中TTL
表示可以缓存的时间。
七、DNS实现负载均衡
如果存在一个大型的网站,此时可能存在多台服务器来提供服务,此时存在一个域名对应着多个服务器的ip地址,此时当用户请求DNS解析时,此时会请求到多个ip地址,在每一个请求中会循环的将这些ip地址排序,然后取出第一个返回给用户。由此将用户分配到请求不同服务器上,进而达到负载均衡。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_47450807/article/details/123472530
内容来源于网络,如有侵权,请联系作者删除!