3 DNS相关协议
3.1 RFC1034
3.1.1 域名服务器
域名服务器主机名可以不是这个域内的名字
这就意味着,域名服务器与域名空间是可以分开的
3.1.2 通配符
在zone文件中使用通配符,需要注意;一般来说,在zone文件中出现的名称都需要单独指定RR,参考rfc1034文档4.3.3节中的例子,记录如下:
X.COM MX 10 A.X.COM
*.X.COM MX 10 A.X.COM
A.X.COM A 1.2.3.4
A.X.COM MX 10 A.X.COM
*.A.X.COM MX 10 A.X.COM
可以看出X.COM和A.X.COM都在zone文件中出现,所以它们需要单独指定,否则不能匹配到X.COM和A.X.COM
3.1.3 解析器的一种可选的实现方案
一种实现解析器的可选方案,把解析功能从本地主机移到DNS服务器(支持递归查询),这种方案有2点优势,1是为缺少资源执行解析功能的主机提供域名服务,2是为整个组织和内部网络提供集中的缓存,实践中多采取这种方式。
3.1.4 权威记录和Glue记录的TTL
权威记录的TTL至少为SOA的MINIMUM,要为权威记录指定比这大的TTL值,可以在权威记录中显式定义
Glue记录不是权威数据,所以TTL需要显示定义
3.1.5 权威应答(nslookup james.cn. a)
AA位(权威应答位)设置,表示在应答区(answer section)中的地址记录来自权威数据
3.1.6 没有NS记录的NS查询的应答(nslookup james.cn. ns)
该应答表示本域名服务器是该查询的名字的权威,这个名字存在,但没有NS记录
3.1.7 错误查询中的SOA响应(nslookup www.james.cn. a)
向james.cn.域的名称服务器查询www.james.cn.的A记录,但该域名不存在
在权威应答中,查询的名称不存在,在应答的授权区(Authority section)中包含SOA记录,解析器可以使用该记录中MINIMUM来推断该名称在这个时间范围内不存在(即否定记录的存在时间)
3.1.8 查询子域的名称的应答(nslookup www.dev.james.cn. a)
向james.cn.域的名称服务器查询子域dep.james.cn.的www主机A记录
应答区(answer section)是空的,应答不是权威,是指引,指引查询者到其他授权服务器去查,该指引信息出现在应答的授权区(Authority section)
3.1.9 查询别名A记录的应答
第一种应答,在answer区中包含CNAME和A记录
第二种应答,在answer区中包含CNAME,在Authority区中包含指引,在Additional区包含其他有用的帮助信息
3.1.10 查询CNAME记录的应答
只会回答CNAME记录本身,不会继续搜寻下去
3.1.11 SBELT
与SLIST基本一样,一般由配置文件初始化,在解析器没有本地信息去选择名称服务器时使用,也是用来选择名称服务器。
3.1.12 解析器的大致过程
解析器先在cache中进行匹配,如果没有,解析器根据SLIST选择最优的名称服务器去解析,如果在SLIST中没有匹配的,使用SBELT中的名称服务器去解析
3.2 RFC1035
3.2.1 域名的规定
域名由多个label组成,每个label必须由字母开始、字母数字结束、中间是字母数字或连字符,并且每个label不超过63个
不超过63个,实际上由域名编码决定的
3.2.2 域名在消息中的基本编码
域名的总长度小于等于255,每个域名的编码由多个label的编码顺序组成;每个label编码由label长度开始,长度编码为1字节,长度编码的前2位必须为0(这限制了label最多63字符);域名中的根(root)被编码为一个字节(全0字节),表示域名的结束
注意:其实长度编码的前2位,在协议中定义为label类型,其中00表示字符串类型,11表示压缩类型(rfc1035文档中的4.1.4),01表示扩展DNS(EDNS0)的label类型(参见rfc6891,在rfc2671文档中3.1节中定义)
3.2.3 域名在消息中的压缩编码
是以label为单位进行压缩的
消息压缩只针对域名,避免重复而浪费空间
压缩的方式,使用指针指向前面出现过的名称的位置
在label的前2个bit为11,表示该label是压缩类型的(00,表示普通字符串类型,01表示EDNS0的label类型),格式如下:
OFFSET表示从消息开始的偏移量,比如0,表示消息ID的第一个字节
3.2.4 域名的字符大小写
域名不区分大小写,rfc1035协议规定内的所有字符都不区分大小写
3.2.5 数字限制
Label不超过63个字节
域名不超过255个字节
TTL的值是32位有符号的正整数
UDP消息不超过512字节
3.2.6 RR资源的消息格式
Rfc1035文档中的3.2.1节
3.2.7 CNAME资源
RDATA包含一个域名,按域名的进行编码
3.2.8 HINFO资源
RDATA包含主机的cpu和os信息,都是字符串类型,和域名的编码一致
3.2.9 MX资源
RDATA包含preference偏好值和exchange邮件交换服务器名,偏好值是16bit的整数值,越低表示越偏好,邮件交换服务器名为域名
MX资源会导致出现对应的A记录地址的附加section出现,MX资源的详解在RFC974(MAIL ROUTING AND THE DOMAIN SYSTEM)中说明,RFC974被RFC2821(Simple Mail Transfer Protocol)废弃
3.2.10 NS资源
RDATA包含一个域名
NS资源会导致对应的A记录地址的附加section出现,
3.2.11 PTR资源
RDATA包含一个域名
PTR资源不会导致附加section的出现
3.2.12 SOA资源
MNAME是该区域的主域名服务器的域名
RNAME是负责该区域的负责人邮件名
SERIAL是该区域的版本序列号,主要用于主从DNS之间的区域传输,32位无符号
REFRESH是该区域需要更新的时间间隔,从上次更新算起,32位时间值,单位秒
RETRY是该区域更新失败后,再次发起更新的时间间隔,32位时间值,单位秒
EXPIRE是指该区域不再是权威的时间间隔,32位时间值,单位秒
MINIMUM是指TTL,从该区域输出的RR会带上该TTL,32位无符号时间值,单位秒
SOA资源的各项主要用于DNS服务器维护,但MINIMUM会应用于各种查询的响应,在响应中的RR中的TTL值是根据在区域中的该RR的TTL值和SOA中的MINIMUM值的大值决定,不能低于MINIMUM值,如果RR没有定义TTL值使用该MINIMUM值
3.2.13 TXT资源
TXT-DATA包含一个或多个字符串信息,主要用于描述
3.2.14 A记录资源
RDATA包含32位IP地址
一个域名可以对应多个A记录
A记录不会导致附加的section出现
3.2.15 Wks资源记录
RDATA中ADDRESS是ip地址,PROTOCOL是协议号,BITMAP每个bit对应一个端口号(从0开始,第1bit对应端口0,置位0表示没有该服务,置位1表示有该服务),协议号和端口号的分配参考rfc1010
该记录主要用以反应某IP地址支持哪些常用的服务
目前没有在实践中看到这类资源记录
3.2.16 Type与QType
Rfc1035文档中3.2.2和3.2.3节
QType出现在查询的问题部分,QType是Type的超级,任何Type都是合法的查询类型,除了Type外,QType一般还包括以下:
AXFR 252 A request for a transfer of an entire zone
MAILB 253 A request for mailbox-related records (MB, MG or MR)
MAILA 254 A request for mail agent RRs (Obsolete - see MX)
* 255 A request for all records
3.2.17 反向地址域IN-ADDR.ARPA
反向地址域,主要有2个目的,1个是用于定位网关,1个是根据IP地址找到主机
3.2.18 消息格式
Rfc1035文档中的4章
总的消息格式如下:
头的消息格式如下:
注意其中NSCOUNT的解释为: an unsigned 16 bit integer specifying the number of name
server resource records in the authority records section
充分说明,授权记录区域是用于存放NS资源记录的
查询问题的消息格式如下:
资源记录消息格式如下:
3.2.19 传输的协议与端口规定
优先选择UDP用于查询,区域数据传输必须采用TCP;不管是UDP还是TCP,其端口号都规定是53
UDP消息不超过512字节(不包括IP和UDP头),超过部分被截断,并在TC位置位;使用UDP由于可能丢失,因此必须考虑重传的策略
TCP消息以2字节的长度域开始,长度值表示消息大的长度,但不包括长度域本身
3.2.20 主文件(master file)的规定
见rfc1035文档的第5章,bind主文件的格式基本遵循这些规定,可以结合实际的bind的主文件阅读该文档
3.2.21 邮件支持
DNS域名系统定义了1个用于映射邮箱名到域名的标准和2个使用邮箱信息推导邮件路由信息的方法,1个方法是邮件交换绑定,另1个方法是邮箱绑定。映射邮箱名到域名的标准和邮件交换绑定方法的规范是DNS标准规范的一部分,而邮箱绑定是试验性质的
映射邮箱名到域名的标准,示例如下:
james@james.cn邮箱名,会映射为域名james.james.cn
@前的部分称为local-part,@后的部分称为mail-domain,local-part如果含有点,在DNS主文件中如下表示:
shidong.jiang@james.cn邮箱名,表示为shidong\.jiang.james.cn
邮件交换绑定,使用邮箱中mail-domain部分决定邮件发送的目的地,而local-part部分基本不使用,使用这种方法的优点之一是把邮件的目标名称从邮件程序主机名中解藕出来;这种方法的精华是使用mail-domain去定位对应的MX记录,MX记录表示哪些主机可以接收此mail-domain的邮件,并有优先值用于选择,再根据MX记录指定的主机名去查找具体的IP地址
邮箱绑定的方法,属于试验性质,暂不讨论
3.3 RFC6891
OPT记录放在附加数据区的任何位置
DNS消息必须只有1个OPT记录
转载请注明原文地址: https://ju.6miu.com/read-7199.html