2.dns系统 - wolai 笔记

1.DNS系统

域名系统(Domain Name System, DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(如www.BitHachi.com)转换为便于机器处理的IP地址
相对于IP地址,人们更喜欢使用具有特定含义的字符串来标识因特网上的计算机。
DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口。
从概念上可将DNS分为3部分: 层次域名空间、域名服务器和解析器

2.域名

因特网采用层次树状结构的命名方法。采用这种命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名(Domain Name)。
域(Domain)是名字空间中一个可被管理的划分。
域还可以划分为子域,而子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等。
在域名系统中,每个域分别由不同的组织进行管理。每个组织都可以将它的域再分成一定数目的子域,并将这些子域委托给其他组织去管理。
域名空间的树状结构:
每个域名都由标号序列组.成,而各标号之间用点(“.”)隔开。
  • 顶级域名
    • 国家顶级域名 cn,us,uk
    • 通用顶级域名 com,net,org,gov,int,aero,museum,travel
    • 基础结构域名/反向域名 arpa. 这种顶级域名只有一个,即arpa,用于反向域名解析,因此又称反向域名。反向域名解析与通常的正向域名解析相反,提供IP地址到域名的对应
  • 二级域名
    • 类别域名 ac,com,edu,gov,mil,net,org
    • 行政区域名,用于我国各省、自治区、直辖市
    • 自定义域名
  • 三级域名
  • 四级域名
关于域名中的标号有以下几点需要注意:
  1. 标号中的英文不区分大小写
  2. 标号中除连字符(-) 外不能使用其他的标点符号。
  3. 每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符。
  4. 级别最低的域名写在最左边,级别最高的顶级域名写在最右边。

3.域名服务器

因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型
域名到IP地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的(或有权限的)范围称为区(不以“域”为单位),各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有结点必须是能够连通的,每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
每个域名服务器不但能够进行一些域名到IP地址的解析,而且还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,能够知道到什么地方去找其他域名服务器。
DNS使用了大量的域名服务器,它们以层次方式组织。没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的DNS上。
采用分布式设计的DNS,是一个在因特网上实现分布式数据库的精彩范例。主要有4种类型的域名服务器。

3.1根域名服务器

根域名服务器最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址
根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。
因特网上有13个根域名服务器,尽管我们将这13个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。
需要注意的是,根域名服务器用来管辖顶级域(如.com), 通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询

3.2顶级域名服务器

这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名
收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)。

3.3授权域名服务器(权限域名服务器)

每台主机都必须在授权域名服务器处登记。为了更加可靠地工作,一台主机最好至少有两个授权域名服务器。
实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器
授权域名服务器总能将其管辖的主机名转换为该主机的IP地址。

3.4 本地域名服务器

本地域名服务器对域名系统非常重要。
每个因特网服务提供者(ISP), 或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。
当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。
事实上,我们在Windows系统中配置“本地连接”时,就需要填写DNS地址,这个地址就是本地DNS (域名服务器)的地址。

4.域名解析过程

域名解析是指把域名映射成为IP地址或把IP地址映射成域名的过程。前者称为正向解析,后者称为反向解析。
当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器
域名解析有两种方式:递归查询递归与迭代相结合的查询。

4.1递归查询

由于该方法给根域名服务造成的负载过大,所以在实际中几乎不使用。
  • 主机先是想本地域名服务器发送请求;
  • 如果查不到的话,本地域名服务器根域名服务器发送请求(找别人);
  • 如果还是查不到的话,根域名域名服务器向顶级域名服务器发送请求(找别人);
  • 如果还是查不到的话,顶级域名服务器权限域名服务器发送请求(找别人)
  • 可以看到每一次向下一个查询的服务器都变了,不是主机一个个去问,而是服务器自己一个个问下去

4.2迭代查询

常用递归与迭代相结合的查询方式如下图所示,该方式分为两个部分。
  • 主机先是想本地域名服务器发送请求;
  • 如果查不到的话,本地域名服务器就让主机去向根域名服务器发送请求(主机去找,本地域名给目标根域名服务器的IP地址);
  • 如果还是查不到的话,根域名域名服务器让主机去向对应的顶级域名服务器发送请求(主机去找,根域名给目标顶级域名服务器的IP地址);
  • 如果还是查不到的话,顶级域名服务器让主机去向权限域名服务器发送请求(主机去找,顶级域名给目标权限域名服务器的IP地址
  • 可以看到这里是主机一个个挨个问的地址

4.3高速缓存

为了减少多次查询同一个域名的资源浪费,本地域名服务器会存储最近使用的ip地址解析,下次再访问同一个域名就不需要这么多查询步骤了。
同时本地域名服务器还可以对顶级域名服务器,权限域名服务器的地址进行缓存,下一次即使是不知道的IP地址,查询也可以更快。
高速缓存为了保持正确性,需要定时更新



Comment