详解DNS域名解析系统(域名、域名服务器[根、顶级、授权/权限、本地]、域名解析过程[递归与迭代])
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105583806
学习课程:《2019王道考研计算机网络》
学习目的:利用最省时间的方法学习考研面试中的计算机网络。
1、DNS系统
域名系统(Domain Name System, DNS)
是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(如www.BitHachi.cn)转换为便于机器处理的IP地址
。- 相对于IP地址,人们更喜欢使用具有特定含义的字符串来标识因特网上的计算机。
- DNS系统采用客户/服务器模型,其协议运行在
UDP
之上,使用53
号端口。 - 从概念上可将DNS分为3部分:
层次域名空间、域名服务器和解析器
。
- 某台主机访问网站www.bithachi.cn网站为例,DNS的大致流程
2、域名
因特网采用层次树状结构的命名方法
。采用这种命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名(Domain Name)
。域(Domain)
是名字空间中一个可被管理的划分。- 域还可以划分为子域,而子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等。
在域名系统中,每个域分别由不同的组织进行管理。每个组织都可以将它的域再分成一定数目的子域,并将这些子域委托给其他组织去管理。
- 例如,管理CN域的中国将EDU.CN子域授权给中国教育和科研计算机网(CERNET)来管理。
- 比如我的域名bithachi.cn是一个二级域名,我可以任意分配三级域名,比如1001.bithachi.cn和1002.bithachi.cn,这两个网址是可以访问的,小项目。
域名空间的树状结构:
每个域名都由标号
序列组成,而各标号之间用点(“.”)
隔开。
关于域名中的标号有以下几点需要注意:
- 1)标号中的英文
不区分大小写
。 - 2)标号中除连字符(-) 外不能使用其他的标点符号。
- 3)每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符。
- 4)级别最低的域名写在最左边,级别最高的顶级域名写在最右边。
顶级域名(Top Level Domain, TLD)
分为如下三大类:
- 1)国家顶级域名(nTLD)。国家和某些地区的域名,如“.cn”表示中国,“.us”表示美国,.uk”表示英国。
- 2)通用顶级域名(gTLD)。 常见的有“.com” (公司)、“.net" (网络服务机构)、“.org”(非营利性组织)和“.gov" (国家或政府部门)等。
- 3)基础结构域名。
这种顶级域名只有一个,即arpa,用于反向域名解析
,因此又称反向域名。反向域名解析与通常的正向域名解析相反,提供IP地址到域名的对应
,反向域名格式如:X.X.X.in-addr.arpa。很多网络服务提供商要求访问的IP地址具有反向域名解析的结果,否则不提供服务。
国家顶级域名下注册的二级域名均由该国家自行确定。
3、域名服务器
因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型
。- 域名到IP地址的解析是由运行在域名服务器上的程序完成的,
一个服务器所负责管辖的(或有权限的)范围称为区(不以“域”为单位)
,各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有结点必须是能够连通的,每个区设置相应的权限域名服务器
,用来保存该区中的所有主机的域名到IP地址的映射。 - 每个域名服务器不但能够进行一些域名到IP地址的解析,而且还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,能够知道到什么地方去找其他域名服务器。
- DNS使用了大量的域名服务器,它们以层次方式组织。没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的DNS上。
- 采用分布式设计的DNS,是一个在因特网上实现分布式数据库的精彩范例。主要有4种类型的域名服务器。
(1)根域名服务器
根域名服务器
是最高层次
的域名服务器,所有的根域名服务器
都知道所有
的顶级域名服务器的IP地址
。- 根域名服务器也是最重要的域名服务器,不管是哪个
本地域名服务器
,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器
。 - 因特网上有
13个根域名服务器
,尽管我们将这13个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群
,以提供安全性和可靠性。 - 需要注意的是,
根域名服务器
用来管辖顶级域(如.com)
, 通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器
下一步应当找哪个顶级域名服务器
进行查询。
(2)顶级域名服务器
- 这些域名服务器负责
管理在该顶级域名服务器注册的所有二级域名
。 - 收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)。
(3)授权域名服务器(权限域名服务器)
每台主机
都必须在授权域名服务器
处登记。为了更加可靠地工作,一台主机最好至少有两个授权域名服务器。- 实际上,许多
域名服务器
都同时
充当本地域名服务器
和授权域名服务器
。 授权域名服务器
总能将其管辖的主机名
转换为该主机的IP地址
。
(4)本地域名服务器
- 本地域名服务器对域名系统非常重要。
- 每个因特网服务提供者(ISP), 或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。
当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器
。- 事实上,我们在Windows系统中配置
“本地连接”
时,就需要填写DNS地址,这个地址就是本地DNS (域名服务器)的地址
。
4、域名解析过程
域名解析是指把域名映射成为IP地址或把IP地址映射成域名的过程。前者称为正向解析,后者称为反向解析。
- 当客户端需要域名解析时,通过本机的DNS客户端构造一个
DNS请求报文
,以UDP数据报
方式发往本地域名服务器
。 - 域名解析有两种方式:
递归查询
和递归与迭代
相结合的查询。
(1)递归查询方式
- 递归查询的过程如下图所示, 由于该方法给根域名服务造成的负载过大,所以在实际中几乎不使用。
(2) 常用递归与迭代相结合的查询方式
常用递归与迭代相结合的查询方式如下图所示,该方式分为两个部分。
①主机
向本地域名服务器
的查询采用的是递归
查询
- 也就是说,如果
本地主机
所询问的本地域名服务器
不知道被查询域名的IP 地址,那么本地域名服务器
就以DNS客户
的身份,向根域名服务器
继续发出查询请求报文
(即替该主机继续查询),而不是让该主机自己进行下一步的查询。 - 在这种情况下,
本地域名服务器
只需向根域名服务器查询
一次,后面的几次查询都是递归地在其他几个域名服务器之间进行的[见图(a)中的步骤③~⑥]。 - 在步骤⑦中,
本地域名服务器
从根域名服务器
得到了所需的IP地址
,最后在步骤⑧中,本地域名服务器
把查询结果告诉主机
m.xyz.com
②本地域名服务器
向根域名服务器
的查询采用迭代
查询
- 当
根域名服务器
收到本地域名服务器
发出的迭代查询请求报文
时,要么给出所要查询的IP地址,要么告诉本地域名服务器
:“你下一步应当向哪个顶级域名服务器
进行查询”。 - 然后让
本地域名服务器
向这个顶级域名服务器
进行后续的查询,如图(b)所示。 - 同样,
顶级域名服务器
收到查询报文后,要么给出所要查询的IP地址,要么告诉本地域名服务器
下一步应向哪个权限域名服务器
查询。 - 最后,知道所要
解析的域名的IP地址
后,把这个结果返回
给发起查询的主机
。
下面举例说明域名解析的过程:
假定某客户机想获知域名为y.abc.com主机的IP地址,域名解析的过程(共使用8个UDP报文)如下:
- 1️⃣
客户机
向其本地域名服务器
发出DNS请求报文
。 - 2️⃣
本地域名服务器
收到请求后,查询本地缓存
,若没有该记录,则以DNS客户的身份向根域名服务器
发出解析请求。 - 3️⃣
根域名服务器
收到请求后,判断该域名属于.com域,将对应的顶级域名服务器
dns.com的IP地址返回给本地域名服务器
。 - 4️⃣
本地域名服务器
向顶级域名服务器dns.com
发出解析请求报文
。 - 5️⃣
顶级域名服务器dns.com
收到请求后,判断
该域名属于abc.com域
,因此将对应的授权域名服务器dns.abc.com
的IP地址返回给本地域名服务器
。 - 6️⃣
本地域名服务器
向授权域名服务器dns.abc.com
发起解析请求报文
。 - 7️⃣
授权域名服务器dns.abc.com
收到请求后,将查询结果
返回给本地域名服务器
。 - 8️⃣
本地域名服务器
将查询结果保存到本地缓存
,同时返回给客户机
。
- 为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了
高速缓存
。- 当一个DNS服务器接收到DNS查询结果时,它能将该DNS信息缓存在高速缓存中。这样,当另一个相同的域名查询到达该DNS服务器时,该服务器就能够直接提供所要求的IP地址,而不需要再去向其他DNS服务器询问。
- 因为
主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息
。