一、DNS系统

域名系统(Domain Name System),是因特网使用的命名系统,用来把人们方便记忆的主机名转换为机器方便处理的IP地址。

DNS协议属于应用层协议,一般是运行在UDP协议之上,使用53端口。

二、域名

因特网采用层次树状结构的命名方法。采用这种命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,就是域名(Domain Name)。

在域名系统中,每个域分别由不同的组织进行管理。每个组织都可以将它的域再分成一定数目的子域,并将这些子域委托给其他组织去管理。

域名空间的树状图:

 域名组成图:

 顶级域名(TOP Level Domain)大体分为三类:

1.国家顶级域名(nTLD)。国家和某些地区的域名,如“.cn”表示中国,“.us”表示美国,.uk”表示英国。

2.通用顶级域名(gTLD)。 常见的有“.com” (公司)、“.net” (网络服务机构)、“.org”(非营利性组织)和“.gov” (国家或政府部门)等。

3.新通用顶级域名(New Generic Top-level Domain,简写New GTLD)也叫新顶级域名、新顶域等。新顶级域名后缀是在传统域名后缀资源日趋枯竭的情况下开放注册的,首批新顶级域由ICANN于2012年批准并集中于2014开始面向全球开放注册。例如“.xin/.top/.xyz/.vip”等。

国家顶级域名下注册的二级域名由国家自己决定。

三、域名服务器

域名到IP地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的(或有权限的)范围称为区(不以“域”为单位),各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有结点必须是能够连通的,每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。

每个域名服务器不但能够进行一些域名到IP地址的解析,而且还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,能够知道到什么地方去找其他域名服务器。

DNS使用了大量的域名服务器,它们以层次方式组织。没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的DNS上。

采用分布式设计的DNS,是一个在因特网上实现分布式数据库的精彩范例。主要有4种类型的域名服务器。

1)根域名服务器
1.根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址。

2.根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。

3.因特网上有13个根域名服务器,尽管将这13个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。

4.需要注意的是,根域名服务器用来管辖顶级域(如.com), 通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。

2)顶级域名服务器
1.这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。

2.收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)。

3)授权域名服务器
1.每台主机都必须在授权域名服务器处登记。为了更加可靠的工作,一台主机最好至少有两个授权域名服务器。

2.实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。

3.授权域名服务器总能将其管辖的主机名转换为该主机的IP地址。

4)本地域名服务器
1.本地域名服务器对域名系统非常重要。

2.每个因特网服务提供者(ISP)或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。

3.当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。

4.事实上,在Windows系统中配置“本地连接”时,就需要填写DNS地址,这个地址就是本地DNS (域名服务器)的地址。

四、域名解析过程

1.当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报的形式发往本地域名服务器。

2.域名解析有两种方式:递归查询和迭代查询相结合的查询。

递归查询和迭代查询的区别

DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代。
DNS递归名称解析: 在DNS递归名称解析中,当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以“本地名称服务器”为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可。

DNS迭代名称解析:(或者叫“迭代查询”)的所有查询工作全部是DNS客户端自己进行(以“DNS客户端”自己为中心)。在条件之一满足时就会采用迭代名称解析方式:

  • 在查询本地名称服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报头部的RD字段没有置1。相当于说“你都没有主动要求我为你进行递归查询,我当然不会为你工作了”。
  • 客户端在DNS请求报文中申请使用的是递归查询(也就是RD字段置1了),但在所配置的本地名称服务器上是禁用递归查询(DNS服务器一般默认支持递归查询的),即在应答DNS报文头部的RA字段置0。

递归查询

由于递归查询给根域名服务器的负载过大,所以一般不使用。

递归查询如图:

递归查询与迭代查询结合

递归与迭代相结合查询如图:

主机向本地域名服务器的查询是递归查询

1.也就是说,如果本地主机所询问的本地域名服务器不知道被查询域名的IP 地址,那本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。

2.在这种情况下,本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是在其他几个域名服务器之间进行的[见图a中的步骤③~⑥]。

3.在步骤⑦中,本地域名服务器从根域名服务器得到了所需的IP地址,最后在步骤⑧中,本地域名服务器把查询结果告诉主机m.xyz.com。

本地域名服务器向根域名服务器的查询是迭代查询

1.当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪个顶级域名服务器进行查询”。

2.然后让本地域名服务器向这个顶级域名服务器进行后续的查询。

3.同样,顶级域名服务器收到查询报文后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应向哪个权限域名服务器查询。

4.最后,知道所要解析的域名的IP地址后,把这个结果返回给发起查询的主机。

一次完整的DNS域名解析过程

假定某客户机想获知域名为y.abc.com主机的IP地址,域名解析的过程(共使用8个UDP报文)如下:

①客户机向其本地域名服务器发出DNS请求报文

②本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器发出解析请求

③根域名服务器收到请求后,判断该域名属于.com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器
④本地域名服务器向顶级域名服务器dns.com发出解析请求报文。

⑤顶级域名服务器dns.com收到请求后,判断该域名属于abc.com域,因此将对应的授权域名服务器dns.abc.com的IP地址返回给本地域名服务器

⑥本地域名服务器向授权域名服务器dns.abc.com发起解析请求报文

⑦授权域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器

⑧本地域名服务器将查询结果保存到本地缓存,同时返回给客户机

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。