1. DNS概述
域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。

2. 因特网的域名结构
由于因特网用户众多,所以命名时,采用层次树状的域名结构,每一个连在因特网上的主机,都会有一个唯一的层次结构名字,即域名。
从语法上讲,每一个域名都是有标号(label)序列组成,而各标号之间用点(小数点)隔开。如下例子所示:

这是中央电视台用于手法电子邮件的计算机的域名,它由三个标号组成,其中标号com是顶级域名,标号cctv是二级域名,标号mail是三级域名。

DNS规定,域名中的标号都有英文和数字组成,每一个标号不超过63个字符(为了记忆方便,一般不会超过12个字符),也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的字符写在最右边。由多个标号组成的完整域名总共不超过255个字符。DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找域名的机制。

现在顶级域名TLD(Top Level Domain)已有265个,分为三大类:
(1)国家顶级域名nTLD:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。
(2)通用顶级域名gTLD:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
(3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。

3. 域名服务器
域名服务器根据需要划分为四个层级:

  1. 根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。所以根域名服务器是最重要的域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。需要注意的是,在很多情况下,根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。

  2. 顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。

  3. 权限域名服务器:负责一个“区”的域名服务器。

  4. 本地域名服务器:本地服务器不属于下图的域名服务器的层次结构,但是它对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。

    4. 一套完整的DNS域名解析过程

    • 主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
    • 本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。

下图给出了这两种查询的差别:

下面举一个例子演示整个查询过程:

    假定域名为m.xyz.com的主机想知道另一个主机y.abc.com的IP地址。例如,主机m.xyz.com打算发送邮件给y.abc.com。这时就必须知道主机y.abc.com的IP地址。下面是上图a的几个查询步骤:1、主机m.abc.com先向本地服务器dns.xyz.com进行递归查询。2、本地服务器采用迭代查询。它先向一个根域名服务器查询。3、根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。4、本地域名服务器向顶级域名服务器dns.com进行查询。5、顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。6、本地域名服务器向权限域名服务器dns.abc.com进行查询。7、权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。8、本地域名服务器最后把查询结果告诉m.xyz.com。整个查询过程共用到了8个UDP报文。

为了提高DNS查询效率,并减轻服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

例如,在上面的查询过程中,如果在m.xyz.com的主机上不久前已经有用户查询过y.abc.com的IP地址,那么本地域名服务器就不必向根域名服务器重新查询y.abc.com的IP地址,而是直接把告诉缓存中存放的上次查询结果(即y.abc.com的IP地址)告诉用户

DNS域名解析过程详解相关推荐

  1. DNS解析过程详解【转】

    转自:http://blog.chinaunix.net/uid-28216282-id-3757849.html 先说一下DNS的几个基本概念: 一. 根域 就是所谓的".",其 ...

  2. DNS解析过程详解[转载]

    先说一下DNS的几个基本概念: 一. 根域 就是所谓的".",其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里 ...

  3. DNS域名解析服务详解

    目录 一,DNS域名解析基础 1,DNS系统的作用 2,DNS系统类型 3,DNS查询类型及原理 二,正向解析 1,各种资源记录 2,安装配置方法 三,反向解析 四,主从复制 五,分离解析 总结 一, ...

  4. DNS 域名解析服务器详解以及相关实验

    目录 一, 域名解析服务器的介绍 1, 因特网的域名结构 2, 域名服务器的类型划分 二,DNS 域名解析的过程 三,DNS 解析方式 四,搭建 DNS 服务器 1,使用命令yum install b ...

  5. DNS 解析过程详解

    1. DNS解析过程 1).在浏览器中输入www.magedu.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析. 2).如果 ...

  6. 计算机网络DNS域名解析协议详解

    DNS域名解析协议 由于采用了统一的IP地址,使得网络上任意两台主机的应用程序都可以很当变使用IP地址进行通信.但IP地址是一个具有32比特长的二进制数,即便使用4个十进制数来表示,对于一般用户来说, ...

  7. 虚拟机2012搭建DNS服务器,Windows Server2012 安装配置DNS服务器方法详解

    Windows Server2012 安装配置DNS服务器方法详解 在云服务器 Windows Server2012 上安装配置DNS服务器方法,安装与配置非常简单,在这里写个完整教程方便大家查询 一 ...

  8. JetBrains DataGrip工具配置数据库过程详解

    JetBrains DataGrip工具配置数据库过程详解 DataGrip是一款数据库管理客户端工具,方便连接到数据库服务器,执行sql.创建表.创建索引以及导出数据等. DataGrip 是 Je ...

  9. HTTP访问一个网站的过程详解

    访问一个网站的过程详解 例如访问:http://www.baidu.com HTTP请求的准备 浏览器会将www.baidu.com这个域名发送给DNS服务器,让它解析成IP地址.由于HTTP是基于T ...

最新文章

  1. 内核-syn-ack RTO修改
  2. webpack打包html里面img后src为“[object Module]”问题
  3. http从发出请求到接收响应的旅行
  4. 如何获取客户端的真实IP
  5. js byte数组_这么骚的 js 代码,不怕被揍么
  6. 穿戴式设备的用户体验设计-郝华奇
  7. 严格地说来的zhajinhuagame
  8. 面试问到springmvc不会怎么办?看这篇就够了,springmvc面试题(共22题,含答案)
  9. .NET Core,.NET Framework和Xamarin有什么区别?
  10. c语言求浮点数矩阵的逆程序,逆矩阵求程序!!!谢谢
  11. UE4之UMG用户界面
  12. 斐讯N1纯净精简/夏杰语音/支持投屏-线刷固件及教程202208
  13. 设计模式:简单工厂模式(C++实现)
  14. Andre Weil的一生
  15. Python的字符串方法join(插入间隔符)
  16. Retrofit 大体框架
  17. 无法联网的情况下,dbeaver离线安装数据库驱动-clickhouse
  18. 【Python • 项目实战】pytesseract+pyqt实现图片识别软件小项目——(一)创建项目和画界面
  19. 云诊所管理系统 云诊所管理软件 诊所管理软件 诊所管理系统
  20. 红米 12C earth Fastboot 线刷包 root TWRP 刷入magisk recovery卡刷

热门文章

  1. redhat6.5进入救援
  2. DBeaver:Windows下数据库可视化工具(超详细)
  3. IntelliJ IDEA终于支持对Redis 的可视化窗口操作了,真香!
  4. 【学习笔记】AD智能PDF导出(装配文件)
  5. Matlab2017b C++编译器配置
  6. Matlab一直提示激活,激活后仍打不开重复提示激活
  7. eclipse中写html文件路径,eclipse动态web项目文件位置
  8. 2022年计算机软件水平考试多媒体应用设计师(中级)练习题及答案
  9. OpManager邮件服务:使用qq邮箱发送邮件
  10. 用c++模拟直线插补和圆弧插补