本申请涉及多域名记录查询,尤其涉及一种基于伪资源记录OPT扩展支持多域名记录查询的方法和系统。
背景技术:
根据目前的DNS查询技术协议,DNS查询的请求如A和AAAA记录,需要由DNS客户端逐个发送给DNS服务器。但是随着新应用的普及,DNS客户端经常需要同时获得A和AAAA记录,或者A和MX记录。根据目前的技术协议设计,需要由DNS客户端向DNS服务器逐个发送DNS查询请求,造成查询时延增长和服务器负担加重。
技术实现要素:
为了减少在查询同一个名字或者子名字的多个DNS类型的记录查询时延和DNS服务器的查询负担,本发明提出在DNS协议扩展以后,DNS系统由支持单个域名的单个类型查询,变成向同一个域名的多种类型记录查询或者一个主域名及其子域名的多种类型记录查询。
本发明的目的是通过以下技术方案实现的。
本发明提出了一种基于伪资源记录OPT扩展支持多域名类型记录查询的方法,具体步骤如下:
步骤101、发起域名的多种类型记录查询;
步骤103、对伪资源记录OPT进行扩展,并封装到DNS数据包中;
步骤105、接收所述DNS数据包,提取相应信息,并进行查询;
步骤107、返回查询结果。
其中,步骤103具体包括:
将主域名的查询信息放进DNS包的question部分;
把包括子域名或者主域名的多类型记录查询信息根据扩展支持多域名类型记录查询的OPT记录的数据格式,依次放进OPT记录后,再放进DNS包的additional部分。
其中,步骤105具体包括:
步骤1051、提取主域名信息,针对主域名进行查询,依据RFC1034和RFC1035的规定把查询获得的信息放进DNS包;
步骤1053、提取OPT记录中的第一条子域名信息,把获得的域名记录信息根据RFC1034和RFC1035的规定放进DNS包里,把查询获得的rcode值,放到相应OPT记录中的R-code部分;
步骤1055、依次逐条提取OPT记录中的子域名信息,并重复步骤1053进行查询;
步骤1057、完成所有子域名的信息查询后,把OPT记录放进DNS包中的addional部分。
其中,步骤107之后还包括:
接收返回的查询结果之后,对主域名信息根据RFC1034和RFC1035的规定进行解包使用;对相应的子域名信息,通过OPT里面的相应记录里的type,和r-code提取出来,当作该子域名的type和rcode使用。
本发明还提出了一种基于伪资源记录OPT扩展支持多域名类型记录查询的系统,其包括:
多记录DNS查询客户端,其用于发起查询请求和获取查询结果
多记录DNS查询服务器端,其用于响应于所述多记录DNS查询客户端的请求进行查询,并返回查询结果。
其中,所述多记录查询客户端还包括:
第一封装模块,其用于将主域名的查询信息放进DNS包的question部分;
把包括子域名或者主域名的多类型记录查询信息根据扩展支持多域名类型记录查询的OPT记录的数据格式,依次放进OPT记录后,再放进DNS包的additional部分。
其中,所述多记录DNS查询服务器端还包括:
第二提取模块,其用于提取主域名信息,针对主域名进行查询,依据RFC1034和RFC1035的规定把查询获得的信息放进DNS包;
并依次逐条提取OPT记录中的子域名信息,把获得的域名记录信息根据RFC1034和RFC1035的规定放进DNS包里,把查询获得的rcode值,放到相应OPT记录中的R-code部分;
第二封装模块,其用于完成所有子域名的信息查询后,把OPT记录放进DNS包中的addional部分。
其中,所述多记录查询客户端还包括:
解包装模块,其用于接收返回的查询结果之后,对主域名信息根据RFC1034和RFC1035的规定进行解包使用;
第一提取模块,其用于对相应的子域名信息,通过OPT里面的相应记录里的type和r-code提取出来,作为该子域名的type和rcode使用。
本发明的优点在于:通过本发明可以进行同一个域名的多类型记录查询;可以进行主域名的子域名的任意类型记录的信息查询;把多次往返查询改成了单次查询,减少了DNS查询的往返时延;在DKIM和DMARC等多种使用场合有重要意义。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
附图1示出了根据本发明实施方式的一种基于伪资源记录OPT扩展支持多域名类型记录查询的编码结构示意图;
附图2示出了根据本发明实施方式的基于伪资源记录OPT扩展支持多域名类型记录查询的多记录查询DNS数据包;
附图3示出了根据本发明实施方式的伪资源记录OPT扩展支持多域名类型记录查询的方法流程图;
附图4示出了根据本发明实施方式的一种基于伪资源记录OPT扩展支持多域名类型记录查询的系统框图;
附图5示出了根据本发明实施例的多记录查询DNS数据包;
附图6示出了根据本发明实施例的多记录查询DNS反馈包。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明提供了一种基于伪资源记录OPT扩展支持多域名类型记录查询的机制,通过对伪资源记录OPT扩展,增加相关字段,扩展DNS客户端和DNS服务器端,可以为互联网DNS客户端提供同一个域名的多类型记录查询功能。
如图1和2所示,在伪资源记录OPT上的数据部分增加若干个子问题,第一个子问题含有Count,Type,R-code,prefix字段,第二个及后续的每个子问题含有Seq,Type,R-code和prefix字段。第一个子问题的count字段表明DNS查询包一共有多少个子问题,Type字段表示所查询的子问题的类型记录,R-code用于DNS服务器对此名字的查询的反馈,R-code的字段里的含义参照DNS域名查询的rcode字段的含义,prefix字段表明子问题与所查询主域名的区别部分。第二个及后续的每个子问题的Seq字段表明是所查的第几个子问题,Type字段表示所查询的子问题的类型记录,R-code用于DNS服务器对此名字的查询的反馈,R-code的字段里的含义参照DNS域名查询的rcode字段的含义,prefix字段表明子问题与所查询主域名的区别部分。
根据本发明的实施方式,如图3所示,提出一种基于伪资源记录OPT扩展支持多域名类型记录查询的方法,具体步骤如下:
步骤101、发起域名的多种类型记录查询;
步骤103、对伪资源记录OPT进行扩展,并封装到DNS数据包中;
步骤105、接收所述DNS数据包,提取相应信息,并进行查询;
步骤107、返回查询结果。
其中,步骤103具体包括:
将主域名的查询信息放进DNS包的question部分;
把包括子域名或者主域名的多类型记录查询信息根据扩展支持多域名类型记录查询的OPT记录的数据格式,依次放进OPT记录后,再放进DNS包的additional部分。
其中,步骤105具体包括:
步骤1051、提取主域名信息,针对主域名进行查询,依据RFC1034和RFC1035的规定把查询获得的信息放进DNS包;
步骤1053、提取OPT记录中的第一条子域名信息,把获得的域名记录信息根据RFC1034和RFC1035的规定放进DNS包里,把查询获得的rcode值,放到相应OPT记录中的R-code部分;
步骤1055、依次逐条提取OPT记录中的子域名信息,并重复步骤1053进行查询;
步骤1057、完成所有子域名的信息查询后,把OPT记录放进DNS包中的addional部分。
其中,步骤107之后还包括:
接收返回的查询结果之后,对主域名信息根据RFC1034和RFC1035的规定进行解包使用;对相应的子域名信息,通过OPT里面的相应记录里的type,和r-code提取出来,当作该子域名的type和rcode使用,具体type和rcode的使用规则参照RFC1034和RFC1035的规则。
如图4所示,本发明还提出了一种基于伪资源记录OPT扩展支持多域名类型记录查询的系统,其包括:
多记录DNS查询客户端,其用于发起查询请求和获取查询结果;
多记录DNS查询服务器端,其用于响应于所述多记录DNS查询客户端的请求进行查询,并返回查询结果。
其中,所述多记录查询客户端还包括:
第一封装模块,其用于将主域名的查询信息放进DNS包的question部分;
把包括子域名或者主域名的多类型记录查询信息根据扩展支持多域名类型记录查询的OPT记录的数据格式,依次放进OPT记录后,再放进DNS包的additional部分。
其中,所述多记录DNS查询服务器端还包括:
第二提取模块,其用于提取主域名信息,针对主域名进行查询,依据RFC1034和RFC1035的规定把查询获得的信息放进DNS包;
并依次逐条提取OPT记录中的子域名信息,把获得的域名记录信息根据RFC1034和RFC1035的规定放进DNS包里,把查询获得的rcode值,放到相应OPT记录中的R-code部分;
第二封装模块,其用于完成所有子域名的信息查询后,把OPT记录放进DNS包中的addional部分。
其中,所述多记录查询客户端还包括:
解包装模块,其用于接收返回的查询结果之后,对主域名信息根据RFC1034和RFC1035的规定进行解包使用;
第一提取模块,其用于对相应的子域名信息,通过OPT里面的相应记录里的type和r-code提取出来,作为该子域名的type和rcode使用。
实施例一、
多记录DNS查询客户端发起域名的多种类型记录查询,比如查询exmaple.com的A和AAAA记录,以及mail.example.com的MX记录。
多记录DNS查询客户端把主域名的查询信息放进DNS包的question部分;把包括子域名或者主域名的多类型记录查询信息根据扩展支持多域名类型记录查询的OPT记录的数据格式,依次放进OPT记录后,再放进DNS包的additional部分。
具体DNS查询包信息如图5所示,多记录DNS查询服务器端收到DNS包以后进行如下操作:
a)提取主域名信息,先对主域名进行查询,然后把查询获得的信息,依据RFC1034和RFC1035的规定放进DNS包;
b)提取OPT记录中的第一条子域名信息,根据RFC1034和RFC1035的规定进行查询,把获得的域名记录信息根据RFC1034和RFC1035的规定放进DNS包里,把查询获得的rcode值,放到相应OPT记录中的R-code部分;
c)依次逐条提取OPT记录中的子域名信息,并参照上个步骤b)进行查询;
d)完成所有子域名的信息查询后,把OPT记录放进DNS包中的addional部分。
最后形成的DNS反馈包如图6所示,多记录DNS查询服务器端返回查询信息。
多记录DNS查询客户端收到信息后,对主域名信息根据RFC1034和RFC1035的规定进行解包使用;对相应的子域名信息,通过OPT里面的相应记录里的type,和r-code提取出来,当作该子域名的type和rcode使用,具体type和rcode的使用规则参照RFC1034和RFC1035的规则。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。