计算机网络 (18) 应用层-域名系统DNS

38 阅读6分钟

本文引用图片均来自 高军: 计算机网络

域名系统

通过前面文章的学习我们知道主机之间想要通信需要知道对方的IP地址,但是IP地址是一串数字并不易于记忆,因此人们发明了域名作为IP地址的助记符。但是,域名只是相对人类而言的,计算机需要的仍然是IP地址。为了将域名转换成计算机需要的IP地址,域名系统DNS(Domain Name System)应用而生

以打开网页为例,用户在浏览器中输入域名,主机首先查询本地的DNS高速缓存看是否有记录该域名对应的IP地址。如果没有,则向DNS服务器发送查询请求,DNS服务器查询数据库并返回相应的IP地址。主机从DNS服务器获得目的主机的IP地址后即可和目的主机进行通信

image.png

域名系统以层次树状结构形式组织,每个域名具有以下特点:

  1. 由若干个分量组成,分量之间以点号分隔代表不同级别的域名
  2. 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写
  3. 级别最低的域名写在最左边,级别最高的写在最右
  4. 完整的域名不超过255个字符

域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思。各级域名由其上一级的域名管理机构管理,顶级域名则由ICANN管理

image.png

顶级域名TLD(Top Level Domain)分为以下三类:

  1. 国家顶级域名:cn表示中国、us表示美国、uk表示英国等
  2. 通用顶级域名:最常见的通用顶级域名有7个,分别是com(公司企业)、net(网络服务机构)、org(非营利性组织)、int(国际组织)、edu(美国教育机构)、gov(美国政府部门)和mil(美国军事部门)
  3. 反向域(arpa):用于将IP地址转换为域名

在国家顶级域名下注册的二级域名由该国家自行确定,例如我国将二级域名分为以下两类:

  1. 类别域名:ac(科研机构)、com(工、商和金融等企业)、edu(教育机构)、gov(政府部门)、net(提供网络服务的机构)、mil(军事机构)和org(非营利性组织)
  2. 行政区域名:一共34个,适用于省、自治区和直辖市,例如bj(北京市)、sh(上海市)
image.png

显然,因特网上有数量众多的DNS服务器,DNS服务器可以划分为以下四类:

  1. 根域名服务器:根域名服务器是最高层次的域名服务器,每个根域名服务器都知道所有顶级域名服务器域名及其IP地址,因特网上共有13个不同IP地址的根域名服务器。尽管我们将13个根域名服务器中的每一个都视为单个服务器,但“每台服务器”实际上是由许多分布在世界各地的计算机构成的服务器集群。根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址
  2. 顶级域名服务器:它们负责管理在该顶级域名服务器注册的所有二级域名,当收到DNS查询请求时就给出相应的回答(可能是最后结果,也可能是下一级域名服务器的IP地址)
  3. 权限域名服务器:它们负责管理某个区的域名,每一个主机的域名都必须在某个权限域名服务器上注册,因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址
  4. 本地域名服务器:这类域名服务器不属于上述域名服务器的等级结构。当一个主机发出DNS请求报文时,这个报文首先被送往本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。本地域名服务器一般作为默认域名服务器,其IP地址需要配置在需要域名解析的主机中

域名解析

域名解析主要有递归查询迭代查询两种方式

递归查询:

如下例,主机向本地DNS服务器发起递归查询委托,想要知道y.abc.com的IP地址。本地DNS服务器收到递归查询委托后,向某个根DNS服务器发起递归查询委托。根DNS服务器向某个顶级DNS服务器发起递归查询委托,顶级DNS服务器则向某个权限DNS服务器发起递归查询委托。当从权限DNS服务器中查询到结果后,该结果一步步逆着查询链返回到用户主机

image.png

迭代查询:

如下例,主机向本地DNS服务器发起递归查询委托,想要知道y.abc.com的IP地址。本地DNS服务器收到递归查询委托后,向某个根DNS服务器发起迭代查询委托。根DNS服务器收到请求后则返回下次应查询的顶级DNS服务器的IP地址。本地DNS服务器接着向顶级DNS服务器发起迭代查询委托,顶级DNS服务器则返回下次应查询的权限DNS服务器的IP地址。本地DNS服务器接着向权限DNS服务器发起迭代查询委托,权限DNS服务器查询到结果后将其返回给本地DNS服务器,最终由本地DNS服务器将结果返回给用户主机

image.png

另外,为了提高查询效率、减轻根DNS服务器的压力以及减少网络中的DNS查询报文数量,域名服务器通常使用高速缓存将最近查询过的域名以及从何处获得域名映射信息等元素保存起来。当然,因为域名和IP地址都是可能发生变化的,所以记录的保存是有时效的(通常为2天),超过时效的记录会被删除

同理,用户主机中也有域名相关的高速缓存,缓存内容是从本地DNS服务器中获取的

参考文献