您的位置:首页 > 其它

DNS学习总结

2015-03-31 16:34 423 查看

1.DNS的定义

DNS是域名系统(DomainNameSystem)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,在Internet上域名与IP地址之间是一一对应的,DNS就是进行域名解析的服务器。DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。DNS是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库。

2.DNS的结构

DNS 是一个分层级的分散式名称对应系统,有点像电脑的目录树结构:在最顶端的是一个”root”,然后其下分为好几个基本类别名称,如com、org、edu 等;再下面是组织名称,如ibm﹑microsoft﹑intel 等;继而是主机名称,如www﹑mail﹑ftp 等。因为当初 internet 是从美国发展起的,所以当时并没有国域名称,但随着后来
internet 的蓬勃发展,DNS 也加进了诸如 tw﹑hk﹑cn 等国域名称。所以一个完整的 dns 名称就好象是这样的:www.xyz.com.tw﹐而整个名称对应的就是一个(或多个) IP 位址了。

3.DNS运行流程

在我们设定 IP 网络环境的时候,都要告诉每台主机关于 DNS 服务器的位址(我们可以手动的在每一台主机上面设置,也可以使用 DHCP 来指定),请求DNS服务器帮忙解析域名对应的IP地址。具体的交互过程如下所示:



从这个过程我们可以看出,没有任何一台 DNS 主机会包含所有域名的 DNS 资料,资料都是分散在全部的 DNS 服务器中,而 NIC 只需知道各 DNS 服器位址就可以了。在
DNS 术语中﹐我们称一个域名为“zone”﹐这个 zone 可以是您从 NIC 申请回来的域名﹐也可以是从该域名之下延伸出来的“sub-zone”。DNS 还能提供“反查询”(reverse lookup) 功能﹐也就是以 IP 来查询主机名称。

4.DNS查询方式

DNS查询分为递归查询和非递归查询;
所谓递归查询是指接收请求的第一个域名服务器必须自始至终对请求进行处理,或向其它域名服务器进行请求且最终获得授权数据,并对请求进行应答。采用递归查询时,当所请求的域名信息在自身缓冲区时,域名服务器直接返回缓冲数据。此时递归查询请求标志无效。

所谓非递归查询是指接收请求的第一个域名服务器可以返回可靠数据(本身有时),也可以返回指向其它服务器的指针(相当于将查询的接力棒传给了最接近的域名服务器)。

主机的地址解析程序在查询时可以指定是否用递归还是非递归查询方式。非递归查询方式与递归查询方式相比响应速度快。

5.DNS报文格式

DNS报文由报头和正文段构成,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。

查询段的格式如下图所示:



• QNAME:该字段是可变长字段,其中包含一个被请求的域名,用一系列标签表示,每一个标签由一个八进制后面跟着一个表示长度的八进制数组成。

• QTYPE: 该字段占16位,指定查询的资源类型(Type),该字段将一个类型值与一条指定的资源记录相匹配(有些通用的QTYPE值可以和与多条资源记录相匹配),其值可以是A(请求主机IP地址)、NS(请求授权域名服务器)或CNAME(请求返回规范名称,或者是某主机使用的与别名对应的真实名称)。

• QCLASS: 该字段占16位,指定查询的类别(Class),如Inet用以表示互联网和IP地址查询。

应答段、授权段、附加段的格式如下所示:



查询段是主机向域名服务器发出的将域名转换为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协议的学习总结,其中有些只是简述,有些内容是从网络上找的,不一定全部正确。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: