Loading

DNS域名解析系统相关基础备忘

1. 简介


DNS(Domain Name System)域名系统主要的作用是进行主机名IP地址的互相转换。
DNS是:

  1. 一个由分层的DNS服务器实现的分布式数据库
  2. 一个使得主机能够查询分布式数据库的应用层协议

DNS协议运行在UDP上,使用53号端口。
DNS能够提供的服务包括:

  1. 主机名到IP地址的转换
  2. 主机别名的识别:将简单好记的主机别名同复杂难记的规范主机名对应起来
  3. 邮件服务器别名的识别:和主机别名识别类似
  4. 负载分配:简单来说就是将繁忙的站点分配在多台服务器上,一个主机名可以被转换成一组IP地址,根据服务器负载情况选择合适的IP地址进行访问站点

2. DNS工作机理


2.1 概述

从最核心的工作任务来看,DNS主要就是将主机名转换为IP地址,可以概述为下面的过程:
用户从浏览器访问一个网址时,DNS会将URL中的主机名抽取出来,通过UDP数据报经53端口向网络中发送一个DNS查询报文。经过一段时间后,用户主机上的DNS会收到对应的DNS回答报文,这里面包含了要访问的网址对应的站点的服务器的IP地址等等,从而就完成了主机名转换为IP地址的工作。

2.2 构成

2.2.1 分布式、层次数据库

首先DNS的设计不能是集中式的、单一的服务器,因为这样产生以下问题:

  1. 单点故障:假设该DNS服务器崩溃,整个域名解析全部崩溃
  2. 通信容量:单个DNS服务器处理所有的DNS查询会不堪重负
  3. 远距离集中式数据库:只有一个数据库,那么会导致距离远的用户查询速度缓慢,时延严重。
  4. 维护:单一数据库造成维护困难

因此DNS的设计就是分布式数据库,以层次的方式组织,分布在全世界范围内。
一般来说,DNS服务器的类型分为3类:

  1. 根DNS服务器
  2. 顶级域DNS服务器
  3. 权威DNS服务器

这样可以将DNS服务器的工作方式进一步细化为如下过程:

如下图所示,用户主机想要访问目标主机(假设是www.xxx.com),目标主机首先会先向本地DNS服务器发送一个DNS查询报文,该报文中含有目标主机的主机名。本地DNS服务器将该报文转发给根DNS服务器根DNS服务器会根据其com前缀向本地DNS服务器响应负责com顶级域DNS服务器的IP地址列表。本地DNS服务器接着再向这些顶级域DNS服务器之一发送该查询报文。该顶级域DNS服务器会根据其xxx.com前缀,并用权威DNS服务器的IP地址进行响应。该权威DNS服务器是负责dns.xxx.com的。最后本地DNS服务器直接向dns.xxx.com权威DNS服务器重发查询报文,该服务器最终以目标主机的IP地址进行响应,至此完成了域名到IP地址的转换。

上图是利用了递归查询,还有一种查询方式是迭代查询,如下图所示

2.2.2 DNS缓存

DNS的设计中还有一个重要的角色就是DNS缓存,DNS缓存主要的作用就是在第一次域名解析后,将解析的结果缓存起来,能够保证在之后的一段时间内访问该主机时,无需再次进行繁琐的请求过程,而是直接从缓存中拿到目标主机的IP地址进行访问,这样可以大大加快访问的速度。

3. DNS记录

实现DNS分布式数据库中的所有DNS服务器存储着全部的资源记录,该资源记录提供了主机名到IP地址的映射。
资源记录的格式:

(Name, Value, Type, TTL)

其中TTL是该记录的生存时间,决定了资源记录应当从缓存中删除的时间。Type字段决定了该条资源记录的类型,并且Name和Value的值取决于Type。

  • Type=A时,Name就是主机名,Value就是该主机名对应的IP地址
  • Type=NS时,Name就是个域(如xxx.com),Value就是对应如何获得该域中主机IP地址的权威DNS服务器的主机名
  • Type=CNAME时,Name就是主机别名,Value就是该主机别名对应的规范主机名
  • Type=MX时,Name就是邮件服务器别名,Value就是该邮件服务器别名对应的邮件服务器的规范主机名

4. DNS报文

DNS报文格式如下:

  • 前12个字节是首部区域
  • 问题区域包含正在进行的查询信息
  • 回答区域包含了对最初请求的名字的资源记录
  • 权威区域包含了其他权威服务器的记录
  • 附加区域包含了其他有帮助的记录
posted @ 2021-01-14 22:00  Icdd  阅读(207)  评论(0)    收藏  举报