DNS简述
目录
- DNS提供的服务
- DNS工作原理
- 为什么采用分布式DNS
- DNS服务器的层次结构
- DNS查询方式
1.DNS提供的服务
前言:DNS即域名系统,是互联网的核心服务。
(1)域名想IP地址的翻译
我们访问互联网习惯使用的是域名(主机名),而机器能识别的是IP地址,此时我们就十分需要一个域名解析系统DNS来进行域名到IP地址的转换。
(2)主机别名
在我们日常生活中,当我们的名字比较难记或者时难写时,在日常生活中,我们会给自己或者时朋友会给我们一个或几个别名。正如我们的人一样,当主机名比较复杂时,为便于记忆,拥有复杂名主机名的主机名能拥有一个或者多个别名最原始的那个复杂的主机名被称为规范主机名,别名(当存在时)会比主机名好记,放在我们生活中来看,规范主机名就相当于我们身份证上的名字,而别名就相当于我们生活中的外号了。
应用程序可以调用DNS来获取主机别名对应的主机规范名以及主机IP地址。
(3)邮件服务器别名
电子邮件应用程序可以调用DNS,对提供的邮件服务器别名进行解析,以获取对应的主机规范名以及主机IP地址。
(4)负载均衡
DNS也用在冗余的服务器(如Web服务器)之间进行负载均衡,繁忙的站点被冗余分布在不同的服务器上,每台服务器均运行在不同的端系统上,每个都有着不同的IP地址,由于这些冗余的的Web服务器,一个IP地址集合因此与同一个规范主机名相联系。DNS数据库存储着这些IP地址集合。
当客户对映射到某地址集合中名字发出一个DNS请求时,该服务器用整个IP地址集合进行响应,但在每个回答中循环这些地址次序。而每次客户都是向排在最前面(第一个)服务器发送HTTP请求报文,所以DNS在这些冗余的Web服务器之间分配了负载,也就是实现了负载均衡。
2.DNS工作原理
以DNS域名解析系统为例
运行一个应用程序(如web浏览器或者邮件浏览器)需要将主机名转换IP。
① 应用程序调用DNS的客户端,并且指明需要被转换的主机名(在基于UNIX的机器上,要调用getbyname()函数来实现这种转换)。
② 用户主上的DNS接收到吼,像网络中发送一个DNS查询报文。
#####所有的DNS请求和回答都是使用UDP数据报经端口53发送######
③ 经过时延后,主机收到一个提供了我们所需映射的DNS回答报文,此结果会传递到调用DNS的应用程序。
3.为什么采用分布式DNS
因为使用集中式DNS会产生以下的问题
- 单点故障。因为是集中式DNS,所以如果该DNS服务器崩溃,那么整个Internet也会随之瘫痪
- 通信容量。DNS要处理所有的DNS请求
- 远距离的集中式数据库会导致严重时延问题,如果DNS放在美国,而我们在中国发送DNS请求
- 维护要实时更新和保存所有的因特网主机
4.DNS服务器的层次结构
DNS一般分为三类服务器根服务器、顶级服务器、权威服务器。还有一类服务器成为本地服务器(不属于DNS服务器的层次结构),本地服务器可以存储一段时间内访问过的服务器IP,并将主机与主机名与IP地址保存一段时间(一般两天)。
1. 根服务器
6. 顶级服务器
7. 权威服务器
5.查询方式
(->表示发送请求,或者响应回答)
1. 递归查询递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。
在递归的模式下,用户主机和本地DNS服务器都是只发送一次请求。
过程如下
- 用户请求主机->本地DNS服务器->根DNS服务器->TLD(顶级服务器)->权威DNS服务器(得到映射结果)
- 用户主机<-本地DNS服务器<-根DNS服务器<-TLD(顶级DNS服务器)<-权威DNS服务器(得到映射结果)
2.迭代查询
DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。
在迭代的模式下,用户主机只发送一次请求,本地服务发送不少于一次请求。
过程如下
- 用户请求主机->本地DNS服务器->根服务器,根服务器->本地DNS服务器(根返回够解析查询请求的TLD DNS 服务器地址给本地服务器)
- 根据得到在根服务器中得到TLD DNS服务器 ,
本地DNS服务器->TLD(顶级服务器),TLD(顶级服务器)->本地DNS服务器(返回够解析查询请求的权威DNS 服务器地址给本地服务器) - 本地DNS服务器->权威DNS服务器,权威DNS服务器->,本地DNS服务器(返回够解析查询结果给本地服务器)
- 本地DNS服务器 -> 用户请求主机