详解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地址返给本地域名服务器。
  • 本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
相关推荐
chlk12314 小时前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑15 小时前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件15 小时前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
碳基沙盒16 小时前
OpenClaw 多 Agent 配置实战指南
运维
深紫色的三北六号1 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash1 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI2 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行2 天前
Linux和window共享文件夹
linux
Sinclair2 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
木心月转码ing3 天前
WSL+Cpp开发环境配置
linux