DNS 系统解析过程概述

DNS(Domain Name Servive,域名服务)是Internet/Intranet中最基础也是非常重要的一项服务,提供了网络访问中域名到IP地址的自动转换。我们知道,Inetrnet上的主机成千上万,并且还在随时不断增加,不可能由一个或几个DNS服务器能够实现这样的解析过程,传统主机表(hosts)方式更无法胜任,事实上DNS依靠一个分布式数据库系统对网络中主机域名进行解析,并及时地将新主机的信息传播给网络中的其它相关部分,因而给网络维护及扩充带来了极大的方便。  
       

--------------------------------------------------------------------------------

正文:    
         
                DNS 系统解析过程概述
  DNS(Domain Name Servive,域名服务)是Internet/Intranet中最基础也是非常重要的一项服务,提供了网络访问中域名到IP地址的自动转换。我们知道,Inetrnet上的主机成千上万,并且还在随时不断增加,不可能由一个或几个DNS服务器能够实现这样的解析过程,传统主机表(hosts)方式更无法胜任,事实上DNS依靠一个分布式数据库系统对网络中主机域名进行解析,并及时地将新主机的信息传播给网络中的其它相关部分,因而给网络维护及扩充带来了极大的方便。
  DNS提供的服务就是要将人们所熟悉的名字映射成IP地址。一般有两种机制来完成,一种是有主机表来完成,另一种是采用域名服务的守护进程(named , 或 in.namd)来实现。这两种方式都能实现域名与IP之间的互相映射。
目前的IP地址与域名由谁分配?Internet的最高层域名由Internet网络协会负责网络地址分配的委员会进行登记和管理,它还为Internet的每一台主机分配唯一的IP地址。全世界现有3个大的网络信息中心:
INTER NIC 负责美国及其它地区
RIPE-NIC 负责欧洲地区
APNIC 负责亚太地区

DNS 层次结构
DNS是一个很复杂的概念,在了解DNS结构之前,让我们先掌握一些有关DNS 的一些常用术语。
表1列出了常用的DNS术语。

术语 说明
域 代表网络一部分的逻辑实体或组织
域名 主机名的一部分,它代表包含这个主机的域。它可以和域交换使用
主机 网络上的一台计算机
节点 网络上的一台计算机
域名服务器 提供DNS服务的计算机,它将DNS名字转化为IP地址
解析 把一个DNS服务器转化为与其相映的IP地址的过程
解析器 从域名服务器中提取DNS信息的程序或库子程序
反向解析 将给出的IP地址转化为其相映的DNS名字
欺骗 使网络看上去好象具有不同的IP地址或域名的行为
表1 常用DNS术语
  好了,掌握了上面的一些术语以后,让我来介绍一下DNS的层次结构,以便能让大家更深刻的认识DNS的整个体系结构和了解DNS 系统的解析过程。 DNS实际上是一个分布式的数据库系统,它是有层次结构的系统,DNS并没有一张保存着所有的主机信息的主机表,相反,这些信息是存放在许多分布式的域名服务器中,这些域名服务器组成一个层次结构的系统,顶层是一个根域(root domain),它使用符号点号" . "来表示。其实,域的概念和我们地理上的行政区域管理的概念是类似地,一个国家行政机构包括中央政府,(就相当于根域)和各个省份的省政府(第一级域名),省政府之下又包括许多市政府(第二级域名),市政府之下包括许多县政府(第三级域名),等等依次类推,每一个下级子域都是上级域的子域。每个域都有自己一组的域名服务器,这些服务器中保存着当前域的主机信息和下级子域的域名服务器信息。例如根域服务器不必知道根域内所有主机的信息,它只要知道所有子域的域名服务器的地址即可。
图2表示了域名的层次结构:

图 2 DNS的 层次结构  
  在图2中包括了地理域和机构域两种类型,其中地理域是以中国为例说明的,机构域是以com举例说明的。如上图所示,www.china-pub.com 标明了Internet上的一个主机,com是一级域,china-pub是二级域,www,mail,dns都是主机名,用以标明主机的服务类型。这个例子就形象的说明了域名系统的层次结构和分层管理机制。
第一层域(即顶级域名)一般有两种类型,一种是地理域,另一种是机构域,地理域是通过地理区域来划分域名,例如中国的地理域名是CN,日本是JP,香港是HK,美国一般不使用地理域名;机构域是根据注册的机构类型来分类。
常用机构类的顶级域名为:
域名 机构的类型
.GOV 政府机构
.EDU 教育机构
.INT 国际组织(如北大西洋公约组织NATO)
.MIL 军事部门
.COM 商业机构
.NET 网络中心
.ORG 社会组织、专业协会
表3
  尽管机构名称不能告诉用户有关系统物理地点的情况,但大多数使用机构名称的系统都属于美国,不过现在有些域名(如.COM、.NET和.ORG)已可供全球申请使用。
其它机构类新型顶级域名:
域名 机构的类型
.FIRM 商业或公司
.STORE 提供购买商品的业务部门
.WEB 主要活动和WWW有关的实体
.ARTS 以文化性娱乐活动为主的活动
.REC 以消遣性娱乐活动为主的实体
.INFU 提供信息服务的实体
.NOM 有针对性的个人或人员的命名
表4
  (以上7个域名是Internet 国际特别委员会IAHC于1997年2月4日最新扩充的机构域名)
下面的表5中列举了一些普及地理类顶级域名:
域名 国家或地区 域名 国家或地区 域名 国家或地区 域名 国家或地区
.am 亚美尼亚 .aq 南极洲 .ar 阿根廷 .au 澳大利亚
.bb 巴巴多斯 .be 比利时 .bg 保加利亚 .ca 加拿大
.ch 瑞士 .cl 智利 .cn 中国 .cr 哥斯达黎加
.cy 塞浦路斯 .de 德国 .dk 丹麦 .ec 埃及
.eg 萨尔瓦多 .es 西班牙 .fi 芬兰 .gb 英国(官方)
.gr 希腊 .hk 香港 .hu 匈牙利 .ie 爱尔兰
.il 以色列 .in 印度 .ir 伊朗 .it 意大利
.jm 牙买加 .jp 日本 .kr 韩国 .lt 立陶宛
.lu 卢森保 .mo 澳门 .mx 墨西哥 .ni 尼加拉瓜
.nl 荷兰 .no 挪威 .nz 新西兰 .pe 贝卢
.ph 菲律宾 .pl 波兰 .pt 葡萄牙 .ru 俄国
.se 瑞典 .sg 新加坡 .si 斯洛文尼亚 .th 泰国
.tn 突尼斯 .tr 土耳其 .tw 台湾 .us 美国
.uk 英国(通用 .ve 委内瑞拉 .vn 越南 .zm 赞比亚
表5
DNS解析过程及原理
  在上面介绍了域的概念和域的层次结构之后,就可以进一步了解DNS的工作原理和过程了,DNS的工作原理及过程分下面几个步骤:
  第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
  第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
  第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
  第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
  第五步:重复第四步,直到找到正确的纪录。
  第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
  让我们举一个例子来详细说明解析域名的过程.假设我们的客户机如果想要访问站点:www.linejet.com , 此客户本地的域名服务器是dns.company.com , 一个根域名服务器是NS.INTER.NET , 所要访问的网站的域名服务器是dns.linejet.com,域名解析的过程如下所示:
 (1)客户机发出请求解析域名www.linejet.com的报文
 (2)本地的域名服务器收到请求后, 查询本地缓存, 假设没有该纪录, 则本地域名服务器dns.company.com则向根域名服务器NS.INTER.NET发出请求解析域名www.linejet.com
 (3)根域名服务器NS.INTER.NET收到请求后查询本地记录得到如下结果:linejet.com NS dns.linejet.com (表示linejet.com域中的域名服务器为:dns.linejet.com ), 同时给出dns.linejet.com的地址,并将结果返回给域名服务器dns.company.com。
 (4)域名服务器dns.company.com 收到回应后,再发出请求解析域名www.linejet.com的报文。
 (5)域名服务器 dns.linejet.com收到请求后,开始查询本地的记录,找到如下一条记录: www.linejet.com A 211.120.3.12 (表示linejet.com域中域名服务器dns.linejet.com的IP地址为:211.120.3.12),并将结果返回给客户本地域名服务器dns.company.com。
 (6)客户本地域名服务器将返回的结果保存到本地缓存,同时将结果返回给客户机。
这样就完成了一次域名解析过程,

小结
DNS是一个很复杂的概念,在我们动手搭建和配置DNS系统之前,一定要好好了解DNS 系统解析过程,这样才能不会一头雾水,只知道如何配置,却不知道为什么这样配置。

文章录入:gx120    责任编辑:gx120

(0)

相关推荐

  • DNS 系统解析过程概述

    DNS(Domain Name Servive,域名服务)是Internet/Intranet中最基础也是非常重要的一项服务,提供了网络访问中域名到IP地址的自动转换.我们知道,Inetrnet上的主机成千上万,并且还在随时不断增加,不可能由一个或几个DNS服务器能够实现这样的解析过程,传统主机表(hosts)方式更无法胜任,事实上DNS依靠一个分布式数据库系统对网络中主机域名进行解析,并及时地将新主机的信息传播给网络中的其它相关部分,因而给网络维护及扩充带来了极大的方便.          -

  • DNS原理及其解析过程剖析(图文)

    网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如"202.96.134.133"之类的IP地址,而不能认识域名.我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫"DNS服务器"的计算机自动把我们的域名"翻译"成了相应的IP地址,然后调出IP地址所对应的网页. 什么是DNS?    DNS( Domain Na

  • Mysql DNS反向解析导致连接超时过程分析(skip-name-resolve)

    MySQL数据库收到一个网络连接后,首先拿到对方的IP地址,然后对这个IP地址进行反向DNS解析从而得到这个IP地址对应的主机名.用主机名在权限系统里面进行权限判断.反向DNS解析是耗费时间的,有可能让用户感觉起来很慢.甚至有的时候,反向解析出来的主机名并没有指向这个IP地址,这时候就无法连接成功了. 可以在配置文件里面禁止MySQL进行反向DNS解析,只需在my.cnf的[mysqld]段落中加入如下行即可: skip-name-resolve (windows与linux下一样的) 设备在连

  • Java多态的全面系统解析

    目录 Java基础知识(多态) 多态 多态的定义和存在的必要条件 多态的定义: 多态存在的三个必要条件 多态的案例 多态的好处 多态的弊端 引用类型转换 1.引用类型转换是什么,为什么需要它? 2.向上转型(自动转换) 3.向下转型(强制转换) 4.向下转型的问题 5.转型的异常 6.instanceof关键字 总结 茫茫人海千千万万,感谢这一秒你看到这里.希望我的能对你的有所帮助!共勉! 愿你在未来的日子,保持热爱,奔赴山海! Java基础知识(多态) 多态 因为在程序运行时才确定具体的类,这

  • 正则表达式匹配解析过程探讨分析(正则表达式匹配原理)

    已经有多篇关于正则表达式介绍的文章,随着我们越来越多使用正则表达式,想对性能做优化.减少我们正则表达式书写匹配Bug.我们不得不进一步深入了解正则表达式执行过程了.下面我们一起学习,分析下正则表达式执行过程.我们会用regexbuddy测试工具分解执行过程,具体工具使用,可以看:正则表达式性能测试工具推荐.优化工具推荐(regexbuddy推荐).要了解正则表达式解析过程前,我们先来熟悉几个概念. 常见正则表达式引擎 引擎决定了正则表达式匹配方法及内部搜索过程,了解它至关重要的.目前主要流行引擎

  • SQL语句的各个关键字的解析过程详细总结

    由于最近需要做一些sql query性能提升的研究,因此研究了一下sql语句的解决过程.在园子里看了下,大家写了很多相关的文章,大家的侧重点各有不同.本文是我在看了各种资料后手机总结的,会详细的,一步一步的讲述一个sql语句的各个关键字的解析过程,欢迎大家互相学习. SQL语句的解析顺序 简单的说一个sql语句是按照如下的顺序解析的: 1. FROM FROM后面的表标识了这条语句要查询的数据源.和一些子句如,(1-J1)笛卡尔积,(1-J2)ON过滤,(1-J3)添加外部列,所要应用的对象.F

  • JAVA实现对阿里云DNS的解析管理

    目录 1.阿里云DNS的SDK依赖 2.第一个方法:创建SDK客户端实例 3.第二个方法:返回指定的记录ID(RecordId) 4.第三个方法:添加或修改指定的记录 5.第四个方法:删除指定的记录 6.完整代码 1.阿里云DNS的SDK依赖 <dependency> <groupId>com.aliyun</groupId> <artifactId>tea-openapi</artifactId> <version>0.0.19&l

  • MySQL的prepare使用及遇到bug解析过程

    目录 一.问题发现 二.问题调查过程 三.问题解决方案 四.问题总结 一.问题发现 在一次开发中使用 MySQL PREPARE 以后,从 prepare 直接取 name 赋值给 lex->prepared_stmt_name 然后给 EXECUTE 用,发现有一定概率找不到 prepare stmt 的 name,于是开始动手调查问题发生的原因. SQL语句示例: CREATE TABLE t1 (a INT, b VARCHAR(10)); PREPARE dbms_sql_stmt4 F

  • 详解MyBatis ResultSetHandler 结果集的解析过程

    目录 正文 ResultSetHandler#handleResultSets 第一部分:ResultSetWrapper 第二部分:验证rsw对象 第三部分:遍历rsw中的结果集 第四部分:处理ResultSets标签 第五部分:collapseSingleResultList 总结 正文 mybatis版本:3.5.12 mybatis通过Executor查询出结果后,通常返回的是一个List结构,再根据用户调用的API把List结构转为指定结构. 比如用户调用SqlSession#sele

  • Django缓存系统实现过程解析

    在动态网站中,用户每次请求一个页面,服务器都会执行以下操作:查询数据库,渲染模板,执行业务逻辑,最后生成用户可查看的页面. 这会消耗大量的资源,当访问用户量非常大时,就要考虑这个问题了. 缓存就是为了防止重复计算,把那些消耗了大量资源的结果保存起来,下次访问时就不用再次计算了.缓存的逻辑: given a URL, try finding that page in the cache if the page is in the cache: return the cached page else

随机推荐