初步了解域名系统—DNS

494 阅读4分钟

一、域名系统的概念

域名系统(英语:Domain Name System,缩写:DNS)是互联网使用的一套命名系统,用来将便于人们使用和记忆的字符转换为IP地址。 DNS就相当于一个电话簿,通过查找电话簿我们可以得到域名对应的IP地址。

二、域名结构

1.1 域名空间划分

互联网域名采用层次树状结构的命名方法,采用这种命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的名字,即域名。这里的“域”就是一个命名空间的划分,因为是树状结构,所以域名结构最顶部有一个根也可以叫根域,它的域名就是一个点(.),根域名下划分了顶级域名空间,顶级域可以继续划分子域,子域还可以继续划分子域的子域。

微信截图_20200611232326.png

1.2 域名语法规则

从语法上讲,每个域名都由标号(label)序列组成,而各标号之间用点分隔开,例如下面的域名

微信截图_20200611224525.png
该域名由三个标号组成,其中

  • com 是顶级域名
  • cctv 是二级域名
  • mail 是三级域名

语法规范:

  • 每一个标号不超过63个字符
  • 标号不区分大小写字母
  • 标号中除了连字符(-)外不能使用其它标点符号
  • 级别最低的域名写在最左边,级别最高的顶级域名写在最右边
  • 由多个标号组成的完整域名总共不能超过255个字符

三、域名服务器

3.1 域名服务器分类

上面讲述的是域名系统的抽象概念,具体实现域名系统则需要使用分布在各地的域名服务器,域名服务器一共可以分为四类

  • 根域名服务器
    • 根域名服务器是层级最高的服务器,它记录了各个顶级域名的IP地址,它会引导解析请求到对应的顶级域名服务器
  • 顶级域名服务器
    • 这些服务器负责管理该顶级域名下的所有二级域名,当收到DNS查询请求时,会给出相应的回答,可能是最终结果,也可能是下一步应该找的域名服务器的IP地址
  • 权限域名服务器
    • 二级和二级以下的域名服务器都可以称为权限域名服务器,因为拥有二级和二级以下域名的团体或个人,可以根据自身需求来设置域名的访问权限。

微信截图_20200612134342.png

  • 本地域名服务器
    • 上面三类对应了域名系统树形结构的每个层级,本地域名服务器则相当于用户主机与上面三类域名服务器器的中间联系人,主机的DNS请求会先发送给本地域名服务器,本地域名服务器向上面三类服务器询问并最终返回查询结果
    • 本地域名服务器一般由网络运营商提供,其它组织或个人也可以单独架设本地域名服务器,一般我们的路由器中也会自带本地域名服务器

3.2 DNS高速缓存

  • 为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。
  • 当一个DNS服务器接收到DNS查询结果时,它能将该DNS信息缓存在高速缓存中。这样,当另一个相同的域名查询到达该DNS服务器时,该服务器就能够直接提供所要求的IP地址,而不需要再去向其他DNS服务器询问。
  • 因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息。

四、一个完整的DNS解析

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

  1. 客户机向其本地域名服务器发出DNS请求。
  2. 本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器查询
  3. 根域名服务器查询告诉本地域名服务器,下次应该查询顶级域名服务器的IP地址
  4. 本地域名服务器向顶级域名服务器进行查询
  5. 顶级域名服务器告诉本地域名服务器,下次查询的权限域名服务器IP地址
  6. 本地域名服务器向权限域名服务器进行查询
  7. 权限域名服务器告诉本地域名服务器,所查询的主机IP地址
  8. 本地域名服务器最后将结果缓存并把查询结果告诉客户机

微信截图_20200612164037.png

五、参考资料