计算机网络面试——DNS篇

x33g5p2x  于2022-03-14 转载在 其他  
字(1.5k)|赞(0)|评价(0)|浏览(459)

一、概况
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地址排序,然后取出第一个返回给用户。由此将用户分配到请求不同服务器上,进而达到负载均衡。

相关文章