详解DNS工作原理及实例分析

  1. DNS概述

互联网上的主机能够互相识别、访问,通过分配IP地址的方式进行的。全球主机数量众多,人们要记住像202.12.23.203这样的IP地址,不仅记不住,而且容易出错,于是,人们采用域名的形式,如网易的ip地址为202.12.23.205,对应的域名为www.163.com,这样的域名既有意义,又便于记忆,如人们使用浏览器,在地址栏中输入主机名www.163.com,很容易浏览到网站内容。最早的域名与IP地址的对应关系记录在host文件中,通过软件进行两者的转换,但随着互联网的发展,加入到互联网的主机越来越多,实现ip与域名的转换需要新的策略方案,于是引入了域名系统DNS。

2. 主要概念

(1)DNS域名空间

DNS全称为Domain Name System,整个DNS域名系统由4个部分组成,即根域、顶级域、二级域和子域。如图所示。

从上面示意图可以看出,整个域名空间系统像一个倒置的树,最顶端为根域,也称.域,根域下面为顶级域,通常由2或3个字母的名称,用于表示国家或组织单位类型。表1是基本的"顶级域"类型及适用范围。

表1 "顶级域"类型及适用范围

|------|----------------------------|
| 类型 | 说明 |
| Arpa | 为ARPA所拥有 |
| Com | 用于一般的商业公司 |
| Edu | 用于教育单位及学校 |
| Gov | 用于政府机构 |
| Int | 保留给国际性用途 |
| Mil | 用于军事部门 |
| Net | 用于提供大范围Internet或电话语音服务的ISP |
| Org | 用于非商业的非营利组织 |

顶级域之下是第二层域,用于个人或组织注册的名称,因此没有特定的长度,但必须位于指定类型的顶级域之下,如qingdao.com。子域是由已注册的第二层域名衍生而来,可以增加组织中的DNS树状目录,并且将它们按部门或地理位置命名,如kfq.qingdao.com。主机名称则代表特定主机在DNS名称空间中的名称,而最左边的部分常可以来识别网络主机的功能,如www.kfq.qingdao.com,其中www是指主机名,而.kfq.qingdao.com是域名部分,有人习惯将www.kfq.qingdao.com称作域名,实际上是完整的主机名。

(2)Primary(Master)DNS

在域中负责名称解析的主名称服务器,每个客户端至少要指定一台此类型的服务器的地址。

(3)资源记录

表示在DNS服务器中,实际记录的DNS域名的对应信息,这些信息又细分为多种类型,都可供在名称空间中注册或解析时使用。

(4)区域(Zone)

区域是DNS中实际的管理单位,在每个区域中包含独立的数据库内容,以提供客户端的名称解析。区域与域是两个不同的概念,有时一个域包含多个区域。

(5)正向解析(Forwarding)

将主机名称(FQDN-完全合格的域名)解析为IP地址的过程,例如解析kfq.qingdao.com的名称,域名服务器依次解析".com"、"qingdao"、"kfq",最后得到IP的地址,并返回给客户端。

(6)反向解析(Resersing)

与正向解析相反,反向解析是将IP地址解析为主机名称的过程,同时以名为"arpa.in-addr"的域作为解析时的起始域。

3.域名的工作原理

DNS的工作原理及过程分下面几个步骤:

第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。

第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。

第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域) 的主域名服务器的地址。

第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果存在该纪录,则返还查询结果给本地域名服务器。

第五步:如果没有该纪录,则返回相关的下级的域名服务器的地址。

第六步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存。

第七步:域名服务器将查询到的IP地址返回到本地域名服务器中。

第八步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

整个域名解析过程如图所示。

4.实例

现以具体实例进一步说明Internet域名解析详细过程,各主机的IP地址及域名配置如下:

客户机: 192.168.1.10

本地域名服务器:221.168.12.1

根域服务器:

顶级域名服务器:202.172.16.3 域名:.com

域名服务器: 233.145.1.4 域名:zhu.com

主机 213.144.2.3 域名:www.zhu.com

要求:客户机查询www.zhu.com主机的IP地址。

查询步骤如下:

  • 客户机首先根据本机网络配置中的dns地址221.168.12.1,向本地域名服务器提出域名解析,要求解析www.zhu.com的IP地址。
  • 本地域名服务器从本地缓存中并没有查询到www.zhu.com的IP地址,但本地域名服务器主配置文件中包含根域的信息,请求从根域服务器中查询。
  • 显然,根域服务器中A记录没有www.zhu.com,但有下一级域名服务器(顶级域名服务器)com的IP地址202.172.16.3,因此将com的IP地址返还给本地域名服务器。
  • 本地域名服务器向顶级域名服务器com查询www.zhu.com的IP地址。
  • 顶级域名服务器com查询不到www.zhu.com的IP地址,但可以查询到下一级zhu.com域名服务器的IP地址233.145.1.4,并将查询结果返还给本地域名服务器。
  • 本地域名服务器再次向zhu.com域名服务器查询www.zhu.com的IP地址。
  • zhu.com域名服务器A记录中则有www.zhu.com的IP地址213.144.2.3,因此,将该IP地址返给本地域名服务器。
  • 本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
相关推荐
人类群星闪耀时29 分钟前
大模型技术优化负载均衡:AI驱动的智能化运维
运维·人工智能·负载均衡
新手上路狂踩坑42 分钟前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
新时代农民工--小明1 小时前
前端自动化部署更新,自动化打包部署
运维·前端·自动化
一个不秃头的 程序员2 小时前
服务器上加入SFTP------(小白篇 1)
运维·服务器
fnd_LN2 小时前
Linux文件目录 --- 复制命令CP、递归复制目录、软连接、硬链接
linux·运维·服务器
MorleyOlsen2 小时前
【Trick】解决服务器cuda报错——RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
运维·服务器·深度学习
周周的奇妙编程2 小时前
基于鲲鹏服务器的打砖块小游戏部署
运维·服务器
OopspoO2 小时前
Linux查看键鼠输入
linux
大熊程序猿2 小时前
airflow docker 安装
运维·docker·容器
从后端到QT2 小时前
boost asio 异步服务器
服务器·网络·tcp/ip