技术领域
[0001] 本申请涉及计算机技术领域,特别是涉及一种域名解析方法、装置、计算机设备、存储介质和计算机程序产品。
相关背景技术
[0002] 随着计算机技术的发展,各种各样的IP(Internet Protocol,互联网协议)地址的数量越来越多,为了便于人们记忆和使用,出现了域名系统,域名系统是将易于人们理解的域名映射到对应的IP地址的系统。域名系统的作用是让用户可以通过更友好的名称来访问互联网上的计算机和服务,而不需要记住复杂的IP地址。
[0003] 目前,当客户端有域名解析需求时,会直接向本地递归服务器发出域名解析请求,如果本地递归服务器无法解析,则会将域名解析请求转发给其他递归服务器,由此层层递归,直到转发至权威服务器,由权威服务器返回域名解析请求对应的IP地址。然而,当前针对域名解析请求进行域名解析的准确性较低。
具体实施方式
[0031] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0032] 本申请实施例提供的域名解析方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。其中,终端102可以在有域名解析需求的情况下生成域名解析请求,并将域名解析请求发送至服务器
104,由服务器104针对域名解析请求展开处理,可选地,除了终端102可以产生并发送域名解析请求,当互联网中存在任意一个计算机设备有域名解析需求时,如客户端服务器有域名解析需求时,它可以向服务器104发出域名解析请求,如果服务器104没有缓存客户端服务器的查询结果,则服务器104可以将域名解析请求转发至更高层次的域名解析服务器进行解析,直到找到包含所需信息的域名解析服务器为止,并将查询结果返回给客户端服务器。在具体实现域名解析请求的过程中,服务器104可以获取终端102发送的域名解析请求,当域名解析请求携带的请求端网络地址,即携带的客户端102的网络地址属于待转换的地址格式,确定请求端网络地址所属的地址线路信息,确定属于地址线路信息的请求端转换地址,请求端转换地址属于适用于域名解析的地址格式,服务器104通过请求端转换地址对域名解析请求中携带的请求端网络地址进行更新,获得更新后的域名解析请求,服务器104将更新后的域名解析请求发送至域名解析服务器,更新后的域名解析请求,用于指示域名解析服务器基于更新后的域名解析请求进行域名解析处理。
[0033] 其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接。其中,服务器104具体可以是本地的DNS(Domain Name System,域名系统)递归服务器(recursive DNS server),它可以通过向其他DNS服务器,如权威服务器(authoritative DNS server)发送域名解析请求来解析域名。
[0034] 其中涉及的云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
[0035] 具体来说,云计算(cloud computing)指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
[0036] 云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
[0037] 在一个实施例中,如图2所示,提供了一种域名解析方法,该方法可以由计算机设备执行,计算机设备可以包括服务器或终端,具体可以由递归服务器执行,在本申请实施例中,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:
[0038] 步骤202,获取域名解析请求。
[0039] 其中,域名解析请求可以是互联网中的任意计算机设备在有域名解析需求的情况下发出的,可以用于请求进行域名解析,通过域名解析可以将域名指向网络中与域名对应的互联网协议地址,使得用户通过域名即可方便地访问互联网上的计算机和服务。域名解析可以包括将域名转换成对计算机更为友好的地址的过程,对计算机更为友好的地址可以是用于对网络中各站点进行标识的地址,具体可以为互联网协议地址,即IP地址。其中,互联网协议地址可以用于对网络中的计算机设备进行标识,连接在网络中每个计算机设备,均可以分配一个互联网协议地址,通过互联网协议地址,可以确定网络中各计算机设备的区别,同时也可以确定各计算机设备之间的联系。
[0040] 互联网协议地址不方便记忆,且不能显示地址组织的名称和性质,域名是与网络上的互联网协议地址相对应的字符型地址,相对互联网协议地址来说,更易于理解和记忆。域名可以用于表征互联网上某一台计算机或计算机组的名称,用于在数据传输时对计算机的电子方位进行标识。域名可以由各国文字的特定字符集、英文字母、数字及连字符等任意组合而成。在对域名进行划分时,可以包括有多种划分方式,域名按语种的不同划分,可以划分为中文域名、英文域名、日文域名和其他语种的域名;按域名所在的域的不同,可以划分为顶级域名、二级域名以及三级域名等;按后缀的不同形式可以划分为商业性的机构或公司(.COM)、非盈利的组织(.ORG)、政府部门(.GOV)以及主要供教育机构使用的(.EDU),具体可以包括大学等院校使用,以及适用于个人注册的通用顶级域名(.name)等。
[0041] 域名和互联网协议地址之间的映射关系是通过DNS(Domain Name System,域名系统)实现的,DNS可以是互联网的一项服务,可以作为将域名和网络协议地址相互映射的一个分布式数据库,在分布式数据库中,对于每一级域名长度的限制是63个字符,域名总长度则可以保持在253个字符内。DNS通过将域名和互联网协议地址相互映射,使客户端可以更方便地访问互联网,而不用去记住能够被计算机设备直接读取的互联网协议地址数串。
[0042] 具体地,服务器可以获取域名解析请求,域名解析请求可以是由互联网中的任一计算机设备在访问互联网上的计算机和服务时发出的。计算机设备在需要进行域名解析时,可以按照预先配置的网络协议,生成DNS报文进行发送,即DNS报文是根据预先配置的网络协议生成的。网络协议具体可以包括ECS(EDNS Client Subnet,DNS的协议扩展)协议、TCP(Transmission Control Protocol,传输控制协议)、SFlow(Sample Flow,高速网络监测)等,如在网络协议是ECS协议时,ECS协议可以允许客户端在域名解析请求中包含有关其子网的信息,ECS协议对于使用内容分发网络和其他需要基于客户端位置进行路由的应用程序非常有用,它可以帮助内容分发网络提供更高效的内容分发服务,并帮助其他应用程序更准确地响应用户请求。在具体实现时,客户端通过与互联网协议地址具有映射关系的域名展开访问,例如,域名解析请求中可以针对域名www.example.com发出域名解析请求,在DNS中,与域名www.example.com具有映射关系的互联网协议地址,即IP地址可以是192.0.2.1;又如,域名解析请求中可以针对域名www.qq.com发出域名解析请求,在DNS中,与域名www.qq.com具有映射关系的互联网协议地址,即IP地址可以是220.181.6.6。
[0043] 步骤204,当域名解析请求携带的请求端网络地址属于待转换的地址格式,确定请求端网络地址所属的地址线路信息。
[0044] 其中,请求端网络地址可以是发出域名解析请求的请求端的网络协议地址,请求端具体可以是网络中各种类型的计算机设备,如可以是服务器或终端。网络协议地址可以为互联网中的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异,网络协议地址具体可以是IP地址(Internet Protocol Address,互联网协议地址)。IP地址主要可以包括IPv6地址(Internet Protocol Version 6,互联网通信协议第六版)、IPv4地址(Internet Protocol Version 4)这两大类。不同的请求端,均可以对应有相应的IP地址。请求端在发送域名解析请求时,其携带的请求端网络地址与请求端所采用的通信协议相关,即域名解析请求中携带的请求端网络地址可以是IPv4地址,也可以是IPv6地址。
[0045] 其中,待转换的地址格式可以包括需要进行格式转换的地址格式,需要进行格式转换的地址格式可以是不适用于进行域名解析的地址格式,具体可以为不能识别或者无法识别准确的地址格式。确定一个请求端转换地址是否需要转换,与实际的请求端转换地址解析端相关,针对有些请求端转换地址解析端,可能IPv6格式的地址是需要进行格式转换的,针对有些请求端转换地址解析端,也有可能IPv4格式的地址是需要进行格式转换的。在具体确定请求端网络地址是否属于待转换的地址格式时,可以结合实际的请求端转换地址解析端、域名解析场景等进行确定。其中,地址线路信息可以是泛指与网络协议地址的归属相关的信息,与网络协议地址的归属相关的信息可以包括网络协议地址所在的地区、网络协议地址所属的运营商等。例如,当与网络协议地址的归属相关的信息为网络协议地址所在的地区、网络协议地址所属的运营商时,地址线路信息可以包括中国广东电线、中国上海联通、中国武汉电信等。除了地区、运营商以外,与网络协议地址的归属相关的信息还可以包括网络协议地址所属的时区、邮编、坐标地理位置等信息,坐标地理位置可以包括网络协议地址的经纬度等。例如,当网络协议地址的归属相关的信息包括网络协议地址所在的时区、坐标地理位置时,地址线路信息可以包括北京时区、经度:‑73.9904,纬度:40.7539;东八区、经度:‑23.4578,纬度:19.8342等。
[0046] 具体地,服务器获取请求端发送的域名解析请求,并对域名解析请求进行解析,获得域名解析请求携带的请求端网络地址,解析得到的请求端网络地址可以是IPv4格式的地址,也可以是IPv6格式的地址。进一步地,服务器可以直接对请求端网络地址进行线路分析,确定请求端网络地址所属的地址线路信息。服务器也可以获取预先设定的存储有地址线路信息和请求端网络地址的关联关系的数据库,结合数据库,确定请求端网络地址所属的地址线路信息。服务器可以获取预先设定的待转换地址格式确定条件,根据待转换地址格式确定条件,确定请求端网络地址是否属于待转换的地址格式,如当请求端网络地址为IPv4格式的地址时,确定该请求端网络地址不属于待转换的地址格式,当请求端网络地址为IPv6格式的地址时,确定该请求端网络地址属于待转换的地址格式。若请求端网络地址属于待转换的地址格式,则服务器可以确定与请求端网络地址的归属相关的信息。其中,服务器在确定域名解析请求携带的请求端网络地址所属的格式时,可以根据请求端网络地址的属性特征进行判断,如根据请求端网络地址的字节长度、字符类型等进行区别,也可以根据请求端网络地址的标识信息进行判断。当根据字节长度进行判断时,可以通过预先设定字节长度阈值,将大于字节长度阈值的请求端地址确定为第一类地址,将小于字节长度阈值的请求端地址确定为第二类地址,第一类地址可以是IPv6格式的地址,第二类地址可以是IPv4格式的地址。
[0047] 在具体实现时,服务器获取到网络中的设备A发送的域名解析请求1以及网络中的设备B发送的域名解析请求2。服务器通过对设备A的域名解析请求1进行解析,获得设备A的请求端网络地址,设备A的请求端网络地址可以是IPv6格式的地址;以及对设备B的域名解析请求2进行解析,获得设备B的请求端网络地址,设备B的请求端网络地址可以是IPv4格式的地址。在设定IPv6格式地址属于待转换的地址格式情况下,服务器可以直接将设备B的域名解析请求2发送至请求端转换地址解析端进行解析处理。而针对设备A的IPv6格式的请求端网络地址,服务器可以确定设备A的请求端网络地址所属的地址线路信息,例如,设备A的请求端网络地址所属的地址线路信息可以是中国武汉电信。
[0048] 步骤206,确定属于地址线路信息的请求端转换地址;请求端转换地址属于适用于域名解析的地址格式。
[0049] 其中,请求端转换地址的地址格式可以是请求端转换地址解析端能够准确识别的地址格式。一个地址是否属于适用于域名解析的请求端网络地址,也与实际的请求端转换地址解析端相关。针对有些请求端转换地址解析端,可能IPv6格式的地址是适用于域名解析的地址格式,则可以将IPv6格式的地址作为请求端转换地址;针对有些请求端转换地址解析端,也有可能IPv4格式的地址是适用于域名解析的地址格式,则可以将IPv4格式的地址作为请求端转换地址。在具体确定某一地址格式是否为属于适用于域名解析的请求端转换地址时,可以结合实际的请求端转换地址解析端、域名解析场景等进行确定。
[0050] 其中,地址线路信息可以与请求端转换地址之间存在相应的关联关系,关联关系具体可以表现为同一个地址线路信息,可以对应有多个请求端转换地址,同一地址线路信息对应的多个请求端网络地址可以是不同格式的,而同一个请求端转换地址,可以只对应一个地址线路信息。例如,同一条地址线路中可以包括多个IP地址段,每一个地址段可以对应有多个地址,如针对中国广东电信线路,可以包括1.0.16.0/24、1.0.17.0/24、1.0.18.0/24等三个IP地址段,在这三个IP地址段中,只要前24位为1.0.16、1.0.17或者1.0.18,后8位为任一数字的IP地址,均可以属于中国广东电信线路。
[0051] 具体地,服务器可以基于地址线路信息,直接确定出与请求端网络地址属于相同地址线路,且适用于域名解析的地址格式的请求端转换地址。在具体实现时,服务器在获取请求端转换地址时,可以根据地址线路信息,查询得到请求端转换地址所对应的请求端转换地址。例如,服务器可以预先针对各类地址线路信息各自对应的请求端转换地址,预先构建相应的信息库,服务器在获取请求端转换地址时,可以根据实际需要从信息库中查询得到。具体服务器可以确定地址线路信息,确定地址线路信息之后,服务器则可以根据地址线路信息,与预先构建的信息库进行匹配,确定请求端转换地址。
[0052] 步骤208,通过请求端转换地址对域名解析请求中携带的请求端网络地址进行更新,获得更新后的域名解析请求。
[0053] 具体地,对域名解析请求中携带的请求端网络地址进行更新可以包括对请求端网络地址进行替换的过程。服务器具体可以采用请求端转换地址对域名解析请求中携带的请求端网络地址进行替换,获得更新后的域名解析请求。在具体应用中,当IPv6地址格式的地址属于待转换的地址格式,IPv4地址格式的地址属于适用于域名解析的地址格式时,若请求端网络地址为IPv4格式的地址,则无需进行替换;若请求端网络地址为IPv6格式的地址,则服务器确定IPv6格式的请求端网络地址所属的地址线路信息,确定与IPv6格式的请求端网络地址属于同一地址线路的IPv4格式的请求端转换地址,并采用IPv4格式的请求端转换地址替换IPv6格式的请求端网络地址,获得更新后的域名解析请求。又如,当IPv4地址格式的地址属于待转换的地址格式时,IPv6地址格式的地址属于适用于域名解析的地址格式时,若请求端网络地址为IPv6格式的地址,则无需进行替换;若请求端网络地址为IPv4格式的地址,则服务器确定IPv4格式的请求端网络地址所属的地址线路信息,并确定与IPv4格式的请求端网络地址属于同一地址线路的IPv6格式的请求端转换地址,并采用IPv6格式的请求端转换地址替换IPV4格式的请求端网络地址,获得更新后的域名解析请求。
[0054] 步骤210,将更新后的域名解析请求发送至域名解析服务器;更新后的域名解析请求,用于指示域名解析服务器基于更新后的域名解析请求进行域名解析处理。
[0055] 其中,域名解析服务器可以是指用于对更新后的域名解析请求进行解析处理,从而获得与更新后的域名解析请求对应的网络协议地址的服务器。域名解析服务器可以为DNS权威服务器(authoritative DNS server),DNS权威服务器也可以是一种DNS服务器,它可以负责维护特定域名下的DNS记录,DNS记录可以包括域名与IP地址的映射关系、邮件服务器的记录、TXT(Plain Text File,纯文本文件)记录等。
[0056] 具体地,服务器在将更新后的域名解析请求发送至域名解析服务器时,若已经预先确定了域名解析服务器的解析服务器地址,则可以按照解析服务器地址直接将域名解析请求转发至域名解析服务器;若本地服务器不明确域名解析服务器的解析服务器地址,则本地服务器可以求助根域名服务器,根域名服务器可以告知本地服务器下一步应当找哪一个顶级域名服务器进行查询,顶级域名服务器负责管理在该顶级域名服务器注册的二级域名,通过顶级域名服务器,则可以确定解析域名服务器的解析服务器地址。
[0057] 在具体实现时,若互联网中的主机需要进行域名解析,例如,域名为m.xyz.com的主机打算发送邮件至互联网中的域名为y.abc.com的其他主机,在此种情况下需要知道主机y.abc.com的IP地址才可完成邮件发送。主机m.abc.com可以先向服务器发送域名解析请求,若需要对域名解析请求进行更新处理,则服务器可以对域名解析请求进行更新,获得更新后的域名解析请求。进一步的,服务器可以采用迭代查询,先向一个根域名服务器查询,根域名服务器可以返回下一次应查询的顶级域名服务器的IP地址。服务器根据顶级域名服务器的IP地址向顶级域名服务器进行查询,顶级域名服务器可以返回下一步应查询的权威服务器的IP地址。服务器可以基于权威服务器的IP地址向权威服务器发送更新后的域名解析请求,权威服务器可以基于更新后的域名解析请求,返回服务器所查询的主机m.abc.com的IP地址。服务器可以将查询得到的主机m.abc.com的IP地址告诉域名为m.xyz.com的主机。
[0058] 在一个具体应用中,如图3所示,通过递归服务器对域名解析请求进行处理,递归服务器一般可以由客户端所在本地的网络接入服务器商提供,如中国移动、中国联通等。本实施例中共涉及到客户端、递归服务器、数据库、根服务器、顶级域名服务器以及权威服务器等5个模块。其中,客户端可以包括互联网中需要进行域名解析的计算机设备,如终端或服务器。递归服务器则是采用递归方式转发客户端的域名解析请求至域名解析服务器,获得域名解析结果,并缓存域名解析结果,以及同时返回域名解析结果给客户端的服务器。数据库中可以存储有与地址相关的数据,如包括网络协议地址与地址线路信息之间关联关系的地址信息数据。根服务器可以是用于管理互联网的主目录,根域名服务器可以存储每个顶级域名的顶级域名服务器的地址信息,顶级域名可以包括教育类的.edu、国家类的.cn、职能类的.com以及非盈利机构类的.org等,如针对域名www.qq.com,递归服务器在向根域名服务器发送查询请求后,根域名服务器可以返回.com所在顶级域名服务器的顶级域名服务器地址。顶级域名服务器可以是负责管理在该顶级域名服务器下注册的二级域名,如针对域名www.qq.com,.com为顶级域名,递归服务器在向顶级域名服务器发送查询请求后,顶级域名服务器可以返回qq.com所在的权威服务器的权威服务器地址。权威服务器可以负责维护某一区域内的域名与IP地址之间的对应关系的服务器,权威服务器可以用于对域名进行解析,获得与之对应的IP地址返回至递归服务器,并最终返回给终端。
[0059] 在具体进行域名解析的过程中,当客户端存在有域名解析需求时,可以基于网络协议,如ECS协议生成域名解析请求,并将域名解析请求发送至递归服务器。其中,域名解析请求中可以携带客户端自身的IP地址以及需要查询的域名。递归服务器在获取域名解析请求后,可以先查询自身缓存中是否存储该域名解析请求中携带的域名对应的域名解析结果,例如,当服务器接收到针对域名www.qq.com的域名解析请求时,可以先查询自身缓存中是否存在有与域名www.qq.com对应的IP地址,若存在,则递归服务器可以直接返回域名解析结果,并解释本次域名解析过程。
[0060] 当递归服务器确定自身缓存中未存储与该域名解析请求中携带的域名对应的域名解析结果时,可以对域名解析请求进行解析,获得域名解析请求中携带的客户端的网络协议地址,并结合网络协议地址的特征,分析得到网络协议地址是否属于待转换的地址格式。本实施例中,若客户端的网络协议地址为IPv6格式的地址时,确定为待转换的地址格式。在客户端的网络协议地址为IPv6格式的网络协议地址时,递归服务器可以向数据库发送查询请求,查询IPv6格式的客户端的网络协议地址所属的地址线路信息,并确定与IPv6格式的客户端的网络协议地址属于同一地址线路的IPv4格式的客户端转换地址,采用IPv4格式的客户端转换地址替换IPv6格式的客户端的网络协议地址,获得更新后的域名解析请求。其中,数据库可以是存储在云端的数据库,也可以为递归服务器本地数据库。
[0061] 递归服务器基于获得的更新后的域名解析请求,可以采用迭代查询,通过转发域名解析请求,获得域名解析结果。其中,递归服务器可以先向一个根域名服务器查询顶级域名服务器的顶级域名服务器地址,根域名服务器可以结合域名解析请求中的域名信息,返回给递归服务器相关的顶级域名服务器的IP地址。递归服务器根据顶级域名服务器的IP地址访问顶级域名服务器,顶级域名服务器可以结合域名解析请求的域名信息,反馈递归服务器下一步应查询的权威服务器的IP地址。递归服务器根据权威服务器的IP地址向权威服务器发送域名解析请求,权威服务器可以结合域名解析请求中的客户端地址、域名进行解析处理,获得域名解析结果。其中,权威服务器在具体根据客户端地址、域名进行解析处理时,可以判断客户端地址的归属,然后根据客户端地址对应的地址信息库,查找与客户端地址对应的地址线路信息,如包括国家、省份以及运营商等归属信息,从而确定应该给客户端响应怎样的IP地址,对于使用CDN(Content Delivery Network,内容分发网络)和其他需要基于客户端位置进行路由的应用程序非常有用,客户端地址可以帮助CDN提供更高效的内容分发服务,并帮助其他应用程序更准确地响应用户请求,结合客户端地址,权威服务器最终可以返回与域名最匹配的资源记录。
[0062] 权威服务器将解析结果反馈给递归服务器,递归服务器最后把解析结果告诉客户端。其中,针对网络协议地址不属于待转换的地址格式的情况图中未示出,在网络协议地址不属于待转换的地址格式时,递归服务器可以直接向根域名服务器、顶级域名服务器进行查询,找到权威服务器,并将域名解析请求发送至权威服务器,由权威服务器进行域名解析,获得域名解析结果。
[0063] 上述域名解析方法中,获取域名解析请求,当域名解析请求携带的请求端网络地址属于待转换的地址格式,确定请求端网络地址所属的地址线路信息,确定属于地址线路信息且地址格式适用于域名解析的请求端转换地址,通过请求端转换地址对域名解析请求中携带的请求端网络地址进行更新,获得更新后的域名解析请求,更新后的域名解析请求在向域名解析服务器发送后用于指示域名解析服务器基于更新后的域名解析请求进行域名解析处理。在域名解析过程中,在域名解析请求中携带的请求端网络地址属于待转换的地址格式的情况下,通过请求端网络地址所属的地址线路信息,确定同属于相同地址线路信息且地址格式适用于域名解析的请求端转换地址,并根据请求端转换地址对请求端网络地址进行更新,获得更新后的域名解析请求,通过将地址格式适用于域名解析的请求端转换地址发送至域名解析服务器,有利于域名解析服务器基于适用于域名解析的请求端转换地址进行准确地域名解析处理,从而可以提高域名解析的准确率。
[0064] 在一个实施例中,如图4所示,为确定地址线路信息的步骤,当域名解析请求携带的请求端网络地址属于待转换的地址格式,确定请求端网络地址所属的地址线路信息,包括:
[0065] 步骤402,当域名解析请求携带的请求端网络地址属于待转换的地址格式,获取地址信息库;地址信息库中包括各种网络地址分别所属的地址线路信息。
[0066] 其中,地址信息库可以是包括各种网络地址分别所属的地址线路信息的信息库,网络地址可以是网络协议地址,每一个网络协议地址,均可以对应有相应的地址线路信息。通过地址信息库,服务器可以确定出任意网络地址所属的地址线路信息。地址信息库可以是存储在云端的数据库,也可以是存储在本地的数据库。具体地,服务器在确定请求端网络地址属于待转换的地址格式时,可以从云端或者从服务器的本地缓存中获取地址信息库。
[0067] 步骤404,从地址信息库中查询得到请求端网络地址所属的地址线路信息。
[0068] 具体地,当地址信息库为存储在云端的数据库时,在需要进行地址线路信息查询时,服务器可以先在自身的本地缓存中查询是否存在请求端网络地址所属的地址线路信息,若本地缓存中不存在请求端网络地址所属的地址信息,再从存储于云端中的地址信息库中进行查询,从而得到请求端网络地址所属的地址线路信息。当地址信息库为存储在服务器本地的数据库时,服务器可以先查询地址信息库,若本地的地址信息库中不存在请求端网络地址所属的地址信息时,再从存储在云端的数据库中进行查询,从而得到请求端网络地址所属的地址线路信息。在一个具体应用中,服务器在从地址信息库中查询请求端网络地址的地址线路信息时,可以将请求端网络地址与地址信息库中的网络地址进行匹配,若确定地址信息库中存在有与请求端网络地址匹配的网络地址时,服务器可以将与请求端网络地址匹配的网络地址对应的地址线路信息,确定为请求端网络地址所属的地址线路信息。
[0069] 本实施例中,服务器在域名解析请求携带的请求端网络地址属于待转换的地址格式的情况下,获取地址信息库,并直接查询地址信息库,获得请求端网络地址所属的地址线路信息。通过查询地址信息库的方式确定地址线路信息,不仅在查询速度上具有优势,还提升了确定的地址线路信息的精度,从而从整体上提升了域名解析的准确性。
[0070] 在一个实施例中,地址信息库包括本地地址信息库;域名解析方法还包括:构建本地初始地址信息库;按照地址信息获取周期,从云端地址信息库中获取地址信息数据;基于地址信息数据,对本地初始地址信息库进行更新,得到本地地址信息库。
[0071] 其中,本地地址信息库可以是存储在本地的地址信息库,本地地址信息库具体可以存储在服务器的共享内存中。本地初始地址信息库可以是按照一定的标准建立的地址信息库,由于地址信息数据的迭代更新,因此,可以通过及时的对本地初始地址信息库进行更新,从而获得可以支持域名解析请求的本地地址信息库。其中,对本地初始地址信息库进行更新可以包括直接增加本地地址信息库中的地址信息数据,也可以包括删除不活跃的网络地址及其对应的地址线路信息后再增加地址信息数据,不活跃的网络地址可以包括处于偏远地区的网络地址以及在查询过程中基本不会被匹配到的网络地址等。
[0072] 云端地址信息库中可以是存储在云端的数据库,云端地址信息库中可以包括较为全面的地址信息数据,云端数据库的地址信息数据可以来源于第三方平台,第三方平台可以包括IP地址库、Geo IP地址库(geographic IP,地理位置地址库)等。地址信息数据可以是用于表征网络协议地址与地址线路信息之间的关联关系的数据。地址信息获取周期可以是设定的对云端地址信息库本地初始地址信息库进行更新的周期,地址信息获取周期可以为设定的时间间隔,也可以为设定的时间点,在确定达到地址信息获取周期时,则可以从云端地址信息库中获取地址信息数据,对本地初始地址信息库进行更新,得到本地地址信息库。
[0073] 具体地,服务器可以根据预先设定的信息库构建条件构建本地初始地址信息库,其中,在设定信息库构建条件时,可以结合地址信息库可以支持的数据量大小、地址信息库中需要包括的网络协议地址的地址范围、地址线路信息的类型等进行设定。进一步的,服务器在确定达到地址信息获取周期时,可以从云端地址信息库中获取地址信息数据,并将获得的地址信息数据增加至本地初始地址信息库中,从而对本地初始信息库进行更新,得到本地地址信息库。其中,当地址信息获取周期为按照时间间隔设定时,如时间间隔为48小时,则在上一次更新的时间与当前时间之间的时间间隔为48小时的时候,确定达到地址信息获取周期。当地址信息获取周期为设定的时间点时,如设定的每天的上午9点,则在每一天的时间处于上午9点时,确定达到地址信息获取周期。
[0074] 在一个实施例中,服务器还可以设置有数据字节长度阈值。服务器可以确定本地初始地址信息库的数据量,即本地初始地址信息库中的数据字节长度,并将本地初始地址信息库中的数据字节长度与数据字节长度阈值进行比较,当确定本地初始地址信息库中的数据字节长度大于等于数据字节长度阈值时,表示达到本地初始地址信息库更新条件,服务器可以结合实际情况对本地初始地址信息库中的地址信息数据进行删减,获得更新后的本地地址信息库,从而可以及时的释放本地地址信息库的资源,优化了信息库的存储性能。
[0075] 本实施例中,服务器在确定达到地址信息获取周期时,获取地址信息数据,并根据获得的地址信息数据对构建的本地初始地址信息库进行更新,得到本地地址信息库。通过及时的对本地初始地址信息库进行更新,获得可以支持域名解析请求的本地地址信息库,提升了域名解析的准确性。
[0076] 在一个实施例中,域名解析方法还包括:当地址信息库中存在待修正的网络地址,获取与待修正的网络地址相匹配的地址线路信息;待修正的网络地址与地址信息库中记录的待修正的网络地址所属地址线路信息之间不匹配;在地址信息库中,将与待修正的网络地址相匹配的地址线路信息,更新为待修正的网络地址所属的地址线路信息。
[0077] 其中,当地址信息库中记录的网络地址与地址线路信息不匹配,即网络地址与地址线路信息之间的关联关系存在错误时,则可以表征地址信息库中存在待修正的网络地址。其中,在确定网络地址与地址线路信息之间的关联关系是否存在错误时,可以是由更高级别的服务器确定的,更高级别的服务器可以是权威服务器,如权威服务器对网络地址进行解析后确定网络地址与地址线路信息之间的关联关系是错误的。在确定网络地址与地址线路信息之间的关联关系是否存在错误时,也可以是结合更可信的数据库中存储的网络地址与地址线路信息之间的关联关系确定的;在确定网络地址与地址线路信息之间的关联关系是否存在错误时,还可以是根据第三方平台的网络资源进行比对后确定的。具体确定地址信息库中记录的网络地址与地址线路信息是否匹配的方式可以结合实际的服务器资源、精度需求等进行适应性设定。
[0078] 具体地,服务器可以预设有网络地址检测周期,在每一次达到网络地址检测周期时,对地址信息库中的网络地址及其关联的地址线路信息进行检测,确定地址信息库中是否存出待修正的网络地址,其中,服务器可以根据第三方平台的网络资源确定地址信息库中是否存在待修正的网络地址。当服务器确定地址信息库中存在网络地址与地址线路信息之间的关联关系存在错误时,可以从更可靠的数据库中重新获取网络地址相匹配的地址线路信息,从而将重新获取的地址线路信息更新为待修正的网络地址所属的地址线路信息。例如,在地址信息库中,存在网络地址1.1.1.1,其关联的地址线路信息为广东广电线路,服务器通过检测,实际上网络地址1.1.1.1关联的地址线路信息应该是广东电信线路,此种情况则可以采用广东电信线路替换掉网络地址1.1.1.1所属的广东广电线路。
[0079] 在一个具体应用中,权威服务器可以对地址信息库下发指令,从而通过指令对地址信息库中的线路信息进行动态调整。例如,IP地址2.2.2.2在地址数据库中被识别为上海电信线路,但权威服务器在域名解析过程中,识别IP地址2.2.2.2的地址线路信息为上海联通线路,则权威服务器可以对地址库下发指令,修正IP地址2.2.2.2所属的地址线路信息,即将IP地址2.2.2.2所属的上海电信线路更新为上海联通线路。
[0080] 本实施例中,服务器在确定地址信息库中的网络地址与地址线路信息之间的关联关系存在错误时,通过获取地址线路信息,及时对待修正的网络地址所属的地址线路信息进行更新,可以保证地址数据库的精度,从而提高域名解析的准确性。
[0081] 在一个实施例中,当域名解析请求携带的请求端网络地址属于待转换的地址格式,确定请求端网络地址所属的地址线路信息,包括:当域名解析请求携带请求端扩展字段,从域名解析请求中获得请求端扩展字段关联的请求端扩展信息;当请求端扩展信息中包括的地址指示信息指示域名解析请求携带的请求端网络地址属于不适用于域名解析的地址格式,确定域名解析请求携带的请求端网络地址所属的地址线路信息。
[0082] 其中,请求端扩展字段可以是在请求端已有字段的基础上新增加的字段,请求端扩展字段中可以存储有额外的域名请求端的地址相关信息,请求端扩展字段可以是基于ECS协议实现的,ECS协议对于使用内容分发网络和其他需要基于客户端位置进行路由的应用程序非常有用,它可以帮助CDN提供更高效的内容分发服务,并帮助其他应用程序更准确地响应用户请求。其中,请求端扩展信息可以是从请求端扩展字段中提取出的信息,请求端扩展信息可以是与域名请求端的地址相关的信息,与域名请求端的地址相关的信息可以包括域名请求端的域名请求端子网信息,域名请求端子网信息可以包括域名请求端的IP地址和子网掩码等,通过域名扩展信息,可以帮助权威服务器更好地确定,应该给域名请求端响应怎样的IP地址,并提高DNS查询的准确性和响应速度。地址指示信息可以是用于确定请求端网络地址是否为属于不适用于域名解析的地址格式的信息,地址指示信息具体可以用于指示域名解析请求是否为基于预设网络协议生成的报文、以及指示域名解析请求中携带的域名请求端地址的格式。
[0083] 其中,请求端已有字段可以包括首部字段、查询区域字段、回答区域字段、授权区域字段等。首部字段可以是每个域名解析请求都携带的字段,首部字段可以用于决定域名解析请求和响应内容的结构,不同的域名解析请求,其携带的首部字段可以存在不同;查询区域字段可以用于显示域名解析请求的问题,查询区域字段可以包括正在被查询的主机名、查询的类型以及查询类等。其中,被查询的主机名可以是要查询的域名,也可以是IP地址,IP地址可以用于反向查询;查询类型可以是域名解析请求的资源类型,在查询类型为A类型的请求下,可以表示由域名获取对应的IP地址。查询类可以是指地址类型,通常为互联网地址,值可以为1。回答区域字段可以包括对域名解析请求的资源记录,资源记录可以包括请求的域名、查询类型、数据长度以及资源数据等信息;授权区域字段可以是记录了包含了域名解析请求中的域名对应的权威服务器的相关信息。
[0084] 具体的,服务器获取域名解析请求,并对域名解析请求进行解析处理,确定域名解析请求中是否包括请求端扩展字段,其中,请求端扩展字段具体可以是指EDNS0(Extension mechanisms for DNS,DNS扩展机制)选项字段,并在域名解析请求携带请求端扩展字段的情况下,从域名解析请求中获得请求端扩展字段关联的请求端扩展信息。进一步地,服务器可以从请求端扩展信息中提取得到地址指示信息,并基于提取得到的地址指示信息,确定请求端网络地址是否为属于不适用于域名解析的地址格式。其中,地址指示信息具体可以是字段值,服务器可以通过字段值,判断域名解析请求是否为基于预设网络协议发送的报文,以及判断域名解析请求携带的请求端网络地址的格式。当服务器确定域名解析请求为基于ECS协议发送的报文,且域名解析请求携带的请求端网络地址的格式为设定的需要进行地址转换的地址格式时,如需要进行地址转换的格式为IPv6格式的地址,则确定请求端网络地址为属于不适用于域名解析的地址格式,并确定域名解析请求携带的请求端网络地址所属的地址线路信息。
[0085] 在具体实现时,服务器可以根据预设标识符,确定是否包含EDNS0选项,预设标识符可以为数字、字母以及特征码等任意可以用于标识作用的标识符号,只要可以区分出扩展字段和已有字段即可。当服务器确定包含EDNS0选项时,可以根据EDNS0选项中的地址指示字段提取得到地址指示信息,其中,地址指示字段可以包括OPTION‑CODE(选择码)字段、FAMILY(地址族)字段。服务器可以通过提取OPTION‑CODE(选择码)字段、FAMILY(地址族)字段的值,作为地址指示信息。具体的,当OPTION‑CODE的值为0x08时,可以表示域名解析请求为包含ECS相关信息的查询报文,当FAMILY字段的值为0x02,可以表示携带的请求端网络地址为IPv6格式。如果域名解析请求中没有EDNS0选项,或者域名解析请求不是包含ECS相关信息的查询报文,或者EDNS0选项中的IP地址不是IPv6格式,服务器可以直接将域名解析请求转发给权威服务器。
[0086] 本实施例中,服务器获得请求端扩展字段关联的请求端扩展信息,通过请求端扩展信息包括的地址指示信息,判定域名解析请求携带的请求端网络地址是否属于待转换的地址格式,能够提高域名解析场景下域名解析的成功率和准确率。
[0087] 在一个实施例中,确定域名解析请求携带的请求端网络地址所属的地址线路信息,包括:从请求端扩展信息中获取请求端地址信息和地址有效位信息;根据请求端地址信息和地址有效位信息获得域名解析请求携带的请求端网络地址,并确定请求端网络地址所属的地址线路信息。
[0088] 其中,请求端地址信息可以包括域名解析请求实际携带的请求端IP地址,例如,域名解析请求实际携带的请求端IP地址可以包括1.1.1.1、ffff:192.168.89.9、2000:0:0:0:0:0:0:1等多种格式的地址。地址有效位信息可以用于描述请求端IP地址的有效位数,针对不同格式的地址,其对应的地址有效位信息可以不同,如针对IPv6格式的地址,其地址的有效位数可以是IPv6地址的左八位,而针对IPv4格式的地址,其地址的有效位数可以是IPv6地址的左24位。
[0089] 具体地,服务器可以对请求端扩展信息进行解析,从而从请求端扩展信息中提取得到请求端地址信息和地址有效位信息,请求端地址信息和地址有效位信息均可以为字段值。通过请求端地址信息和地址有效位信息,可以确定在地址线路信息查询过程中实际使用的请求端网络地址。通过确定查询过程中实际使用的请求端网络地址,一方面可以减少数据量,提升查询效率;另一方面还可以减少无效信息带来的干扰,可以提高查询精度,从而提升了域名解析的准确性。在一个具体应用中,请求端地址信息可以为服务器从address(地址)字段提取得到的字段值,地址有效位信息可以是服务器从SOURCE PREFIX‑LENGTH(响应覆盖的地址的最左边有效位数)字段提取得到的字段值。服务器可以根据EDNS0选项中的ADDRESS字段的字段值、SOURCE PREFIX‑LENGTH字段的字段值,确定查询过程中实际使用的ECS IP,ECS IP是指在ECS协议中包含的请求端的IP地址信息。
[0090] 本实施例中,服务器可以对请求端扩展信息进行解析,从请求端扩展信息中提取得到请求端地址信息和地址有效位信息,并根据请求端地址信息和地址有效位信息确定在地址线路信息查询过程中实际使用的请求端网络地址。不仅可以查询时的数据量,提升查询效率,还可以减少无效信息带来的干扰,提高查询精度,从而提升域名解析的准确性。
[0091] 在一个实施例中,通过请求端转换地址对域名解析请求中携带的请求端网络地址进行更新,获得更新后的域名解析请求,包括:在域名解析请求中,确定携带请求端网络地址的请求端地址字段;通过请求端转换地址,对请求端地址字段的字段内容更新,获得更新后的域名解析请求。
[0092] 其中,请求端地址字段可以是请求端扩展字段中所包括的字段,请求端地址字段中可以包括请求端地址信息,即从请求端地址字段中可以读出请求端地址信息,请求端地址字段的字段内容可以包括请求端网络地址。具体地,服务器可以根据预先设定的请求端地址字段标识,在域名解析请求中确定携带请求端网络地址的请求端地址字段,请求端地址字段具体可以为ADDRESS字段,并进一步结合确定出的请求端转换地址,对ADDRESS字段的字段内容更新,获得更新后的域名解析请求。
[0093] 本实施例中,服务器基于请求端转换地址,对ADDRESS字段的字段内容更新,实现了域名解析请求的更新,获得了更新后的域名解析请求,使得发送给权威服务器的地址是通适用于域名解析的地址格式的地址,可以提高域名解析的准确率。
[0094] 在一个实施例中,通过请求端转换地址,对请求端地址字段的字段内容更新,包括:将请求端地址字段的字段内容更新为请求端转换地址;将域名解析请求中地址指示字段的字段内容更新为指示请求端转换地址的地址格式的字段内容;将域名解析请求中地址有效位字段的字段内容更新为指示请求端转换地址的地址有效位信息的字段内容。
[0095] 其中,地址指示字段的字段内容可以包括地址指示信息,地址有效位字段的字段内容可以包括地址有效位信息。地址指示字段的字段内容、地址有效位字段的字段内容可以是与请求端地址字段的内容息息相关的,当请求端地址字段的字段内容发生变化之后,地址指示字段的字段内容、地址有效位字段的字段内容也可以基于更新后的请求端地址字段的字段内容进行同步更新,以保证请求端扩展字段中针对同一请求端的请求端地址相关信息是准确的。
[0096] 具体地,服务器可以基于请求端转换地址,替换掉请求端地址字段的字段内容,即替换掉请求端地址字段中的请求端网络地址,以对请求端地址字段的字段内容更新。当请求端地址字段中的请求端网络地址被替换之后,域名解析请求中地址指示字段的地址指示信息、地址有效位字段的地址有效位信息均可以被更新为与请求端转换地址相匹配的信息。在一个具体应用中,在请求端网络地址为IPIPv6格式的地址、请求端转换地址为IPv4格式的地址时,服务器可以根据IPv4格式的请求端转换地址,替换掉请求端地址字段的IPv6格式的请求端网络地址,原先与IPv6格式的请求端网络地址相关的地址指示信息、地址有效位信息也会同步更新。例如,在请求端网络地址为IPv6格式时,FAMILY字段的值为0x02,SOURCE PREFIX‑LENGTH字段的有效位数的左八位,而当IPv6格式的请求端网络地址被替换为IPv4格式的请求端转换地址后,FAMILY字段的值可以被更新为0x04,SOURCE PREFIX‑LENGTH字段的有效位数的左24位。
[0097] 本实施例中,服务器可以基于请求端转换地址,替换掉请求端地址字段的字段内容,当请求端地址字段中的请求端网络地址被替换之后,地址指示信息、地址有效位信息均可以被更新为与请求端转换地址相匹配的信息。通过此种更新机制,可以使得后续权威服务器在基于请求端扩展信息进行域名解析处理时,可以通过更新后的地址指示信息、地址有效位信息准确的确定得到请求端转换地址的实际使用地址,提高了域名解析的精度。
[0098] 在一个实施例中,确定属于地址线路信息的请求端转换地址,包括:获取转换地址库;转换地址库中包括属于各地址线路信息的转换地址;从转换地址库中查询得到属于地址线路信息的请求端转换地址。
[0099] 其中,转换地址库可以是指可以包括地址线路信息与转换地址之间的关联关系的数据库,转换地址库可以存储在云端,也可以存储在本地。具体地,服务器在根据转换地址库查询属于地址线路信息的请求端转换地址时,可以将请求端网络地址所属的地址线路信息与转换地址库中的各类地址线路信息进行匹配,若确定出转换地址库中存在有与请求端网络地址所属的地址线路信息匹配的地址线路信息时,服务器可以将与该地址线路信息对应的转换地址,确定为请求端转换地址。
[0100] 本实施例中,服务器在确定属于地址线路信息的请求端转换地址时,获取转换地址库,并直接查询转换地址库,获得请求端转换地址。通过查询转换地址库的方式确定请求端转换地址,不仅在查询速度上具有优势,还提升了确定的请求端转换地址的精度,从而从整体上提升了域名解析的准确性。
[0101] 在一个实施例中,域名解析方法还包括:获取地址信息库,地址信息库中包括各种网络地址分别所属的地址线路信息;根据地址信息库中各种网络地址与所属地址线路信息之间的关联关系,确定属于各种地址线路信息的转换地址;基于属于各种地址线路信息的转换地址,得到转换地址库。
[0102] 其中,转换地址库可以是基于地址信息库得到的地址库,如可以按照预设的地址筛选条件对地址信息库中的网络地址进行筛选,得到转换地址库。转换地址库中存储的为适用于域名解析的地址格式的各网络地址与其分别所属的地址线路信息,若适用于域名解析的地址格式为IPv6格式的网络地址,则转换地址库中存储的可以包括IPv6格式的各网络地址与其分别所属的地址线路信息;若适用于域名解析的地址格式为IPv4格式的网络地址,则转换地址库中存储的可以为IPv4格式的网络地址与其分别所属的地址线路信息。
[0103] 具体地,服务器可以根据预先设定的地址生成条件对地址信息库中的网络地址进行筛选,确定属于各种地址线路信息的转换地址,并基于属于各种地址线路信息的转换地址,得到转换地址库。其中,地址生成条件中可以限定转换地址库中网络地址的地址格式、同一地址线路信息所对应的网络地址的数量以及选取地址线路信息关联的网络地址的选取方式等。在设定地址生成条件时,可以结合实际的域名解析场景、域名解析精度需求等进行设定。
[0104] 在一个具体应用中,服务器可以根据设定地址生成条件,基于本地IP地址信息库,生成IPv4地址集合IPv4地址集合,地址生成条件可以包括:IP地址信息库的每条线路在地址集合中对应一个IPv4地址;信息库的每条线路可能存在多个对应的IPv4地址段,DNS递归服务器随机选取其中一个地址段,将其作为该线路的IPv4地址加入到集合中;地址集合保存在服务器的共享内存中,当本地IP地址信息库调整时,系统也会相应的更新IPv4地址集合。
[0105] 本实施例中,服务器根据地址信息库中各种网络地址与所属地址线路信息之间的关联关系,确定属于各种地址线路信息的转换地址,并基于属于各种地址线路信息的转换地址,得到转换地址库。通过确定出转换地址库,可以精准的确定出与请求端网络地址所属同一线路的请求端转换地址,提升了域名解析准确性。
[0106] 在一个实施例中,域名解析方法还包括:当域名解析请求携带的请求端网络地址不属于待转换的地址格式、或域名解析请求未携带请求端网络地址,将域名解析请求发送至域名解析服务器;域名解析请求,用于指示域名解析服务器基于域名解析请求进行域名解析处理。
[0107] 其中,当请求端网络地址不属于待转换的地址,可以是指请求端网络地址不需要进行格式转换,服务器可以直接将携带有不需要进行格式转换的域名解析请求发送至域名解析服务器,从而指示域名解析服务器基于域名解析请求进行域名解析处理。域名解析请求未携带请求端网络地址可以是指未从域名解析请求中解析得到请求端网络地址的情况,在此种情况下,服务器也可以直接将域名解析请求发送至域名解析服务器,从而指示域名解析服务器基于域名解析请求进行域名解析处理。
[0108] 具体地,服务器在确定域名解析请求携带的请求端网络地址不属于待转换的地址格式、或确定域名解析请求未携带请求端网络地址,可以直接将域名解析请求发送至权威服务器进行处理。在一个具体应用中,针对域名解析请求中未携带请求端网络地址的情况,服务器也可以先确定请求端的请求端网络地址,并在确定请求端的请求端网络地址后,按照ECS协议重新生成报文。其中,若请求端的请求端网络地址为IPv6格式的地址,则服务器可以将PV6格式的地址转换成IPv4格式的地址后添加至报文中,再转发至域名解析服务器中。若请求端的请求端网络地址为IPv4格式的地址,则服务器可以直接将PV4格式的地添加至报文中,转发至域名解析服务器中。
[0109] 本实施例中,服务器在确定域名解析请求携带的请求端网络地址不属于待转换的地址格式、或域名解析请求未携带请求端网络地址,会直接将域名解析请求发送至域名解析服务器进行域名解析处理,可以提升域名解析效率。
[0110] 在一个实施例中,域名解析方法还包括:获取由域名解析服务器返回的域名解析结果;将域名解析结果转发至发出域名解析请求的请求端。
[0111] 具体地,服务器可以将更新后的域名解析请求发送至域名解析服务器,域名解析服务器具体可以为权威服务器。其中,服务器可以根据权威服务器的IP地址向权威服务器发送域名解析请求,权威服务器可以结合域名解析请求中的客户端地址、域名进行解析处理,获得域名解析结果。其中,权威服务器在具体根据请求端转换地址、域名进行解析处理时,可以判断请求端转换地址的归属,然后根据请求端转换地址对应的地址信息库,查找与请求端转换地址对应的地址线路信息,如包括国家、省份以及运营商等归属信息,并最终返回与域名最匹配的资源记录,即与待查询的域名具有映射关系的IP地址,如某一网站的IP地址。服务器在接收到权威服务器返回的域名解析结果时,可以存储域名的域名查询结果,以及将域名解析结果转发至发出域名解析请求的请求端,从而完成域名解析过程,请求端可以基于网站的IP地址访问网站。
[0112] 本实施例中,服务器可以获取由域名解析服务器返回的域名解析结果,并将域名解析结果转发至发出域名解析请求的请求端,从而完整的完成了域名解析。
[0113] 本申请还提供一种应用场景,该应用场景应用上述的域名解析方法。具体地,该域名解析方法在该应用场景的应用如下:
[0114] 在域名解析的场景中,当互联网中的任意计算机设备,如用户终端或者服务器等有域名解析的需求时,则可以向DNS递归服务器发起DNS请求,DNS是指域名系统,它可以将易于人们理解的域名,例如域名www.example.com映射到对应的IP地址,如192.0.2.1中,DNS的作用是让用户可以通过更友好的名称来访问互联网上的计算机和服务,而不需要记住复杂的IP地址。其中,DNS递归服务器是一种DNS服务器,它可以通过向其他DNS服务器转发DNS请求来解析域名,DNS请求即为域名解析请求。在采用DNS递归服务器展开域名解析请求的处理过程中,若存在某一客户端需要解析域名,它可以向本地的DNS递归服务器发出查询请求。如果本地的DNS递归服务器没有缓存该域名解析请求的查询结果,则DNS递归服务器可以向更高层次的DNS服务器,如权威服务器,发送域名解析请求,直到找到包含所需信息的DNS服务器为止,并将域名解析结果返回给该客户端。其中,DNS权威服务器也可以是一种DNS服务器,它负责维护特定域名下的DNS记录,包括域名与IP地址的映射关系、邮件服务器的记录、TXT记录等等。当DNS递归服务器收到查询请求时,如果它不在本地缓存中,则会向DNS权威服务器发出查询请求,以获取域名的DNS记录。
[0115] 当客户端发起DNS解析请求时,如果DNS解析请求的报文中携带有IPv6格式的ECS(EDNS Client Subnet,DNS中的协议扩展)IP,经常会面临解析失败或者解析不准确的问题,在DNS中,ECS IP指的是在ECS协议中包含的客户端的IP地址信息。ECS允许DNS客户端在DNS查询中包含有关其子网的信息。这个子网信息可以帮助DNS服务器更准确地识别和响应DNS查询。当一个DNS客户端向DNS服务器发出查询请求时,ECS协议可以在EDNS0选项字段中包含有关客户端子网的信息,如客户端的IP地址和子网掩码。这个信息可以帮助DNS服务器更好地确定,应该给客户端响应怎样的IP地址,并提高DNS查询的准确性和响应速度。ECS协议对于使用内容分发网络和其他需要基于客户端位置进行路由的应用程序非常有用。它可以帮助内容分发网络提供更高效的内容分发服务,并帮助其他应用程序更准确地响应用户请求。
[0116] 当前DNS的权威服务器在处理解析请求时,通常存在以下两类问题:部分权威服务器仅支持对携带IPv4格式的ECS报文进行处理;相比IPv4地址,IPv6地址的总量更大且使用规模更小,这导致大部分权威服务器没有健全的IPv6地址信息库,无法准确的识别IPv6的线路信息。当前对于已经携带ECS IP的DNS报文,DNS递归服务器在获取解析结果时,会选择直接将DNS报文原样转发给权威服务器,不会对报文的ECS IP进行修改。
[0117] 其中,在当前的域名解析过程中,DNS递归服务器在每次收到客户端的解析请求后,会将与客户IP相同地理位置的IP地址作为ECS地址添加到查询报文中,将修改后的查询报文转发给权威服务器,权威服务器可以通过识别报文中的ECS地址,返回更精确的解析结果,该域名解析过程中没有对已经携带ECS IP的DNS报文进行特殊处理,只是将ECS地址添加到DNS查询报文中用于改善解析质量。
[0118] 针对上述情况,本申请提出了一种适用于IPv6的域名解析方法,该域名解析方法应用在DNS递归服务器上,通过本申请中的DNS递归服务器,能够有效地处理客户端请求中包含IPv6格式的ECS报文,提高该类报文解析的成功率和准确率。
[0119] 本申请提出的域名解析方法,可以应用在域名解析的场景中。如图5所示,当某客户端服务器有域名解析的需求时,该客户端服务器将自身的IPv6地址作为ECS IP,即图5中的240e:xx;xx,以及DNS查询信息填入报文中,然后发送给DNS递归服务器,以获取相应的解析结果。图5中展示了DNS递归服务器在采用本申请所提的域名解析方法前后,处理流程的不同之处:
[0120] 其中,在采用本申请所提出的域名解析方法进行域名解析之前,当DNS递归服务器接收到由客户端服务器发送的报文时,会直接将报文转发至DNS权威服务器。在采用本申请所提出的域名解析方法进行域名解析之后,当DNS递归服务器接收到由客户端服务器发送的报文时,DNS递归服务器会查询ECS IP线路信息,采用同线路的IPv4替换ECS IP,如图5中,DNS递归服务器通过将IPv6格式的240e:xx;xx更换为IPv4格式的1.2.x.x,获得更新后的报文,并将更新后的报文转发至DNS权威服务器。
[0121] 本申请提出的域名解析方法的ECS协议实现流程如图6所示。从图6中可知,DNS递归服务器在启动时,首先可以建立一个本地IP地址信息库以及建立一个IPv4地址集合。具体建立本地IP地址信息库和IPv4地址集合的流程框图如图7所示,其中,IP地址对应的地址线路信息存储在一个云端的数据库中,DNS递归服务器可以通过定时拉取云端的数据库中的内容,存储到服务器的共享内存中,用于构建本地IP地址信息库。其中,云端数据库的初始数据,即IP线路信息可以来源于第三方数据平台,第三方数据平台可以包括IP地址库、Geo IP地址库等。其次,服务器可以根据本地IP地址信息库或者云端的数据库,构建一个IPv4地址集合。DNS递归服务器在根据本地IP地址信息库中的线路列表生成IPv4地址集合时,可以满足以下IPv4地址集合的生成条件:首先,IP地址信息库的每条地址线路在地址集合中对应一个IPv4地址;其次,IP地址信息库的每条地址线路可能存在多个对应的IPv4地址段,DNS递归服务器会随机选取其中一个地址段,将其作为该线路的IPv4地址加入到集合中;最后,IPv4地址集合保存在递归服务器的共享内存中,当本地IP地址信息库调整时,系统也会相应的更新IPv4地址集合。
[0122] 当DNS递归服务器接收到DNS查询报文时,即接收到客户端的域名解析请求时,会判断DNS查询报文中是否包含EDNS0选项,以及EDNS0选项中的IP地址是否为IPv6格式。如果请求报文中没有EDNS0选项,或者EDNS0选项中的IP地址不是IPv6格式,DNS递归服务器会直接将请求报文转发给权威服务器,不做任何修改。如果请求报文中有EDNS0选项,且EDNS0选项中的IP地址是IPv6格式,DNS递归服务器会在本地的IP地址信息库中查询该IPv6地址对应的地址线路信息,然后根据地址线路信息从IPv4地址集合中选择同地址线路的IPv4地址。DNS递归服务器会将请求报文中的EDNS0选项中的IP地址替换为同地址线路的IPv4地址,再将修改后的请求报文转发给权威服务器,并等待返回解析结果。
[0123] 此外,为了保证本地IP地址信息库、IPv4地址集合中线路信息的准确性,允许手动下发指令,对云端数据库中的线路信息进行动态调整。例如IP地址1.1.1.1在数据库中,被识别为广东电信线路,但在解析过程中发现其被权威服务器识别为广东广电线路,那么可以对云端数据库下发指令,修正1.1.1.1所处IP段的线路信息。
[0124] 本申请提出的域名解析方法,DNS递归服务器会对收到的DNS查询报文,按照图8所示的方式进行处理,具体步骤如下:其中,DNS查询报文可以包括首部、查询区域、额外信息等多个字段,递归服务器可以对DNS查询报文中的额外信息部分进行查看,确定是否包含EDNS0选项。其中,额外信息可以包括选择码、有效载荷长度、地址族、查找地址有效位、响应地址有效位以及地址等多个字段。在确定额外信息中包含EDNS0选项的情况下,若DNS递归服务器确定EDNS0选项中的选择码字段,即OPTION‑CODE字段的值为0x08,表示DNS查询报文包含ECS相关信息,若DNS递归服务器确定EDNS0选项中的地址族字段,即FAMILY字段的值为0x02,说明DNS查询报文携带的ECS IP为IPv6格式。
[0125] EDNS0选项中的地址字段,即ADDRESS字段表示其携带的ECS IP,查找地址有效位字段,即SOURCE PREFIX‑LENGTH字段,表示ECS IP的有效位。利用这两个字段,确定查询过程中实际使用的ECS IP。进一步递归服务器可以利用本地IP地址信息库查询ECS IP的地址线路信息,根据地址线路信息从IPv4地址集合中获取同线路的IPv4地址,将其作为新的ECS IP,替换到查询报文EDNS0选项的ADDRESS字段。当ADDRESS字段中的地址被替换之后,FAMILY字段、SOURCE PREFIX‑LENGTH字段等也会随之更新。其中,在采用本地IP地址信息库查询ECS IP的地址线路信息时,如针对IPv6地址240e:3b0::,查询本地IP地址信息库,可以获得240e:3b0::对应的地址线路信息,地址线路信息具体可以包括某国、某省以及某某运营商等。进一步地,DNS递归服务器根据240e:3b0::对应的地址线路信息,查询IPv4地址集合,确定出240e:3b0::对应的地址线路信息属于同线路的IPv4地址,同线路的IPv4地址具体可以为113.96.0.0。应用在本申请提出的域名解析方法中的DNS递归服务器,能够有效地处理客户端请求中包含IPv6格式的ECS IP的DNS报文。在现有技术中,这类报文经常导致DNS解析失败或者不准确,影响用户体验。本申请通过对IPv6格式的ECS IP进行转换和匹配,能够提高该场景下DNS解析的成功率和准确率。
[0126] 针对IPv6的ECS解析场景,本申请提出的域名解析方法,可以在递归服务器上修改用户发送过来的DNS查询报文,使用同线路的IPv4地址替换IPv6地址作为ECS IP。本申请提出的域名解析方法可以有效解决权威服务器不支持IPv6或者对IPv6地址识别不准确的问题,提高域名解析的成功率和准确率。
[0127] 应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0128] 基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的域名解析方法的域名解析装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个域名解析装置实施例中的具体限定可以参见上文中对于域名解析方法的限定,在此不再赘述。
[0129] 在一个实施例中,如图9所示,提供了一种域名解析装置900,包括:请求获取模块902、线路信息确定模块904、转换地址确定模块906、地址更新模块908和请求发送模块910,其中:
[0130] 请求获取模块902,用于获取域名解析请求。
[0131] 线路信息确定模块904,用于当域名解析请求携带的请求端网络地址属于待转换的地址格式,确定请求端网络地址所属的地址线路信息。
[0132] 转换地址确定模块906,用于确定属于地址线路信息的请求端转换地址;请求端转换地址属于适用于域名解析的地址格式。
[0133] 地址更新模块908,用于通过请求端转换地址对域名解析请求中携带的请求端网络地址进行更新,获得更新后的域名解析请求。
[0134] 请求发送模块910,用于将更新后的域名解析请求发送至域名解析服务器;更新后的域名解析请求,用于指示域名解析服务器基于更新后的域名解析请求进行域名解析处理。
[0135] 在一个实施例中,线路信息确定模块904,还用于当域名解析请求携带的请求端网络地址属于待转换的地址格式,获取地址信息库;地址信息库中包括各种网络地址分别所属的地址线路信息;从地址信息库中查询得到请求端网络地址所属的地址线路信息。
[0136] 在一个实施例中,地址信息库包括本地地址信息库;线路信息确定模块904包括地址信息库构建模块;地址信息库构建模块,用于构建本地初始地址信息库;按照地址信息获取周期,从云端地址信息库中获取地址信息数据;基于地址信息数据,对本地初始地址信息库进行更新,得到本地地址信息库。
[0137] 在一个实施例中,域名解析装置还包括地址线路信息更新模块;地址线路信息更新模块,用于当地址信息库中存在待修正的网络地址,获取与待修正的网络地址相匹配的地址线路信息;待修正的网络地址与地址信息库中记录的待修正的网络地址所属地址线路信息之间不匹配;在地址信息库中,将与待修正的网络地址相匹配的地址线路信息,更新为待修正的网络地址所属的地址线路信息。
[0138] 在一个实施例中,线路信息确定模块904,还用于当域名解析请求携带请求端扩展字段,从域名解析请求中获得请求端扩展字段关联的请求端扩展信息;当请求端扩展信息中包括的地址指示信息指示域名解析请求携带的请求端网络地址属于不适用于域名解析的地址格式,确定域名解析请求携带的请求端网络地址所属的地址线路信息。
[0139] 在一个实施例中,线路信息确定模块904,还用于从请求端扩展信息中获取请求端地址信息和地址有效位信息;根据请求端地址信息和地址有效位信息获得域名解析请求携带的请求端网络地址,并确定请求端网络地址所属的地址线路信息。
[0140] 在一个实施例中,地址更新模块908,还用于在域名解析请求中,确定携带请求端网络地址的请求端地址字段;通过请求端转换地址,对请求端地址字段的字段内容更新,获得更新后的域名解析请求。
[0141] 在一个实施例中,地址更新模块908,还用于将请求端地址字段的字段内容更新为请求端转换地址;将域名解析请求中地址指示字段的字段内容更新为指示请求端转换地址的地址格式的字段内容;将域名解析请求中地址有效位字段的字段内容更新为指示请求端转换地址的地址有效位信息的字段内容。
[0142] 在一个实施例中,转换地址确定模块906,还用于获取转换地址库;转换地址库中包括属于各地址线路信息的转换地址;从转换地址库中查询得到属于地址线路信息的请求端转换地址。
[0143] 在一个实施例中,域名解析装置还包括转换地址库构建模块;转换地址库构建模块,用于获取地址信息库,地址信息库中包括各种网络地址分别所属的地址线路信息;根据地址信息库中各种网络地址与所属地址线路信息之间的关联关系,确定属于各种地址线路信息的转换地址;基于属于各种地址线路信息的转换地址,得到转换地址库。
[0144] 在一个实施例中,请求发送模块910,还用于当域名解析请求携带的请求端网络地址不属于待转换的地址格式、或域名解析请求未携带请求端网络地址,将域名解析请求发送至域名解析服务器;域名解析请求,用于指示域名解析服务器基于域名解析请求进行域名解析处理。
[0145] 在一个实施例中,域名解析装置还包括解析结果转发模块;解析结果转发模块,用于获取由域名解析服务器返回的域名解析结果;将域名解析结果转发至发出域名解析请求的请求端。
[0146] 上述域名解析装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0147] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器或终端,其内部结构图可以如图10所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储用于域名解析的数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种域名解析方法。
[0148] 本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0149] 在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
[0150] 在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0151] 在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0152] 需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
[0153] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
[0154] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0155] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。