`
Joson_Coney
  • 浏览: 57203 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【转】DNS协议及应用

 
阅读更多

(转自http://jwx.zgz.cn/cl/7.41.htm)

7.4.1 DNS协议及应用
 
 
    DNS属于应用层的协议,DNS提供了将人类易于理解的主机名或域名转换为计算机或网络可识别的数字地址的机制,从而使得互连网的广泛应用成为可能。

    一、 DNS涉及的基本概念
    (1)域名及顶级域
    1)域名
    域名(Domain Name)通常是用户所在的主机名。域名格式是由若干部分组成,每个部分又称子域名,它们之间用“.”分开,每个部分最少由两个 字母或数字组成。城名通常按分层结构来构造,每个子域名都有其特定的含义。从右到左,子域名分别表示不同的国家或地区的名称(只有美国可以省略表示国家的 顶级域名)、组织类型、组织名称、分组织名称和计算机名称等,如www.example.com既是一个域名的典型例子。
    2)域名地址的最后一部分子域名称为高层域名(或顶级域名)
    它大致上可以分成两类:一类是组织性顶级域名;另一类是地理性顶级域名。
    ① 组织性顶级域名的出发点是为了说明拥有并对那些Internet主机负有责任的组织的类型。    表7-36给出部分组织的分类及它们所对应的组织性顶级域名。
 

【转】DNS协议及应用

表7-36 组织性顶级域名

????② 组织性域名除了国际性组织域名外,其它类型的组织在Internet诞生时就已存在了,但随着Internet的日益国际化,这种组织性顶级域名已难以满足需求了,于是便产生一种新的地理性顶级域名。地理性项级域名用两个字母的缩写形式来完全地表示某个国家和地区。
    (2)域名系统的构成
    Internet中的域名地址与IP地址是等价的,它们之间通过域名系统DNS进行映射变换。实际上,DNS系统是一种分布式地址信息数据库系 统,采用客户机/服务器模式,服务器中包含整个数据库的某部分信息,并供客户查询。DNS允许局部控制整个数据库的某些部分,但数据库的每一部分都可通过 全网查询得到。
    网络上的每台主机都有域名,指向主机相关信息,像IP地址等。主机也可以有一个或多个域的别名,它只是简单地从一个域名(别名)指向另一个域名 (正式域名)。DNS采用层次结构的优点:各个组织在它们的内部可以自由地选择域名,只要保证组织内的惟一性即可,而不必担心与其它组织内的域名相冲突。
    域名系统采用的是客户机/服务器模式,由三部分构成:域名数据库、域名服务器和地址解析器。
    各自功能如下:
    • 地址解析器是客户方,负责查询域名服务器、解释从服务器返回来的应答、将信息返回给请求方等工作。
    • 域名服务器(Domain Name Server)是服务器方,存储并管理着所管辖区域的域名数据库,负责接收来自于地址解析器的请求,按照请求类型,进行递归与非递归查询。同时将查询结果返回给地址解析器(网络中的每台主机既可作为客户方,也可作为服务器方)。
    • 域名数据库
    域名数据库是一个大型的分布在整个网络上的分布式数据库,存储了按层次管理的相关的数据,该层次结构可理解为一棵倒放的树(见图10-2),树中 的每个结点均代表一个域,并存储着与该域相关的区域和资源记录(RRs),以供域名服务器查询使用。域名系统的构成如图7-37所示。
 

【转】DNS协议及应用

图7-37 DNS结构

????(3)资源记录
    在一个域名服务器的配置文件里包含若干个资源记录,以帮助地址解析器进行地址解析。配置文件中资源记录所含的信息见表7-38资源记录示例,表中有关记录的内容及意义参照有关DNS报文格式进行解读。
 

【转】DNS协议及应用

表7-38配置文件中资源记录示例

????(4)域名数据的分类
    域名数据分为两类数据:授权数据和缓冲数据。
    1)授权数据
    授权数据是经过授权的数据,该数据来自于负责存储该类数据的域名服务器,授权数据是最近得到的新数据,因而被认为是正确数据。该类数据使用价值 高,但为了获得授权数据其时间花费的代价也高。通常主机在发出地址解析请求时要在报文头中要指出是否需要授权数据(见图10-30报文头格式)。
    2)缓冲数据
    缓冲数据是早先请求或交互操作的应答数据,被主机存储在本地缓冲区内。这类数据与授权数据相比,使用价值略低一些,但时间花费的代价低。通常,在互联网稳定状态下,缓冲数据在某种程度上也是很有用的。
    (5)域名区域
    如果整个网络中只有一台域名服务器且其中存储了所有的DNS的信息,那么域名转换处理就简单的多了,因为网络中任意一个主机对域名查询的请求均发 向这惟一的一台域名服务器,它负责进行查询处理并将结果反馈给发出查询的主机即可。但是这种解决方案无论从数据的存储量还是从数据的传输速度要求都无法适 应不断变化的网络及用户的需求。为了满足变化的网络及庞大数据的存储量还是从数据的传输速度,DNS采用了一种树形结构对域名数据库进行组织和管理,树中 的每一个节点代表域名系统的域。域可以进一步划分成子域,每个域都有一个域名并由不同的组织管理,并定义了它在数据库中的位置。我们已经知道,在DNS 中,一个完整的域名是从该域向上直到根的所有标记组成的字符串,标记之间要用“.”分隔开。
    1)域名区域的定义
    为了便于对树中各节点代表域名信息进行有效的管理,就引出了域名区域的概念。域名区域是指一个域名服务器负责管理的命名空间的一部分。域名服务器负责维护自己管理区域的授权数据。域名区域构成见图10-2。
    域名区域是由资源记录中的一组授权数据定义的。其内容有:
    • 域名区域中所有节点的资源记录。
    • 域名区域中顶级节点的信息。如在图7-39中,Exam2.com区域的顶级节点是Exam2.com,Exam2.com节点可保存管理该区域所有节点的信息。
    • 委托子区域信息(被委托给本区域中其它子区域管理的区域)。
 

【转】DNS协议及应用
图7-39 DNS区域和子区域示意图

????2)利用域名区域信息进行域名地址解析
    当某个主机请求获得域名payroll.h2.Exam2.com的IP地址时,其地址解析程序首先从树的根节点获得域.com 的域名信息,然后从.com的域名服务器获得其管辖下的子区域Exam2.com的域名信息,这样逐级向下进行查询,直到到达payroll.h2.Exam2.com子区域的域名服务器,并从中获得其相应的IP地址,并反馈给地址解析程序。
    (6)递归查询与非递归查询
    综上所述,一个单一的域名服务器无法对每一个域名查询进行完整的回答,但是它可以对查询路径作出准确的响应。即,当一个域名服务器存储了一个域名 查询所请求域的所有授权信息,它可直接给出需要的查询结果,否则,它必须给出具有所需信息的最近的域名服务器,以便继续查询。所谓最近的域名服务器一般是 图7-39所示的区域树中父节点的域名服务器,一旦查询到具有目标域名信息的域名服务器,该域名服务器自动将目标地址信息发送到请求方。否则该域名服务器 继续向请求方推荐另一个更接近目标的域名服务器,上述过程一直持续到请求方得到正确的结果或在使用授权信息访问某个域名服务器时出现错误为止。这种查询过 程可能会反复多次。
    1) 递归查询
    所谓递归查询是指接收请求的第一个域名服务器必须自始至终对请求进行处理,或向其它域名服务器进行请求且最终获得授权数据,并对请求进行应答。采用递归查询时,当所请求的域名信息在自身缓冲区时,域名服务器直接返回缓冲数据。此时递归查询请求标志无效(见DNS报头介绍)。有关递归查询见图7-40所示。
    2)非递归查询
    所谓非递归查询是指接收请求的第一个域名服务器可以返回可靠数据(本身有时),也可以返回指向其它服务器的指针(相当于将查询的接力棒传给了最接近的域名服务器)。递归查询与非递归查询的区别可从图7-40看出。
    主机的地址解析程序在查询时可以指定是否用递归还是非递归查询方式。非递归查询方式与递归查询方式相比响应速度快。
    二、DNS的报文格式
    DNS报文由报头和正文段构成,DNS有四类正文段:查询段、应答段、授权段和附加段。其具体构成见7-41所示。
 

【转】DNS协议及应用

图7-41 DNS报文结构

????    其中正文段中的查询段用于主机向域名服务器发出地址解析请求,应答段、授权段、附加段用于域名服务器向主机返回地址解析结果。DNS报文头和正文段的格式具体介绍如下。
    (1) DNS报文报头格式
    DNS报文报头格式如图7-42所示。
 

【转】DNS协议及应用

7-42 DNS报头格式

????各个字段意义简述如下:
    • ID:这是由生成DNS查询的程序指定的16位的标志符。该标志符也被随后的应答报文所用,申请者利用这个标志将应答和原来的请求对应起来。
    • QR:该字段占1位,用以指明DNS报文是请求(0)还是应答(1)。
    • OPCODE:该字段占4位,用于指定查询的类型。值为0表示标准查询,值为1表示逆向查询,值为2表示查询服务器状态,值为3保留,值为4表示通知,值为5表示更新报文,值6~15的留为新增操作用。
    • AA:该字段占1位,仅当应答时才设置。值为1,即意味着正应答的域名服务器是所查询域名的管理机构或者说是被授权的域名服务器。
    • TC:该字段占1位,代表截断标志。如果报文长度比传输通道所允许的长而被分段,该位被设为1。
    • RD:该字段占1位,是可选项,表示要求递归与否。如果为1,即意味 DNS解释器要求DNS服务器使用递归查询。
    • RA:该字段占1位,代表正在应答的域名服务器可以执行递归查询,该字段与查询段无关。
    • Z:该字段占3位,保留字段,其值在查询和应答时必须为0。
    • RCODE:该字段占4位,该字段仅在DNS应答时才设置。用以指明是否发生了错误。
    允许取值范围及意义如下:
    0:无错误情况,DNS应答表现为无错误。
    1:格式错误,DNS服务器不能解释应答。
    2:严重失败,因为名字服务器上发生了一个错误,DNS服务器不能处理查询。
    3:名字错误,如果DNS应答来自于授权的域名服务器,意味着DNS请求中提到的名字不存在。
    4:没有实现。DNS服务器不支持这种DNS请求报文。
    5:拒绝,由于安全或策略上的设置问题,DNS名字服务器拒绝处理请求。
    6 ~15 :留为后用。
    • QDCOUNT:该字段占16位,指明DNS查询段中的查询问题的数量。
    • ANCOUNT:该字段占16位,指明DNS应答段中返回的资源记录的数量,在查询段中该值为0。
    • NSCOUNT:该字段占16位,指明DNS应答段中所包括的授权域名服务器的资源记录的数量,在查询段中该值为0。
    • ARCOUNT:该字段占16位,指明附加段里所含资源记录的数量,在查询段中该值为0。
    (2)DNS正文段
    在DNS报文中,其正文段封装在图7-42所示的DNS报文头内。DNS有四类正文段:查询段、应答段、授权段和附加段。
    1)查询段的格式
    图7-43给出了查询段的格式。各字段意义为:
    • QNAME:该字段是可变长字段,其中包含一个被请求的域名,用一系列标签表示,每一个标签由一个八进制后面跟着一个表示长度的八进制数组成。
    • QTYPE: 该字段占16位,指定查询的资源类型(Type),该字段将一个类型值与一条指定的资源记录相匹配(有些通用的QTYPE值可以和与多条资源记录相匹 配),其值可以是A(请求主机IP地址)、NS(请求授权域名服务器)或CNAME(请求返回规范名称,或者是某主机使用的与别名对应的真实名称)。
    • QCLASS: 该字段占16位,指定查询的类别(Class),如Inet用以表示互联网和IP地址查询。
 

【转】DNS协议及应用

图7-43 DNS报文中查询段的格式

????2)应答段、授权段、附加段的格式
    查询段是主机向域名服务器发出的将域名转换为IP地址的请求报文,域名服务器按照主机查询类型,经过查询资源记录数据库后返回含有资源记录的应答 段、授权段或附加段,资源记录告诉主机所查询的信息。应答段、授权段、附加段具有相同的格式,其格式如图7-44所示。
    各字段意义介绍如下:
    • NAME:该字段是可变长字段,资源记录对应的域名(与主机发出的查询段中QNAME相同)。
    • TYPE:占16位,该字段与查询段中的QTYPE相同。
    • CLASS:占16位,该字段与查询段中的QCLASS相同。
    • TTL:占32位,该字段表示资源记录的生命周期(以秒为单位),一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间。
    • RDLENTH:占16位,该字段表示资源数据的长度(以字节为单位)。
    • RDATA:该字段是可变长字段,表示按查询段要求返回的相关资源记录的数据。其TYPE值是A,则返回4个字节的主机IP地址,如果 TYPE值是NS,则返回授权域名服务器的域名,如果TYPE值是CNAME,则返回规范名称,或者是该主机使用的与别名对应的真实名称)。
 

【转】DNS协议及应用
图7-44DNS应答段、授权段或附加段的格式

????三、DNS的工作过程及示例
    (1)DNS的工作过程
    域名系统是一个分布式系统,其管理和控制也是分布式的。一个用户A在查找另一用户B的域名时,域名系统的工作过程如图7-45所示。
 

【转】DNS协议及应用
图7-45 DNS基本工作过程

????    在DNS查找域名的过程中,域名服务器为了得到一个IP地址常常需要查询多个域名服务器。于是,在查询地址的同时,本地域名服务器也就得 到了许多其它域名服务器的信息,像它们的IP地址、所负责的区域等,本地域名服务器将这些信息连同最终查询到的主机IP地址全部存放在它的缓冲区中,以便 将来参考。当下次解析器再查询与这些域名相关的信息时,就可以直接引用。这样,就大大减少了查询时间。
    (2)DNS工作实例
    以下给出一个要求查找域名是www.internet-standard.com的IP地址的DNS查询实例。
    1)DNS查询报文
    查询主机发出的DNS查询报文见图7-46所示。其DNS查询报文中报头意义如下:
    • QR=0:表示为查询段。
    • OPCODE=0000:表示为标准查询。
    • AA=0:表示为未要求授权。
    • TC=0:未截断。
    • RD=1:表示为要求递归查询。
    • RA=0:该项与应答有关,与查询无关,因此设置为零。
    • Z=000:属保留位
    • RCODE=0000:该项是对应答信息的设置,与查询无关,故均设置为0。
    • QDCOUNT=1:该项表示只有1条查询信息。
    • ANCOUNT=0:该项表示应答时返回资源记录的数量,由于是查询信息,故设为0。
    • NSCOUNT=0:该项表示应答时返回授权服务器资源记录的数量,对于查询段,应设置为零。
    • ARCOUNT=0:该项表示应答时返回附加的授权域名服务器资源记录的数量,对于查询段,应设置为零。
    • QNAME=www.internet-standard.com:该项给出要求查询的域名。
    • QTYPE=A:该项表示要求查询IP地址。
    • QCLASS=inet:该项表示互联网的IP地址查询。
 

【转】DNS协议及应用
图7-46 查询 DNS报文内容

????2)DNS应答报文
    相关域名服务器收到DNS查询报文后,进行解包分析,通过判定,确定起为一般的递归查询报文,要查询的是域名为www.internet- standard.com,并且得知要求返回对应的IP地址,经过一系列的查询处理,获得了相应的资源记录RRs,返回与上述DNS查询段对应的DNS应 答报文,具体应答报文如图7-47所示。
    ① DNS应答报头解释
    在DNS应答报头中,只需修改与应答有关的字段:QR、RA、RCODE、ANCOUNT、NSCOUNT、ARCOUNT。
    • QR=1:表示为应答段。
    • OPCODE=0000:表示为标准查询。
    • AA=0:表示为未要求授权。
    • TC=0:未截断。
    • RD=1:表示为要求递归查询。
    • RA=1:表示正在应答的域名服务器可以执行递归查询。
    • Z=000:属保留位
    • RCODE=0000:该项是对应答情况的设置,其值为零表示无错误。
    • QDCOUNT=1:该项表示只有1条查询信息。
    • ANCOUNT=2:该项表示应答时返回资源记录的数量为2条。
    • NSCOUNT=2:该项表示应答时返回授权服务器资源记录的数量为2条。
    • ARCOUNT=0:该项表示应答时返回附加的授权域名服务器资源记录的数量为0。
    • QNAME=www.internet-standard.com:该项给出要求查询的域名。
    • QTYPE=A:该项表示要求查询IP地址。
    • QCLASS=inet:该项表示互联网的IP地址查询。
    ② DNS应答部分查询段解释
    在DNS应答报文中,仍需将原查询段的内容附加在报头其后。但内容不变。
    ③ DNS应答部分的第一条资源记录解释
    • NAME= www.internet-standard.com:要查询的域名,即资源记录中对应的域名。
    • TYPE=CNAME:意味着www.internet-standard.com是别名。
    • CLASS= inet:表示是互联网。
    • TTL=60:该资源记录的生命周期是60秒(以秒为单位)。
    • RDLENTH=2:表示资源数据的长度为2个字节(以字节为单位),此处是指针程度。
    • RDATA= internet-standard.com:该主机使用的与别名对应的真实名称。
    ④ DNS应答部分的第二条资源记录解释
    • NAME= internet-standard.com:要查询的主机的真实域名,由上一条资源记录返回的“RDATA”的值。
    • TYPE=A:表示要查询的是internet-standard.com 对应的IP地址。
    • CLASS= inet:表示是互联网。
    • TTL=60:同上。
    • RDLENTH=4:表示资源数据的长度为4个字节(RDATA所表示的IP地址长度)。
    • RDATA=216.92.98.204:该主机真实域名所对应的IP地址。
    ⑤ DNS应答部分的第一条授权资源记录解释
    NAME= internet-standard.com:要查询的主机的真实域名。
    • TYPE=NS:返回的资源记录是授权服务器的域名。
    • CLASS= inet:表示是互联网。
    • TTL=60:同上。
    • RDLENTH=1:表示资源数据的长度为11个字节。
    • RDATA=ns00.ns0.com:对请求域进行管理的授权服务器的域名。
    ⑥ DNS应答部分的第二条授权资源记录解释
    • NAME= internet-standard.com:要查询的主机的真实域名。
    • TYPE=NS:返回的资源记录是授权服务器的域名。
    • CLASS= inet:表示是互联网。
    • TTL=60:同上。
    • RDLENTH=13:表示资源数据的长度为13个字节。
    • RDATA= ns130.pair.com:对请求域进行管理的另一个授权服务器的域名。
 

【转】DNS协议及应用

 
分享到:
评论

相关推荐

    C#的DNS协议完整实现代码【有默认DNS服务器实现哦~】

    总的来说,C#实现DNS协议涉及网络编程、数据解析和缓存策略等多个方面,这对于提升开发者在网络应用开发中的能力具有重要作用。通过深入理解并实践这些知识,可以更好地理解和处理网络服务的实现,从而提高应用程序...

    DNS协议解析源码程序

    在本项目中,“DNS协议解析源码程序”旨在实现DNS查询和响应的解析功能,这涉及到对DNS报文结构的理解以及C#编程语言的应用。 首先,我们来看DNS协议的基本概念。DNS协议基于UDP(User Datagram Protocol)或TCP...

    C# Socket 实现DNS协议完整代码

    首先,DNS协议是一种基于UDP的应用层协议,其主要功能是将易于记忆的域名解析为IP地址,以便于网络通信。在C#中,我们通常使用Socket类来实现网络通信。Socket提供了低级别的网络通信接口,可以让我们直接操作TCP/IP...

    dns协议解析包 v1.0源码

    dns协议解析包 v1.0源码 介绍: 一个c#开发的dns协议解析包。可以生成查询请求,接收返回的数据,并解析出结果。 应用场景: 如果只是想根据域名获取ip地址,可以使用.net自带的类“System.Net.Dns.GetHostByName...

    dns协议简介ppt

    在这个“dns协议简介ppt”中,我们深入理解DNS的工作原理、历史演变以及其在现代网络中的应用。 首先,DNS协议解决了网络通讯中的一个重要问题:人与机器之间的沟通鸿沟。当我们输入像"www.google.com"这样的域名时...

    dns协议简介

    在“0014.dns协议.wmv”视频教程中,可能会详细介绍这些概念,并通过实际示例展示DNS查询的过程,帮助你更好地理解和应用DNS知识。同时,还会可能讲解如何配置和诊断DNS问题,以及如何使用工具如dig或nslookup进行...

    dns工作原理及协议数据报格式

    "DNS工作原理及协议数据报格式" ...DNS工作原理是通过解析器和名字服务器之间的交互来完成的,DNS协议数据报格式包括DNS报头和资源记录两部分,DNS工作原理的实现依赖于UDP协议和名字服务器的分布式架构。

    DNS协议浅谈

    ### DNS协议浅谈 #### 一、DNS的工作原理 **DNS**(Domain Name System,域名系统)是互联网中的一项核心服务,它通过将人类易于记忆的域名转化为机器可识别的IP地址,使得用户能够轻松访问互联网上的各种资源。...

    DNS服务协议详解

    DNS(Domain Name System,域名系统)是一种用于TCP/IP应用层的分布式数据库系统,主要用于实现域名到IP地址之间的映射,帮助用户通过易记的域名访问互联网资源。DNS采用层次结构的命名方式,并通过递归或迭代查询的...

    dns服务器配置与应用

    DNS 服务器使用 DNS 协议来将域名解析为 IP 地址,并将解析结果返回给客户端。DNS 服务器是互联网基础设施的重要组件,它们使得用户可以访问互联网上的网站和其他在线资源。 二、DNS 服务器的类型 DNS 服务器可以...

    DNS 模块 嵌入式Ip协议栈

    DNS模块和嵌入式IP协议栈是网络通信中至关重要的组成部分,它们在各种嵌入式设备和系统中扮演着核心角色。在这个主题中,我们将深入探讨DNS(域名系统)的功能,以及它如何与嵌入式IP协议栈相互作用,帮助设备理解和...

    java实现DNS协议和SNTP协议

    Java 实现 DNS 协议与 SNTP 协议是网络通信中的重要技术,它们在互联网应用中发挥着不可或缺的作用。本文将深入探讨这两个协议的概念、原理以及如何在 Java 中进行实现。 **DNS(Domain Name System)协议**是...

    DNS地址解析协议.pdf

    DNS 协议有广泛的应用,包括: 1. 域名解析:DNS 协议可以将域名解析为 IP 地址,实现了人类易于记忆的域名和计算机易于识别的 IP 地址之间的映射关系。 2. 邮件传输:DNS 协议可以用于邮件传输,例如,邮件服务器...

    Wireshark抓包实例分析 (DNS和HTTP协议).

    当用户在浏览器输入一个域名并按下回车键时,本地计算机就会通过DNS协议向DNS服务器发送查询请求,以获取该域名对应的IP地址。Wireshark在DNS分析过程中能够捕获到这些查询请求和响应包,并允许用户详细地查看每一个...

    应用层协议与应用.rar

    这里我们将探讨一些关键的应用层协议,以及它们如何与传输层及更低层次的协议协同工作,特别是在访问Web页面和实现网络文件系统时。 首先,HTTP(超文本传输协议)是应用层协议中的重要成员,它是访问Web页的主要...

    dns查询dns查询

    在实际应用中,DNS缓存也是非常重要的一环。本地DNS缓存可以加快查询速度,减少网络延迟。源码可能包含如何处理缓存命中和未命中的逻辑。 此外,源码可能还涉及到了DNS安全方面,比如DNSSEC(DNS安全扩展),这是一...

    DNS 解析协议 c 函数, 实例, 方便构造自己的非阻塞解析函数, 适用于任何平台

    总之,理解DNS解析协议和C语言实现可以帮助你开发更高效、可扩展的网络应用。在实际项目中,你可以根据需要调整这个函数,以适应不同的平台和性能需求。同时,注意网络安全问题,如防止DNS欺骗和中间人攻击。

    DNS加密协议发展及部署现状.zip

    - 早期的尝试:DNSCrypt是较早的加密DNS协议,但它需要客户端软件的支持,并没有成为标准。 - RFC 7858:2016年,IETF(互联网工程任务组)发布了RFC 7858,正式定义了DNS-over-TLS的标准。 - RFC 8484:2019年,...

Global site tag (gtag.js) - Google Analytics