DNS的服务器、客户端及数据同步方法与流程

文档序号:12290091阅读:516来源:国知局
DNS的服务器、客户端及数据同步方法与流程
本发明涉及DNS(DomainNameSystem,域名系统)
技术领域
,具体涉及一种DNS的服务器、客户端及两者的数据同步方法。
背景技术
:DNS可以将域名和IP地址相互映射,使得人们无需记住仅能被计算机直接读取的IP字符串,即可访问互联网。当前,DNS的服务器(Server)与客户端(Client)之间只有查询和被查询的关系,而没有保证两者数据同步的同步机制,所谓数据是指客户端向服务器查询与域名相关的信息资源。当客户端向服务器发送查询消息以进行域名解析时,服务器将解析后的数据返回给客户端,客户端将数据存储于自身的缓存区(Cache)中,这种数据也称为记录,且该记录在缓存区中均被赋予有一存活时间(TimeToLive,TTL)。具体而言,在存活时间内,所述记录可被客户端调用以运行相关业务,而超过存活时间,缓存区中的记录会被老化清理。若在存活时间内服务器中的相关记录已经更新,则客户端调用的是更新之前的记录,这无疑会导致业务运行失败,可见,记录从更新到生效往往需要经过很长时间。当前为了确保记录及时生效,只能通过用户手动对需要更新记录的客户端的缓存区逐一清理,使得客户端可以再次向服务器发送查询消息以获取最新的记录,但操作繁琐且效率低下。技术实现要素:鉴于此,本发明的多个方面提供一种DNS的服务器、客户端及数据同步方法,能够自动保持客户端与服务器之间的数据同步,确保解析记录及时生效。第一方面提供一种域名系统的数据同步方法,包括:利用服务器与客户端之间的交互消息中的字段标识服务器中的记录是否发生更新,其中交互消息包括客户端向服务器发送的消息以及服务器向客户端发送的信息;在服务器的记录发生更新时,客户端根据接收到的交互消息的字段更新本地缓存区的记录。结合第一方面,在第一种可能的实现方式中,利用服务器与客户端之间的交互消息中的字段标识服务器的记录是否发生更新的步骤包括:客户端向服务器发送第一查询消息;客户端接收服务器在判断服务器中的记录是否发生更新之后向客户端反馈的第一指示消息,第一指示消息包括标识服务器中记录是否发生更新的字段;在服务器的记录发生更新时,客户端根据接收到的交互消息的字段更新本地缓存区的记录的步骤包括:客户端清除当前缓存区的记录;客户端向服务器发送第二查询消息,以向服务器请求更新后的记录;客户端接收服务器反馈的第二指示消息,第二指示消息包括更新后的记录;客户端在接收到第二指示消息后存储更新后的记录。结合第一方面,在第二种可能的实现方式中,利用服务器与客户端之间的交互消息中的字段标识服务器的记录是否发生更新的步骤包括:客户端接收服务器发送的第一指示消息,所述第一指示消息包括标识服务器的记录已经发生更新的第一字段以及标识发生更新的记录的版本信息的第二字段;客户端根据接收到的交互消息的字段更新本地缓存区的记录的步骤包括:客户端清除当前缓存区中与版本信息对应的记录,并向服务器发送查询消息,以向服务器请求更新后的记录;服务器向客户端反馈第三指示消息,第三指示消息包括更新后的记录;客户端将接收到的更新后的记录存储于缓存区中。结合第一方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,第一指示消息为具有头域部分Header和更新域部分Changes的DNS消息,头域部分包括Z字段和CHCOUNT字段,Z字段用于标识服务器中的记录是否发生更新,CHCOUNT字段用于标识更新域部分中发生更新的记录的个数,更新域部分用于标识发生更新的客户端的记录。结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,头域部分还包括Opcode字段,Opcode字段用于标识第一指示消息的类型,以表示第一指示消息为查询服务器中的记录是否发生更新的消息。第二方面提供一种DNS的服务器,包括接收模块和发送模块,接收模块和发送模块用于收发服务器与客户端之间的交互消息,交互消息包括接收模块接收的客户端向服务器发送的消息以及服务器的发送模块向客户端发送的信息,交互消息包括标识服务器中的记录是否发生更新的字段,使得客户端在服务器的记录发生更新时根据接收到的交互消息的字段更新本地缓存区的记录。结合第二方面,在第一种可能的实现方式中,接收模块用于接收客户端发送的第一查询消息,服务器还包括处理模块,处理模块用于判断服务器中的记录是否发生更新,并控制发送模块向客户端反馈第一指示消息,第一指示消息包括标识服务器中记录是否发生更新的字段,使得客户端在服务器中的记录发生更新时清除当前缓存区的记录;在处理模块判断记录发生更新时,接收模块进一步用于接收客户端发送的用以请求更新后的记录的第二查询消息,处理模块控制发送模块向客户端反馈包括更新后的记录的第二指示消息,使得存储更新后的记录。结合第二方面,在第二种可能的实现方式中,发送模块用于向客户端发送第一指示消息,第一指示消息包括标识服务器的记录已经发生更新的第一字段以及标识发生更新的记录的版本信息的第二字段,使得客户端清除当前缓存区中与版本信息对应的记录;接收模块进一步用于接收客户端发送的请求更新后的记录的查询消息,处理模块控制发送模块向客户端反馈包括更新后的记录的第三指示消息,使得客户端将更新后的记录存储于缓存区中。结合第二方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,第一指示消息为具有头域部分和更新域部分的DNS消息,头域部分包括Z字段和CHCOUNT字段,Z字段用于标识服务器中的记录是否发生更新,CHCOUNT字段用于标识更新域部分中发生更新的记录的个数,更新域部分用于标识发生更新的客户端的记录。结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,头域部分还包括Opcode字段,Opcode字段用于标识第一指示消息的类型,以表示第一指示消息为查询服务器中的记录是否发生更新的消息。第三方面提供一种DNS的客户端,包括接收模块、发送模块、处理模块及存储模块,接收模块和发送模块分别用于接收和发送服务器与客户端之间的交互消息,所述交互消息包括客户端的发送模块向服务器发送的消息以及接收模块接收的服务器向客户端发送的信息,交互消息包括标识服务器中的记录是否发生更新的字段,处理模块用于在服务器的记录发生更新时根据接收模块接收到的交互消息的字段更新存储模块的记录。结合第三方面,在第一种可能的实现方式中,发送模块用于向服务器发送第一查询消息,接收模块用于接收服务器反馈的第一指示消息,所述第一指示消息包括标识服务器中记录是否发生更新的字段;在处理模块根据第一指示消息判断服务器的记录发生更新时控制存储模块清除当前的记录,并控制发送模块进一步向服务器发送用于请求更新后的记录的第二查询消息,并由接收模块接收服务器反馈的第二指示消息,所述第二指示消息包括更新后的记录,处理模块用于控制存储模块存储更新后的记录。结合第三方面,在第二种可能的实现方式中,接收模块用于接收服务器发送的第一指示消息,第一指示消息包括标识服务器的记录已经发生更新的第一字段以及标识发生更新的记录的版本信息的第二字段,处理模块用于控制存储模块清除当前与版本信息对应的记录,并控制发送模块向服务器发送用以请求更新后的记录的查询消息,以及控制接收模块接收服务器反馈的第三指示消息,第三指示消息包括更新后的记录,处理模块进一步用于控制存储模块存储更新后的记录。结合第三方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,第一指示消息为具有头域部分和更新域部分的DNS消息,头域部分包括Z字段和CHCOUNT字段,Z字段用于标识服务器中的记录是否发生更新,CHCOUNT字段用于标识更新域部分中发生更新的记录的个数,更新域部分用于标识发生更新的客户端的记录。结合第三方面的第三种可能的实现方式,在第四种可能的实现方式中,头域部分还包括Opcode字段,Opcode字段用于标识第一指示消息的类型,以表示第一指示消息为查询服务器中的记录是否发生更新的消息。第四方面提供一种DNS的服务器,包括接收器和发送器,接收器和发送器用于收发服务器与客户端之间的交互消息,交互消息包括接收器接收的客户端向服务器发送的消息以及服务器的发送器向客户端发送的信息,交互消息包括标识服务器中的记录是否发生更新的字段,使得客户端在服务器的记录发生更新时根据接收到的交互消息的字段更新本地缓存区的记录。结合第四方面,在第一种可能的实现方式中,接收器用于接收客户端发送的第一查询消息,服务器还包括处理器,处理器用于判断服务器中的记录是否发生更新,并控制发送器向客户端反馈第一指示消息,第一指示消息包括标识服务器中记录是否发生更新的字段,使得客户端在服务器中的记录发生更新时清除当前缓存区的记录;在处理器判断记录发生更新时,接收器进一步用于接收客户端发送的用以请求更新后的记录的第二查询消息,处理器控制发送器向客户端反馈包括更新后的记录的第二指示消息,使得存储更新后的记录。结合第四方面,在第二种可能的实现方式中,发送器用于向客户端发送第一指示消息,第一指示消息包括标识服务器的记录已经发生更新的第一字段以及标识发生更新的记录的版本信息的第二字段,使得客户端清除当前缓存区中与版本信息对应的记录;接收器进一步用于接收客户端发送的请求更新后的记录的查询消息,处理器控制发送器向客户端反馈包括更新后的记录的第三指示消息,使得客户端将更新后的记录存储于缓存区中。结合第四方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,第一指示消息为具有头域部分和更新域部分的DNS消息,头域部分包括Z字段和CHCOUNT字段,Z字段用于标识服务器中的记录是否发生更新,CHCOUNT字段用于标识更新域部分中发生更新的记录的个数,更新域部分用于标识发生更新的客户端的记录。结合第四方面的第三种可能的实现方式,在第四种可能的实现方式中,头域部分还包括Opcode字段,Opcode字段用于标识第一指示消息的类型,以表示第一指示消息为查询服务器中的记录是否发生更新的消息。第五方面提供一种DNS的客户端,包括接收器、发送器、处理器及存储器,接收器和发送器分别用于接收和发送服务器与客户端之间的交互消息,所述交互消息包括客户端的发送器向服务器发送的消息以及接收器接收的服务器向客户端发送的信息,交互消息包括标识服务器中的记录是否发生更新的字段,处理器用于在服务器的记录发生更新时根据接收器接收到的交互消息的字段更新存储器的记录。结合第五方面,在第一种可能的实现方式中,发送器用于向服务器发送第一查询消息,接收器用于接收服务器反馈的第一指示消息,所述第一指示消息包括标识服务器中记录是否发生更新的字段;在处理器根据第一指示消息判断服务器的记录发生更新时控制存储器清除当前的记录,并控制发送器进一步向服务器发送用于请求更新后的记录的第二查询消息,并由接收器接收服务器反馈的第二指示消息,所述第二指示消息包括更新后的记录,处理器用于控制存储器存储更新后的记录。结合第五方面,在第二种可能的实现方式中,接收器用于接收服务器发送的第一指示消息,第一指示消息包括标识服务器的记录已经发生更新的第一字段以及标识发生更新的记录的版本信息的第二字段,处理器用于控制存储器清除当前与版本信息对应的记录,并控制发送器向服务器发送用以请求更新后的记录的查询消息,以及控制接收器接收服务器反馈的第三指示消息,第三指示消息包括更新后的记录,处理器进一步用于控制存储器存储更新后的记录。结合第五方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,第一指示消息为具有头域部分和更新域部分的DNS消息,头域部分包括Z字段和CHCOUNT字段,Z字段用于标识服务器中的记录是否发生更新,CHCOUNT字段用于标识更新域部分中发生更新的记录的个数,更新域部分用于标识发生更新的客户端的记录。结合第五方面的第三种可能的实现方式,在第四种可能的实现方式中,头域部分还包括Opcode字段,Opcode字段用于标识第一指示消息的类型,以表示第一指示消息为查询服务器中的记录是否发生更新的消息。上述的技术方案中,利用DNS中服务器与客户端之间的交互消息中的字段标识服务器中的记录是否发生更新,客户端接收到服务器发送来的交互消息,并根据交互消息中的字段即可更新本地缓存区的记录,从而能够自动保持客户端与服务器之间的数据同步,确保解析记录及时生效。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。图1是本发明的数据同步方法一实施例的流程示意图;图2是本发明的数据同步方法另一实施例的流程示意图;图3是本发明的服务器一实施例的原理框示意图;图4是本发明的服务器一实施例的结构示意图;图5是本发明的客户端一实施例的原理框示意图;图6是本发明的客户端一实施例的结构示意图。具体实施方式为使本发明的发明目的、技术方案以及有益效果更加清楚明白,以下参照附图并列举较佳实施例,对本发明作出进一步详细说明。本发明的一个实施例中,利用DNS中服务器与客户端之间的交互消息中的字段标识服务器中的记录是否发生更新,所述交互消息既可以为客户端向服务器发送的消息也可以为服务器向客户端发送的信息,客户端接收服务器发送来的交互消息,并根据交互消息中的字段更新本地缓存区的记录。例如,图1是本发明的数据同步方法一实施例的流程示意图。步骤S11:客户端向服务器发送第一查询消息。本实施例的第一查询消息为客户端与服务器之间进行域名解析的DNSQuery(查询消息)。步骤S12:服务器判断所述服务器中的记录是否发生更新。服务器可以根据第一查询消息携带的客户端本地缓存区存储的记录的版本信息,判断服务器中的记录是否发生更新,所述记录的版本信息可以包括所述记录对应的域名以及所述记录被存储的时间,例如,若第一查询消息携带的记录被存储的时间为2月2日11点,服务器在2月2日12点已经更新了该记录对应的域名所对应的数据,则服务器基于该域名对应的数据的更新时间2月2日12点晚于2月2日11点,即可判定服务器中的记录已经发生更新。若判定所述服务器中的记录未发生更新,则执行步骤S13;若判定所述服务器中的记录发生更新,则执行步骤S14-S18。步骤S13:服务器不向客户端反馈第一指示消息。当然,服务器也可以向客户端反馈第一指示消息,但此时第一指示消息包括标识服务器中与所述版本信息对应的记录未发生更新的字段。步骤S14:服务器向客户端反馈第一指示消息,所述第一指示消息包括标识服务器中与所述版本信息对应的记录已经发生更新的字段。本实施例的第一指示消息为与DNSQuery对应的DNSRespone(应答信息),其实质上可以理解为一种具有如下表1所示的DNS格式消息,但与现有的DNS格式消息仅包括头域部分(Header)、问题域部分(Question)、答案域部分(Answer)、权威域部分(Authority)、附加域部分(Additional)不同的是,本发明实施例中的所述第一指示消息除了包括头域部分(Header)、问题域部分(Question)、答案域部分(Answer)、权威域部分(Authority)、附加域部分(Additional)外,还包括用于标识发生更新的记录的更新域部分(Changes),即用于表示客户端的缓存区中哪些记录发生了更新,也就是说,更新域部分携带的是发生更新之前的记录,而非更新之后的记录。Header头域部分Question问题域部分Answer答案域部分Authority权威域部分Additional附加域部分Changes更新域部分表1其中,更新域部分可以采用RFC1035中规定的Questionsectionformat(问题部分格式),即包括QNAME字段、QTYPE字段和QCLASS字段,QNAME字段表示客户端所查询的域名,QTYPE字段表示所述域名的类型,QCLASS字段表示查询所使用的网络类别,例如QCLASS取值为1时为Internet。本实施例的头域部分具有如下表2所示的格式:表2其中,0~15这16位字段的取值构成第一指示消息的ID(IDentity),且所述ID由客户端发送的第一查询消息携带;QR字段表示第一指示消息为应答消息,该字段取值为1;Opcode字段表示第一指示消息的类型,该字段取值为2,表示所述第一指示消息是服务器向客户端发送的应答信息;AA字段表示发送第一指示消息的服务器是否为授权的权威域名服务器,若是,则该字段取值为1;TC字段表示第一指示消息的字段是否超长,如果超过512字节,则该字段取值为1,如果小于等于512字节,则该字段取值为0;RD字段表示服务器是否完成递归查询,并在完成时该字段取值为1,如果服务器未完成递归查询,该字段取值为0;RA字段表示服务器是否支持递归查询,例如RA字段取值为1表示支持递归查询,RA字段取值为0表示不支持递归查询;RCODE字段表示递归查询的结果,该字段取值为0时表示递归查询成功,否则为对应的错误码;QDCOUNT字段表示问题域部分的个数,ANCOUNT字段表示答案域部分的个数、NSCOUNT字段表示权威域部分的个数、ARCOUNT字段表示附加域部分的个数。现有的DNS格式消息的头域部分未设置CHCOUNT字段,且头域部分的Z字段未被使用,本实施例正是利用所述Z字段标识服务器中的记录是否发生更新,即利用所述Z字段传递服务器中的记录的版本信息,例如客户端发送的第一查询消息的Z字段取值为001,若服务器反馈的第一指示消息中的Z字段取值为002,则表示服务器中的记录发生更新,客户端需要对第一指示消息中的更新域部分所携带的记录进行更新。并在所述记录发生更新时,利用所述CHCOUNT字段标识所述更新域部分中发生更新的记录的个数。步骤S15:在所述记录发生更新时,客户端清除本地缓存区当前的记录。步骤S16:客户端向服务器发送第二查询消息,以请求更新后的记录。步骤S17:服务器向客户端反馈携带有所述更新后的记录的第二指示消息。步骤S18:客户端存储更新后的记录。需要指出的是,步骤S16-S18即为域名解析过程,即当客户端向服务器发送DNS查询消息以进行域名解析时,服务器将解析后的数据返回给客户端,客户端将数据存储于自身的缓存区中。也就是说,在清除本地缓存区中的已经老化的记录后,客户端可以根据需要随即或间隔一段时间又或者不向服务器发送所述DNS查询消息。所述第二查询消息和所述第二指示消息即为客户端与服务器之间进行域名解析时的DNSQuery和DNSRespone。进一步结合上述,可知本实施例实质上是在现有DNS格式消息的基础上进行的改进,可认为是通过复用现有DNS格式消息实现解析记录更新的快速知会,从而自动保持客户端与服务器之间的数据同步,确保解析记录及时生效。再次结合表1和表2,在图1所示实施例的基础上但与之不同的是,本发明其他实施例可以进一步赋予DNS格式消息中头域部分的Opcode字段的取值,例如为2~15中的任一个,利用Opcode字段标识所述第一指示消息的类型,以表示所述第一指示消息为查询服务器中的记录是否发生更新的消息,其中Opcode字段取值为2时所述第一指示消息与现有的DNS格式消息(DNSRespone)的Opcode字段取值相同,Opcode字段取值为3~15中的任一个时标识所述第一指示消息为“DNS记录变更查询消息”,即标识所述第一指示消息为用于查询所述服务器中的记录是否发生更新的消息。此时头域部分的Z字段与前述使用方法相同。图2是本发明的数据同步方法另一实施例的流程示意图。步骤S21:服务器向客户端发送第一指示消息,所述第一指示消息包括标识服务器的记录已经发生更新的第一字段及标识发生更新的记录的版本信息的第二字段。所述第一指示消息为DNS中服务器与客户端之间进行域名解析的DNS格式消息,结合表1和表2,通过赋予DNS格式消息中头域部分的Opcode字段的取值,例如2~15中的任一个,利用Opcode字段标识所述第一指示消息的类型,以表示所述第一指示消息为查询服务器中的记录是否发生更新的消息,其中Opcode字段取值为2时所述第一指示消息与现有的DNS格式消息(DNSRespone)的Opcode字段取值相同,Opcode字段取值为3~15中的任一个时标识所述第一指示消息是否为“DNS记录变更查询消息”。此时头域部分的Z字段仍被使用以标识服务器中的记录是否发生更新。步骤S22:客户端清除当前缓存区中与版本信息对应的记录,并向服务器发送查询消息,以向服务器请求更新后的记录。步骤S23:服务器向客户端反馈携带有更新后的记录的第三指示消息。步骤S24:客户端将接收到的所述更新后的记录存储于本地缓存区中。本实施例的服务器在判定记录发生更新时主动告知客户端,从而使得客户端自动保持与服务器之间的数据同步,确保解析记录及时生效。本发明的其他实施例可以利用DNS格式消息中头域部分的Z字段传递服务器中的记录的版本信息从而标识服务器的记录是否发生更新,例如客户端发送的第一查询消息的Z字段取值为001,若服务器反馈的第一指示消息中的Z字段取值为002,则表示服务器中的记录发生更新,客户端需要对第一指示消息中的更新域部分所携带的记录进行更新,并在记录发生更新时,利用头域部分的CHCOUNT字段标识更新域部分中发生更新的记录的个数,此时头域部分的Opcode字段与现有DNS格式消息的相同,并且所述更新域部分携带的仅仅是发生更新之前的记录,而并非更新之后的记录。本发明还提供一种如图3所示的服务器,如图3所示,所述服务器30包括接收模块31和处理模块32、发送模块33,收发模块31和发送模块33分别用于接收和发送服务器30与客户端之间的交互消息,所述交互消息携带有标识服务器30中的记录是否发生更新的字段,使得客户端根据接收到的交互消息的字段更新本地缓存区的记录。所述交互消息既包括客户端向服务器30发送的消息,还包括服务器30向客户端发送的信息,具体而言:所述交互消息为客户端向服务器30发送的消息时,接收模块31接收客户端发送的第一查询消息,处理模块32判断服务器30中的记录是否发生更新,并控制发送模块33向客户端反馈第一指示消息,所述第一指示消息包括标识服务器30中记录是否发生更新的字段,使得客户端在服务器30中的记录发生更新时清除当前缓存区的记录。在处理模块32判断记录发生更新时,接收模块31进一步接收客户端发送的用以请求更新后的记录的第二查询消息,处理模块32根据所述第二查询消息控制发送模块33向客户端反馈包括更新后的记录的第二指示消息,使得客户端存储更新后的记录,从而自动保持与服务器30之间的数据同步,确保解析记录及时生效。本实施例的第一查询消息和第一指示消息为DNS中服务器30与客户端之间进行域名解析的DNS格式消息,结合表1和表2,通过赋予第一指示消息中头域部分的Opcode字段的取值,例如为2~15中的任一个,利用Opcode字段标识所述第一指示消息的类型,以表示所述第一指示消息为查询服务器30中的记录是否发生更新的消息,其中Opcode字段取值为2时所述第一指示消息与现有的DNS格式消息(DNSRespone)的Opcode字段取值相同,Opcode字段取值为3~15中的任一个时标识所述第一指示消息是否为“DNS记录变更查询消息”。此时头域部分的Z字段仍被使用以传递服务器30中的记录的版本信息从而标识服务器30的记录是否发生更新,例如客户端发送的第一查询消息的Z字段取值为001,若服务器30反馈的第一指示消息中的Z字段取值为002,则表示服务器30中的记录发生更新,客户端需要对第一指示消息中的更新域部分所携带的记录进行更新。并且更新域部分携带的仅仅发生更新之前的记录,而非更新之后的记录。当然,还可以仅利用第一指示消息中头域部分的Z字段标识服务器30中与所述版本信息对应的记录是否发生更新,并在所述记录发生更新时,利用头域部分的CHCOUNT字段标识所述更新域部分中发生更新的记录的个数,此时所述头域部分的Opcode字段与现有的相同,并且所述更新域部分携带的仅仅是发生更新之前的记录,而并非更新之后的记录。所述第二查询消息和所述第二指示消息即为客户端和服务器30之间进行域名解析时的DNSQuery和DNSRespone。所述交互消息为服务器30向客户端发送的消息时,发送模块33向客户端发送第一指示消息,所述第一指示消息包括标识服务器30的记录已经发生更新的第一字段以及标识发生更新的记录的版本信息的第二字段,使得客户端清除当前缓存区中与版本信息对应的记录。接收模块31进一步接收客户端发送的请求更新后的记录的查询消息,处理模块32根据查询消息控制发送模块33向客户端反馈包括更新后的记录的第三指示消息,使得客户端根据第三指示消息将更新后的记录存储于缓存区中。本实施例的第一指示消息为DNS中服务器30与客户端之间进行域名解析的DNS格式消息,结合表1和表2,可以仅利用第一指示消息中头域部分的Z字段标识服务器30中与所述版本信息对应的记录是否发生更新,并在所述记录发生更新时,利用头域部分的CHCOUNT字段标识所述更新域部分中发生更新的记录的个数,此时所述头域部分的Opcode字段与现有的相同,并且所述更新域部分携带的仅仅是发生更新之前的记录,而并非更新之后的记录。当然,还可以通过赋予第一指示消息中头域部分的Opcode字段的取值,例如为2~15中的任一个,利用Opcode字段标识所述第一指示消息的类型,以表示所述第一指示消息为查询服务器30中的记录是否发生更新的消息,其中Opcode字段取值为2时所述第一指示消息与现有的DNS格式消息(DNSRespone)的Opcode字段取值相同,Opcode字段取值为3~15中的任一个时标识所述第一指示消息是否为“DNS记录变更查询消息”。此时头域部分的Z字段仍被使用以传递服务器30中的记录的版本信息从而标识服务器30的记录是否发生更新,并且更新域部分携带的仅仅发生更新之前的记录,而并非更新之后的记录。所述查询消息和所述第三指示消息即为客户端和服务器30之间进行域名解析时的DNSQuery和DNSRespone。本发明进一步提供一种如图4所示的客户端,如图4所示,所述客户端40包括接收模块41、处理模块42及存储模块43、发送模块44,其中,接收模块41和发送模块44分别用于接收和发送服务器与客户端40之间的交互消息,所述交互消息包括标识服务器中的记录是否发生更新的字段,处理模块42用于根据接收模块41接收到的交互消息的字段更新存储模块43的记录。所述交互消息既包括客户端40向服务器发送的消息,还包括服务器向客户端40发送的信息,具体而言:所述交互消息为客户端40向服务器发送的消息时,发送模块44用于向服务器发送第一查询消息,接收模块41接收服务器反馈的第一指示消息,所述第一指示消息包括标识服务器中记录是否发生更新的字段。其中,在处理模块42根据所述第一指示消息判断服务器的记录发生更新时控制存储模块43清除当前的记录,并控制发送模块44进一步向服务器发送用于请求更新后的记录的第二查询消息,并接收服务器反馈的第二指示消息,所述第二指示消息包括更新后的记录,处理模块42用于控制存储模块43存储更新后的记录。本实施例的第一查询消息和第一指示消息为DNS中服务器与客户端40之间进行域名解析的DNS格式消息,结合表1和表2,通过赋予第一指示消息中头域部分的Opcode字段的取值,例如为2~15中的任一个,利用Opcode字段标识所述第一指示消息的类型,以表示所述第一指示消息为查询服务器中的记录是否发生更新的消息,其中Opcode字段取值为2时所述第一指示消息与现有的DNS格式消息(DNSRespone)的Opcode字段取值相同,Opcode字段取值为3~15中的任一个时标识所述第一指示消息是否为“DNS记录变更查询消息”。此时头域部分的Z字段仍被使用以传递服务器中的记录的版本信息从而标识服务器的记录是否发生更新,并且更新域部分携带的仅仅发生更新之前的记录,而并非更新之后的记录。当然,还可以仅利用第一指示消息中头域部分的Z字段标识服务器中与所述版本信息对应的记录是否发生更新,并在所述记录发生更新时,利用头域部分的CHCOUNT字段标识所述更新域部分中发生更新的记录的个数,此时所述头域部分的Opcode字段与现有的相同,并且所述更新域部分携带的仅仅是发生更新之前的记录,而并非更新之后的记录。所述第二查询消息和所述第二指示消息即为客户端40和服务器之间进行域名解析时的DNSQuery和DNSRespone。所述交互消息为服务器向客户端40发送的消息时,接收模块41接收服务器发送的第一指示消息,所述第一指示消息包括标识服务器的记录已经发生更新的第一字段以及标识发生更新的记录的版本信息的第二字段,处理模块42控制存储模块43清除当前与版本信息对应的记录,并控制发送模块44向服务器发送用以请求更新后的记录的查询消息,以及控制接收模块41接收服务器反馈的第三指示消息,所述第三指示消息包括更新后的记录,处理模块42进一步控制存储模块43存储更新后的记录,从而使得客户端40自动保持与服务器之间的数据同步,确保解析记录及时生效。本实施例的第一指示消息为DNS中服务器与客户端40之间进行域名解析的DNS格式消息,结合表1和表2,可以利用第一指示消息中头域部分的Z字段标识服务器中与所述版本信息对应的记录是否发生更新,并在所述记录发生更新时,利用头域部分的CHCOUNT字段标识所述更新域部分中发生更新的记录的个数,此时所述头域部分的Opcode字段与现有的相同,并且所述更新域部分携带的仅仅是发生更新之前的记录,而并非更新之后的记录。当然,还可以通过赋予第一指示消息中头域部分的Opcode字段的取值,例如为2~15中的任一个,利用Opcode字段标识所述第一指示消息的类型,以表示所述第一指示消息为查询服务器中的记录是否发生更新的消息,其中Opcode字段取值为2时所述第一指示消息与现有的DNS格式消息(DNSRespone)的Opcode字段取值相同,Opcode字段取值为3~15中的任一个时标识所述第一指示消息是否为“DNS记录变更查询消息”。此时头域部分的Z字段仍被使用以传递服务器中的记录的版本信息从而标识服务器的记录是否发生更新,并且更新域部分携带的仅仅发生更新之前的记录,而并非更新之后的记录。所述查询消息和所述第三指示消息即为客户端40和服务器之间进行域名解析时的DNSQuery和DNSRespone。在本实施例中,以上所描述的服务器30与客户端40的各个模块结构,对应执行上述各实施例所述的数据同步方法,因此具有与其相同的技术效果。应该理解到,上述服务器30与客户端40的实施方式仅仅是示意性的,所描述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统中,或一些特征可以忽略,或不执行。另外,模块相互之间的耦合或通信连接可以是通过一些接口,也可以是电性或其它的形式。上述各个功能模块作为服务器30与客户端40的组成部分,可以是或者也可以不是物理框,既可以位于一个地方,也可以分布到多个网络单元上,既可以采用软件功能框的形式实现,也可以采用硬件的形式实现,例如图5所示的服务器以及图6所示的客户端。如图5所示,服务器包括接收器51、存储器52、处理器53及总线54、发送器55,接收器51、存储器52、处理器53、发送器55通过总线54连接,其中:接收器51和发送器55分别用于接收和发送服务器与客户端之间的交互消息,所述交互消息携带有标识服务器中的记录是否发生更新的字段。存储器52可以实现为计算机的软盘、U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等的一种或多种,存储有用以实现数据同步的应用程序。处理器53通过调用存储器52中存储的应用程序,执行如下操作:所述交互消息为客户端向服务器发送的消息时,控制接收器51接收客户端发送的第一查询消息,处理器53判断服务器中的记录是否发生更新,并控制发送器55向客户端反馈第一指示消息,所述第一指示消息包括标识服务器中记录是否发生更新的字段,使得客户端在服务器中的记录发生更新时清除当前缓存区的记录。在处理器53判断记录发生更新时,控制接收器51接收客户端发送的用以请求更新后的记录的第二查询消息,处理器53根据所述第二查询消息控制发送器55向客户端反馈包括更新后的记录的第二指示消息,使得客户端存储更新后的记录,从而自动保持与服务器之间的数据同步,确保解析记录及时生效。其中,第一查询消息和第一指示消息为DNS中服务器与客户端之间进行域名解析的DNS格式消息,结合表1和表2,通过赋予第一指示消息中头域部分的Opcode字段的取值,例如为2~15中的任一个,利用Opcode字段标识所述第一指示消息的类型,以表示所述第一指示消息为查询服务器中的记录是否发生更新的消息,其中Opcode字段取值为2时所述第一指示消息与现有的DNS格式消息(DNSRespone)的Opcode字段取值相同,Opcode字段取值为3~15中的任一个时标识所述第一指示消息是否为“DNS记录变更查询消息”。此时头域部分的Z字段仍被使用以传递服务器中的记录的版本信息从而标识服务器的记录是否发生更新,并且更新域部分携带的仅仅发生更新之前的记录,而非更新之后的记录。当然,还可以仅利用第一指示消息中头域部分的Z字段标识服务器中与所述版本信息对应的记录是否发生更新,并在所述记录发生更新时,利用头域部分的CHCOUNT字段标识所述更新域部分中发生更新的记录的个数,此时所述头域部分的Opcode字段与现有的相同,并且所述更新域部分携带的仅仅是发生更新之前的记录,而并非更新之后的记录。所述第二查询消息和所述第二指示消息即为客户端和服务器之间进行域名解析时的DNSQuery和DNSRespone。所述交互消息为服务器向客户端发送的消息时,控制发送器55向客户端发送第一指示消息,所述第一指示消息包括标识服务器的记录已经发生更新的第一字段以及标识发生更新的记录的版本信息的第二字段,使得客户端清除当前缓存区中与版本信息对应的记录。控制接收器51进一步接收客户端发送的请求更新后的记录的查询消息,处理器53根据查询消息控制发送器55向客户端反馈包括更新后的记录的第三指示消息,使得客户端根据第三指示消息将更新后的记录存储于缓存区中。其中,第一指示消息为DNS中服务器与客户端之间进行域名解析的DNS格式消息,结合表1和表2,可以利用第一指示消息中头域部分的Z字段标识服务器中与所述版本信息对应的记录是否发生更新,并在所述记录发生更新时,利用头域部分的CHCOUNT字段标识所述更新域部分中发生更新的记录的个数,此时所述头域部分的Opcode字段与现有的相同,并且所述更新域部分携带的仅仅是发生更新之前的记录,而并非更新之后的记录。当然,还可以通过赋予第一指示消息中头域部分的Opcode字段的取值,例如为2~15中的任一个,利用Opcode字段标识所述第一指示消息的类型,以表示所述第一指示消息为查询服务器中的记录是否发生更新的消息,其中Opcode字段取值为2时所述第一指示消息与现有的DNS格式消息(DNSRespone)的Opcode字段取值相同,Opcode字段取值为3~15中的任一个时标识所述第一指示消息是否为“DNS记录变更查询消息”。此时头域部分的Z字段仍被使用以传递服务器中的记录的版本信息从而标识服务器的记录是否发生更新,并且更新域部分携带的仅仅发生更新之前的记录,而并非更新之后的记录。所述查询消息和所述第二指示消息即为客户端和服务器之间进行域名解析时的DNSQuery和DNSRespone。如图6所示,客户端包括接收器61、存储器62、处理器63及总线64、发送器65,收发器61、存储器62、处理器63、发送器65通过总线64连接,其中:接收器61和发送器65分别用于接收和发送服务器与客户端之间的交互消息,所述交互消息包括标识服务器中的记录是否发生更新的字段。存储器62可以实现为计算机的软盘、U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等的一种或多种,存储有用以实现数据同步的应用程序。处理器63通过调用存储器62中存储的应用程序,执行如下操作:所述交互消息为客户端向服务器发送的消息时,控制发送器65向服务器发送第一查询消息,并控制接收器61接收服务器反馈的第一指示消息,所述第一指示消息包括标识服务器中记录是否发生更新的字段。在处理器63根据所述第一指示消息判断服务器的记录发生更新时控制存储器63清除当前的记录,处理器63控制发送器65进一步向服务器发送用于请求更新后的记录的第二查询消息,并控制接收器61接收服务器反馈的第二指示消息,所述第二指示消息包括更新后的记录,处理器63进一步用于控制存储器62清除当前的记录,并存储更新后的记录。其中,第一查询消息和第一指示消息为DNS中服务器与客户端之间进行域名解析的DNS格式消息,结合表1和表2,通过赋予第一指示消息中头域部分的Opcode字段的取值,例如为2~15中的任一个,利用Opcode字段标识所述第一指示消息的类型,以表示所述第一指示消息为查询服务器中的记录是否发生更新的消息,其中Opcode字段取值为2时所述第一指示消息与现有的DNS格式消息(DNSRespone)的Opcode字段取值相同,Opcode字段取值为3~15中的任一个时标识所述第一指示消息是否为“DNS记录变更查询消息”。此时头域部分的Z字段仍被使用以传递服务器中的记录的版本信息从而标识服务器的记录是否发生更新,并且更新域部分携带的仅仅发生更新之前的记录,而并非更新之后的记录。当然,还可以仅利用第一指示消息中头域部分的Z字段标识服务器中与所述版本信息对应的记录是否发生更新,并在所述记录发生更新时,利用头域部分的CHCOUNT字段标识所述更新域部分中发生更新的记录的个数,此时所述头域部分的Opcode字段与现有的相同,并且所述更新域部分携带的仅仅是发生更新之前的记录,而并非更新之后的记录。所述第二查询消息和所述第二指示消息即为客户端和服务器之间进行域名解析时的DNSQuery和DNSRespone。所述交互消息为服务器向客户端发送的消息时,处理器63控制接收器61接收服务器发送的第一指示消息,所述第一指示消息包括标识服务器的记录已经发生更新的第一字段以及标识发生更新的记录的版本信息的第二字段,处理器63控制存储器62清除当前与版本信息对应的记录,并控制发送器65向服务器发送用以请求更新后的记录的查询消息,以及控制接收器61接收服务器反馈的第三指示消息,所述第三指示消息包括更新后的记录,处理器63进一步控制存储器62存储更新后的记录,从而使得客户端自动保持与服务器之间的数据同步,确保解析记录及时生效。其中,第一指示消息为DNS中服务器与客户端之间进行域名解析的DNS格式消息,结合表1和表2,可以利用第一指示消息中头域部分的Z字段标识服务器中与所述版本信息对应的记录是否发生更新,并在所述记录发生更新时,利用头域部分的CHCOUNT字段标识所述更新域部分中发生更新的记录的个数,此时所述头域部分的Opcode字段与现有的相同,并且所述更新域部分携带的仅仅是发生更新之前的记录,而并非更新之后的记录。当然,还可以通过赋予第一指示消息中头域部分的Opcode字段的取值,例如为2~15中的任一个,利用Opcode字段标识所述第一指示消息的类型,以表示所述第一指示消息为查询服务器中的记录是否发生更新的消息,其中Opcode字段取值为2时所述第一指示消息与现有的DNS格式消息(DNSRespone)的Opcode字段取值相同,Opcode字段取值为3~15中的任一个时标识所述第一指示消息是否为“DNS记录变更查询消息”。此时头域部分的Z字段仍被使用以传递服务器中的记录的版本信息从而标识服务器的记录是否发生更新,并且更新域部分携带的仅仅发生更新之前的记录,而并非更新之后的记录。所述查询消息和所述第二指示消息即为客户端和服务器之间进行域名解析时的DNSQuery和DNSRespone。本领域技术人员可以清楚地了解到,上述服务器与客户端的各个元件的具体工作过程,可参考前述方法实施例中的对应过程,为描述方便和简洁此处不再赘述。各个元件可以单独或集成设置于物理元件中。并且,上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中,即,本发明实施例可以以软件产品的形式体现出来,其包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。再次说明,以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其它相关的
技术领域
,均同理包括在本发明的专利保护范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1