DNS域名系统

1. 为什么要使用DNS域名系统

      在网络通信中,用户输入URL,回车或者点击查询发起请求,先将域名解析为ip地址,然后才会进行tcp连接。这里为什么一定要将域名解析为ip地址呢?
原因有两点:
     (1)使用域名是为了便于人们记住,但是计算机却不能识别,因此要将其转化为ip地址。
     (2)域名的长度是不确定的,但是ip地址的长度是确定的,IPv4的最大长度是32位二进制数,IPv6的长度是128位二进制数。

2. DNS域名系统

       DNS域名系统是一个分布式数据库,用来保存域名与ip映射关系的,由若干个域名服务器组成。
DNS域名系统
      上图是DNS域名系统的树状图,域名系统是由根域名、顶级域名、权限域名组成。权限域名也就是上图中的二级域名、三级域名、四级域名等等。
      例如:https://editor.****.net,https为协议名,之后的editor.****.net为:三级域名.二级域名.顶级域名,.net之后有一个默认的根域名,但是由于是固定的,因此没有在请求链接中显示。

3. DNS域名服务器

4. DNS域名系统与DNS域名服务器的区别

5. DNS域名的查询方式

(1)递归查询

      递归查询是主机向本地DNS域名服务器进行域名查询的方式。
      递归查询的方式是:主机向本地DNS域名服务器发起域名查询请求,本地DNS域名服务器接收到该请求后,在本地DNS域名服务器中进行查找,如果查找到,那就将查到的ip地址返回给主机,如果没有找到,那么本地DNS域名服务器将代替主机,以DNS客户的身份向根域名服务器发起查询清求。如果根域名查到了,就将查到的ip地址返回给本地DNS域名服务器,本地DNS域名服务器进行存储,同时传给主机。这里主机也会进行存储。

(2)迭代查询

      迭代查询是本地DNS域名服务器向根域名服务器、顶级域名服务器或者权限域名服务器进行域名查询的方式。
      迭代查询的方式是:本地DNS域名服务器向根域名服务器发起查询请求,根域名服务器返回对应的顶级域名服务器的地址(根域名服务器上不存储域名与ip的映射关系),本地DNS服务器向根域名服务器发起查询请求,如果查到,那么就返回ip地址,如果没有查到,就返回给本地DNS域名服务器,下一步要查询的域名服务器的地址。
DNS域名系统
      本地DNS域名服务器向根域名服务器发起的查询方式也可以是递归查询,例如图(b)中的方框部分就是本地DNS域名服务器向根域名服务器发起的递归查询。

6. 本地DNS域名服务器向根域名服务器发起的递归查询

     如上图(b),本地域名服务器向根域名服务器发出查询清求,根域名服务器找到能够解析该域名的顶级域名服务器地址。根域名服务器以DNS客户的身份,代替本地DNS域名服务器,向顶级域名服务器发起请求。
     如果在顶级域名服务器中找到了对应的ip,那么将返回给根域名服务器,由根域名服务器传给本地DNS域名服务器。
     如果没有找到,那就由顶级域名服务器向权限域名服务器发起查询请求。

     本地DNS域名服务器向根域名服务器发起的递归查询查询与迭代查询比较:
       (1) 递归查询会造成UDP请求次数增加。
       (2) 递归查询的时间比较长。
       (3) 递归查询时,根域名服务器的眼里比较大。

7. DNS域名查询的优化——高速缓存