DNS 学习

转自http://www.cnblogs.com/songhan/archive/2012/07/21/2601929.html

http://jwx.zgz.cn/cl/7.41.htm

 

一、资源记录
    在一个域名服务器的配置文件里包含若干个资源记录,以帮助地址解析器进行地址解析。配置文件中资源记录所含的信息见表

表1 配置文件中资源记录示例

 

资源记录(Resource Records),简称RRs。它是指每个域所包含的与之相关的资源。

标准的资源记录具有其基本格式:

[name]   [ttl]   IN  type  rdata

name:名称字段,此字段是资源记录引用的域对象名,可以是一台单独的主机也可以是整个域。字段值:"."是根域,@是默认域,即当前域,

ttl:生存时间字段,它以秒为单位定义该资源记录中的信息存放在DNS缓存中的时间长度。通常此字段值为空,表示采用SOA记录中的最小TTL值(即1小时)。

IN:此字段用于将当前湖泊记录标识为一个INTERNET的DNS资源记录。

TYPE:类型字段,用于标识当前资源记录的类型,什么样的资源存在于这个RR中

资源记录类型

一句话

起始授权结构(SOA)

指出当前区域内谁是  主DNS服务器

主机(A)

将域名FQND映射到IP  正向解析

别名(CNAME)

将A记录指向的域名 指向 另外一个域名

邮件交换器(MX)

指出当前区域内 SMTP邮件服务器IP

名称服务器(NS)

指出当前区域内有几个DNS服务器在提供服务

反向解析(PRT)

将IP解析为域名FQND 

 

 

 

FQDN (fully qualified domain name,完全限定域名)

 

一种用于指定计算机在域层次结构中确切位置的明确域名。

 

一台特定计算机或主机的完整 Internet 域名。FQDN 包括两部分:主机名和域名。例如 mycomputer.mydomain.com。

 

一种包含主机名和域名(包括顶级域)的 URL。例如,www.symantec.com 是完全限定域名。其中 www 是主机,symantec 是二级域,.com 是顶级域。FQDN 总是以主机名开始且以顶级域名结束,因此 www.sesa.symantec.com 也是一个 FQDN。

 

 

 

 

 

 

 

 

==========================================================================================================================

 

二、DNS的报文格式

  DNS报文由报头和正文段构成,DNS有四类正文段:查询段、应答段、授权段和附加段

  其中正文段中的查询段用于主机向域名服务器发出地址解析请求,应答段、授权段、附加段用于域名服务器向主机返回地址解析结果。

            

            图1 DNS报文结构

DNS报文头和正文段的格式具体介绍如下

  (1) DNS报文报头格式

    图2  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报文中,其正文段封装在图2 所示的DNS报文头内。

  DNS有四类正文段:查询段、应答段、授权段和附加段。

  1)查询段的格式

   图3 DNS报文中查询段的格式

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

    【 For example, the domain microsoft.com is expressed as 0x09microsoft0x03com0x00, where the hexadecimal digits represent the length of each label, the ASCII              characters indicate the individual labels, and the final 0 indicates the end of the name.】
    • QTYPE: 该字段占16位,指定查询的资源类型(Type),该字段将一个类型值与一条指定的资源记录相匹配(有些通用的QTYPE值可以和与多条资源记录相匹配),

其值可以是A(请求主机IP地址)、NS(请求授权域名服务器)或CNAME(请求返回规范名称,或者是某主机使用的与别名对应的真实名称)。
    • QCLASS: 该字段占16位,指定查询的类别(Class),如Inet用以表示互联网和IP地址查询。

【Represents the IN (Internet) question class and is normally set to 0x0001.】

 

2)应答段、授权段、附加段的格式
    查询段是主机向域名服务器发出的将域名转换为IP地址的请求报文,域名服务器按照主机查询类型,经过查询资源记录数据库后返回含有资源记录的应答段、授权段或附加段,资源记录告诉主机所查询的信息。应答段、授权段、附加段具有相同的格式,

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

 

三、DNS的工作过程及示例

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

    图5 DNS基本工作过程

在DNS查找域名的过程中,域名服务器为了得到一个IP地址常常需要查询多个域名服务器。于是,在查询地址的同时,本地域名服务器也就得到了许多其它域名服务器的信息,像它们的IP地址、所负责的区域等,本地域名服务器将这些信息连同最终查询到的主机IP地址全部存放在它的缓冲区中,以便将来参考。当下次解析器再查询与这些域名相关的信息时,就可以直接引用。这样,就大大减少了查询时间。

 

****************************************************************************************************************

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地址查询。

 

2)DNS应答报文

相关域名服务器收到DNS查询报文后,进行解包分析,通过判定,确定起为一般的递归查询报文,要查询的是域名为www.internet-standard.com,并且得知要求返回对应的IP地址,经过一系列的查询处理,获得了相应的资源记录RRs,返回与上述DNS查询段对应的DNS应答报文,

    ① 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:对请求域进行管理的另一个授权服务器的域名。

 

 

posted @   曦花  阅读(307)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示