一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

DNS报文解析改进方法、装置、改进设备及存储介质与流程

2022-11-23 09:38:06 来源:中国专利 TAG:

dns报文解析改进方法、装置、改进设备及存储介质
技术领域
1.本发明实施例涉及dns报文解析领域,尤其涉及一种dns报文解析改进方法、装置、改进设备及存储介质。


背景技术:

2.随着互联网的发展,用户对网页浏览请求量越来越多,对dns报文解析系统的处理效率要求也越来越高。目前的dns报文解析系统,例如unbound域名解析软件采用多线程架构,为了保证线程安全,多个线程在读写内存中的全局缓存记录数据时,需要通过加锁的方式解决全局变量占用的问题,保证同一时间某个全局变量只有一个线程在访问。
3.但是,线程会因为竞争不到锁而被挂起,等锁被释放后才被恢复,在这个过程中加解锁和线程的切换存在很大的开销,随着用户请求量的增加,软件每秒处理请求次数(queries-per-second,qps)很快出现瓶颈,通常为350万~400万qps,导致dns报文解析的处理效率低的问题。


技术实现要素:

4.鉴于此,为解决上述dns报文解析的处理效率低的技术问题,本发明实施例提供一种dns报文解析改进方法、装置、改进设备及存储介质。
5.第一方面,本发明实施例提供一种dns报文解析改进方法,包括:
6.获取第一设备提供的进程以及所述进程对应的监听端口,所述监听端口对应设置有第一监听端口号;
7.在接收到第二设备发送的dns报文的解析请求时,通过第三设备将所述dns报文中的第二监听端口号更新为所述第一监听端口号,得到携带有所述第一监听端口号的所述dns报文,所述第二监听端口号为所述第一设备的端口对应的默认端口号;
8.将携带有所述第一监听端口号的所述dns报文发送至所述第一设备对应的所述进程,以使所述第一设备返回所述dns报文对应的应答报文,所述应答报文携带有所述第一监听端口号;
9.将所述应答报文中的所述第一监听端口号更新为所述第二监听端口号,得到携带有所述第二监听端口号的所述应答报文;
10.将携带有所述第二监听端口号的所述应答报文发送给所述第二设备。
11.在一个可能的实施方式中,所述方法还包括:
12.通过所述第一设备创建多个进程,每个所述进程中设置有相同的内存数据;
13.根据每个所述进程创建对应的监听端口,得到多个所述进程的多个所述监控端口。
14.在一个可能的实施方式中,所述方法还包括:
15.在接收到所述解析请求时,获取所述dns报文对应的五元组信息;
16.根据所述五元组信息,对所述dns报文进行负载均衡,将所述dns报文分配至指定
的目标进程。
17.在一个可能的实施方式中,所述方法还包括:
18.根据所述第一监听端口号对应的dns报文,将dns报文负载到对应的进程,所述dns报文的目的端口对应的端口号由所述第二监听端口号替换为所述第一监听端口号;
19.通过所述第一监听端口号对应的所述进程对所述dns报文进行解析处理,接收由所述第一设备发送的携带有所述第一监听端口号的所述dns报文对应的应答报文;
20.将所述应答报文的源ip由第二ip替换为第一ip,目的ip由第一ip替换为第二ip;
21.将所述应答报文的源端口对应的端口号由第二端口号替换为所述第一监听端口号,所述应答报文的目的端口对应的端口号由所述第一监听端口替换为所述第二端口号,所述第一ip为所述第一设备的ip,所述第二ip为所述第二设备的ip,所述第二端口号为所述第二设备的端口对应的端口号。
22.在一个可能的实施方式中,所述将携带有所述第二监听端口号的所述应答报文发送给所述第二设备,包括:
23.对所述应答报文的源端口对应的端口号由所述第一监听端口号替换为所述第二监听端口号,得到携带有所述第二监听端口号的所述应答报文;
24.将替换后的所述应答报文执行发送至所述第二设备的步骤。
25.第二方面,本发明实施例提供一种dns报文解析改进装置,包括:
26.获取模块,用于获取第一设备提供的进程以及所述进程对应的监听端口,所述监听端口对应设置有第一监听端口号;
27.更新模块,用于在接收到第二设备发送的dns报文的解析请求时,通过第三设备将所述dns报文中的第二监听端口号更新为所述第一监听端口号,得到携带有所述第一监听端口号的所述dns报文,所述第二监听端口号为所述第一设备的端口对应的默认端口号;
28.应答模块,将携带有所述第一监听端口号的所述dns报文发送至所述第一设备对应的所述进程,以使所述第一设备返回所述dns报文对应的应答报文,所述应答报文携带有所述第一监听端口号;
29.其中,所述更新模块,还用于将所述应答报文中的所述第一监听端口号更新为所述第二监听端口号,得到携带有所述第二监听端口号的所述应答报文;
30.发送模块,用于将携带有所述第二监听端口号的所述应答报文发送给所述第二设备。
31.第三方面,本发明实施例提供一种改进设备,其特征在于,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的dns报文解析改进程序,以实现第一方面中任一所述的dns报文解析改进方法。
32.第四方面,本发明实施例提供一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面中任一所述的dns报文解析改进方法。
33.本发明实施例提供的dns报文解析改进方法、装置、改进设备及存储介质,通过获取第一设备提供的进程以及进程对应的监听端口,监听端口对应设置有第一监听端口号;得到带有第一监听端口的进程;在接收到第二设备发送的dns报文的解析请求时,通过第三设备将dns报文中的第二监听端口号更新为第一监听端口号,得到携带有第一监听端口号
的dns报文,第二监听端口号为第一设备的端口对应的默认端口号;通过修改dns报文的端口对应的端口号,得到携带有第一监听端口号的dns报文;将携带有第一监听端口号的dns报文发送至第一设备对应的进程,以使第一设备返回dns报文对应的应答报文,应答报文携带有第一监听端口号;通过第一设备找到与第一监听端口号匹配的进程,并对dns报文进行解析处理,得到对应的应答报文;将应答报文中的第一监听端口号更新为第二监听端口号,得到携带有第二监听端口号的应答报文;在获得的应答报文对应的端口号修改成原始的第二监听端口号,还原dns报文的解析处理后对应的应答报文的端口号;将携带有第二监听端口号的应答报文发送给第二设备,经过第三设备将dns报文的解析结果对应的应付报文发送至第二设备,反馈对应的dns报文的解析结果,完成对dns报文的解析过程。由本方案,可以实现提高dns报文解析的处理效率的效果。
附图说明
34.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
35.图1为相关技术中的一种dns报文解析的场景图;
36.图2为本发明实施例提供的一种dns报文解析改进方法的流程示意图;
37.图3为本发明实施例提供的另一种dns报文解析改进方法的流程示意图;
38.图4为本发明实施例提供的再一种dns报文解析改进方法的交互示意图;
39.图5为本发明实施例提供的一种dns报文解析改进装置的结构示意图;
40.图6为本发明实施例提供的一种改进设备的结构示意图。
具体实施方式
41.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
42.本发明实施例中的用语“包括”和“具有”用以表示开放式的包括在内的意思,并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”和“第二”等仅作为标记使用,不是对其对象的数量限制。此外,附图中的不同元件和区域只是示意性示出,因此本发明不限于附图中示出的尺寸或距离。
43.域名系统(domain name system,dns),简单理解就是解析器、域名服务器的组合。事实上网站域名只是一个ip地址,dns就是存储了各种ip地址,然后通过域名定位到ip地址来进行连接通信。而dns报文解析的过程就是获取ip地址的过程,通过客户端(一般指浏览器、运营商)构建dns查询请求,依次通过传输层、网络层、数据链路层等封装后传送到dns服务器端,客户端(一般指浏览器、运营商)接收到dns响应消息,完成dns报文的解析过程。
44.用户数据报协议(user datagram protocol,udp),是开放式系统互联(open system interconnection,osi)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,ietf rfc 768是udp的正式规范。在处理dns报文解析问题上一般采用的是udp协议的dns报文解析。
45.进程(process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
46.线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在unix system v及sunos中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
47.图1为相关技术中的一种dns报文解析的场景图。根据图1提供的示图,dns报文解析过程包括:客户端11和dns报文解析系统12。
48.在一个应用场景中,通过客户端11发送udp协议的dns报文的解析请求,dns报文解析系统12接收到解析请求。根据dns报文解析系统12的多线程架构和一个线程锁的结构,多个线程同一时间内只有一个线程获得线程锁才能工作,通过dns报文解析系统12分配系统内部线程,在线程获得线程锁的基础上对解析请求进行处理。通过线程处理得到相应的dns报文的解析结果,并反馈给客户端11,实现dns报文的解析处理。
49.但是,在解析过程中,线程会因为竞争不到线程锁而被挂起,等待被释放后才被恢复处理请求权限,这样降低了dns报文解析系统12的处理效率。
50.对此,本发明实施例提出一种dns报文解析改进方法,通过在dns报文解析系统中创建多进程的架构的基础上,根据内核模块修改进程中对应的端口号,分配对应的dns报文的处理进程,完成dns报文的解析处理,实现了提高dns报文解析的处理效率的效果。下面将结合示例,对本发明进行详细说明。下面的具体实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不在赘述。
51.为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
52.图2为本发明实施例提供的一种dns报文解析改进方法的流程示意图。本发明实施例用以说明dns报文解析改进方法的具体实现,但具体实现步骤只表示一种可能的实现方式,而不是全部的实现方式。根据图2提供的示图,dns报文解析改进方法具体包括:
53.s201、获取第一设备提供的进程以及进程对应的监听端口,监听端口对应设置有第一监听端口号。
54.本发明实施例提供的一种dns报文解析改进方法的执行主体是第三设备,可以是dns报文解析系统中的内核模块。第一设备可以理解为dns报文解析系统中进行解析处理的模块,可以是但不限于是本地dns服务器,还可以是根域服务器、一级域名服务器或权威dns服务器。在第一设备中存在进程和进程对应的监听端口。
55.其中,监听端口可以理解为第一设备中的进程的对应入口,用于分配对应的dns报文进行解析。
56.进一步地,通过获取第一设备中的进程和对应的监听端口,得到dns报文解析系统中的进程和对应的监听端口,并将监听端口标记为指定的第一监听端口号,用于区分其他进程中对应的监听端口。
57.s202、在接收到第二设备发送的dns报文的解析请求时,通过第三设备将dns报文中的第二监听端口号更新为第一监听端口号,得到携带有第一监听端口号的dns报文,第二监听端口号为第一设备的端口对应的默认端口号。
58.这里说的默认端口号可以理解为在一种协议下的一种固定的端口号,可以是udp协议下的默认端口号53,或者tcp协议下的默认端口号80。这里说的第二监听端口号可以理解为是第一设备中进程对应的默认端口号。
59.其中,第二设备可以理解为客户端,用于发出dns报文的解析请求。这里所说的客户端可以是但不限于是用户浏览器和本地dns服务器。
60.dns报文中含有源端口和目的端口,用于区分当前发送解析请求的设备和接收解析请求的设备。在客户端向dns服务器模块发送dns报文的解析请求时,dns报文的源端口为客户端的端口,dns报文的目的端口为dns服务器模块对应的端口。
61.进一步地,在接收到客户端发送的dns报文解析请求后,通过在dns报文解析系统中的内核模块,将dns报文的目的端口对应的端口号修改成第一监听端口号。
62.s203、将携带有第一监听端口号的dns报文发送至第一设备对应的进程,以使第一设备返回dns报文对应的应答报文,应答报文携带有第一监听端口号。
63.其中,应答报文可以理解为经过解析处理得到的dns报文的解析结果。
64.进一步地,通过将带有第一监听端口号的dns报文发送给第一设备,在第一设备中的找到与第一监听端口号相匹配的进程,在对应的进程中,对dns报文进行解析处理,得到表征解析结果的应答报文。此时的应答报文对应的端口号为第一监听端口号。
65.dns报文通过第一监听端口号作为引导,分配到第一设备中指定的进程中,实现对dns报文的解析处理。
66.s204、将应答报文中的第一监听端口号更新为第二监听端口号,得到携带有第二监听端口号的应答报文。
67.进一步地,在获得携带有第一监听端口号的应答报文后,对应答报文的第一监听端口号进行修改,修改成携带有第二监听端口号的应答报文,进而得到还原后的应答报文。
68.s205、将携带有第二监听端口号的应答报文发送给第二设备。
69.在本发明实施例中,获得携带有第二监听端口号的应答报文,dns报文解析系统将得到的默认端口号对应的应答报文作为dns报文解析的结果发送出去,通过表征dns报文解析系统中的内核模块的第三设备发送给表征外部客户端的第二设备,第二设备接收到解析处理后对应的应答报文,完成dns报文的解析处理。实现了提高dns报文解析的处理效率的效果。
70.本发明实施例提供的dns报文解析改进方法,通过获取第一设备提供的进程以及进程对应的监听端口,监听端口对应设置有第一监听端口号;得到带有第一监听端口的进程;在接收到第二设备发送的dns报文的解析请求时,通过第三设备将dns报文中的第二监听端口号更新为第一监听端口号,得到携带有第一监听端口号的dns报文,第二监听端口号为第一设备的端口对应的默认端口号;通过修改dns报文的端口对应的端口号,得到携带有第一监听端口号的dns报文;将携带有第一监听端口号的dns报文发送至第一设备对应的进程,以使第一设备返回dns报文对应的应答报文,应答报文携带有第一监听端口号;通过第一设备找到与第一监听端口号匹配的进程,并对dns报文进行解析处理,得到对应的应答报
文;将应答报文中的第一监听端口号更新为第二监听端口号,得到携带有第二监听端口号的应答报文;在获得的应答报文对应的端口号修改成原始的第二监听端口号,还原dns报文的解析处理后对应的应答报文的端口号;将携带有第二监听端口号的应答报文发送给第二设备,经过第三设备将dns报文的解析结果对应的应付报文发送至第二设备,反馈对应的dns报文的解析结果,完成对dns报文的解析过程。利用多进程架构,通过内核模块修改dns报文的监听端口号分配不同的进程,提高dns报文的解析速度,实现了提高dns报文解析的处理效率的效果。
71.图3为本发明实施例提供的另一种dns报文解析改进方法的流程示意图。该dns报文解析改进方法是在上一种dns报文解析改进方法的基础上进行说明的。根据图3所示,dns报文解析改进方法具体还包括:
72.s301、通过第一设备创建多个进程,每个进程中设置有相同的内存数据。
73.这里说的第一设备可以理解为dns报文解析系统中的dns服务器模块,用于dns报文的解析处理。内存数据可以理解为dns报文解析系统中的缓存记录数据,dns报文解析系统将每一次的解析结果都存储起来,作为下一次dns报文查询的参考依据,在获得下一次dns报文的查询请求时,先从缓存记录数据中进行查询,如果缓存记录数据中能获得dns报文的查询结果,则将得到的查询结果作为dns报文的解析结果直接反馈给外部客户端,完成dns报文的解析过程。
74.在本发明实施例中提供的dns报文的解析改进方法的执行主体是dns报文解析系统中的内核模块。在dns报文解析系统中设置有内核模块和dns服务器模块。内核模块用于接收外部客户端发送来的dns报文的解析请求,并将dns报文的解析请求分配给dns报文解析系统中的dns服务器模块,通过dns服务器对dns报文进行解析处理。
75.可选地,在第一设备中创建多个进程,进程的个数受到软件系统cpu的限制。进程个数和cup总数之间的关系可以是:
76.进程个数≤cpu总数-2
77.其中,2代表软件系统中的母进程占用一个cpu,操作系统占用一个cpu。
78.理论上,进程和cpu相互匹配,每个进程占用一个cpu。实际情况还要和服务器的内存大小、网卡队列数量有关。一个网卡队列对应一个cpu,如果网卡队列少于cpu个数,则进程个数也会小于等于网卡队列数。每个进程分配的内存大小根据实际业务量、实际工作常见决定。
79.进一步地,通过表征第一设备的dns服务器创建多个进程,每个进程携带有相同的内存数据。
80.s302、根据每个进程创建对应的监听端口,得到多个进程的多个监控端口。
81.其中,监听端口可以理解为每个进程的标记指针,用于dns报文解析系统通过监听端口获得对应的进程。
82.进一步地,在第一设备中创建的进程的基础上,根据每个进程创建对应的监听端口,得到多进程架构下的多个监听端口。
83.s303、获取第一设备提供的进程以及进程对应的监听端口,监听端口对应设置有第一监听端口号。
84.第一监听端口号可以理解为区别每个进程的端口做的标记性端口,用于区别不同
的进程。
85.进一步地,通过第一设备创建的进程和进程对应的监听端口,为了区分不同的进程和不同的监听端口,将进程和对应的监听端口设置成不同标号的进程和对应的监听端口。为了区别udp协议下的dns报文的解析请求包含的默认端口号,将监听端口对应的端口号设置为第一监听端口号。
86.可选地,在dns报文解析系统的多进程架构中,在udp协议下的默认端口号为53,在tcp协议下的默认端口号为80。
87.在一种可能的示例场景中,dns报文解析系统中的dns服务器模块中创建有多个进程,为了便于系统调用,可以设定但不限于将进程设定为n个进程,分别标记为进程1、进程2、进程3、进程4、

、进程n。同样地,为了区别udp协议下默认端口号为53,解决高并发请求的情况,将每个进程对应的监听端口设置为监听54端口、监听55端口、监听56端口、监听57端口、

、监听53 n端口。这里的监听端口对应的端口号不限于是从54开始设定,可以根据需求和端口总数随意设定。这里说的端口号和进程编号的设定不做具体限定,均在本发明的保护范围内。具体信息参考表1内容:
[0088][0089]
由此,可以获得每个进程对应的监听端口号,根据指定的监听端口对应的端口号获取对应的进程。
[0090]
s304、在接收到解析请求时,获取dns报文对应的五元组信息。
[0091]
其中,五元组信息可以理解为dns报文的源ip、源端口、目的ip、目的端口和传输层协议信息。
[0092]
可选地,dns报文中携带两个ip,一个是源ip,一个目的ip,同时携带有两个端口,一个是源端口,一个是目的端口,用于区分dns报文解析过程中的解析请求端和解析处理端。当客户端发出dns报文的解析请求时,也可以理解为客户端发出域名查询请求时,此时dns报文的源ip就是客户端的ip,dns报文的源端口就是客户端的端口。客户端将解析请求发送至dns报文解析系统中的dns服务器模块,请求解析,此时dns服务器模块的ip就会作为dns报文的目的ip,dns服务器模块对应的端口就作为dns报文的目的端口。当dns服务器模块获取到解析结果时,会将表征域名信息的ip地址反馈给客户端,完成dns报文的解析。
[0093]
进一步地,在dns报文解析系统中的内核模块接收到解析请求时,同时获取到dns报文的源ip、源端口、目的ip、目的端口和传输层协议信息。
[0094]
可选地,在dns报文解析系统的多进程架构中,在udp协议下的端口为53作为dns报文的目的端口,在tcp协议下的端口为80作为dns报文的目的端口。
[0095]
s305、根据五元组信息,对dns报文进行负载均衡,将dns报文分配至指定的目标进
程。
[0096]
负载均衡(load balance)就是分摊到多个操作单元上进行执行,例如web服务器、ftp服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。负载均衡建立在现有网络结构之上,提供一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
[0097]
进一步地,根据第三设备获得的五元组信息,对dns报文进行负载均衡。进行负载均衡的依据可以是目前进程的空闲区域,或者是根据代码程序的规则,顺序分配,当配分的进程处理工作状态时,设定等待处理,等待旧的进程处理完成后,在针对新分配的dns报文进行处理。
[0098]
在一种可能的示例场景中,根据dns报文解析系统获得的五元组信息,得到dns报文的源ip、源端口、目的ip、目的端口和传输层协议信息。本发明是实施例提供一种udp协议下的dns报文的解析请求,这就表征dns报文的目的端口号为53。在获得dns报文的解析请求后,dns报文解析系统中的内核模块对dns报文进行负载均衡,通过判断当前dns服务器模块中的各个进程的工作状态,将dns报文分配到指定的进程中,等待解析处理。
[0099]
s306、在接收到第二设备发送的dns报文的解析请求时,通过第三设备将dns报文中的第二监听端口号更新为第一监听端口号,得到携带有第一监听端口号的dns报文,第二监听端口号为第一设备的端口对应的默认端口号。
[0100]
这里说的默认端口号可以理解为在一种协议下的一种固定的端口号,可以是udp协议下的进程对应的默认端口号53,或者tcp协议下的进程对应的默认端口号80。可以理解为在本发明实施例中的第二监听端口号为基于udp协议下的默认端口号53。
[0101]
进一步地,在接收到外部客户端发送的dns报文的解析请求时,通过dns报文解析系统中的内核模块修改dns报文当前的目的端口对应的端口号。将当前dns报文的默认端口号,即第二监听端口号修改为dns服务器模块中指定的第一监听端口号。
[0102]
在一种可能的示例场景中,通过外部客户端(可以是外部浏览器)发出dns报文的查询请求。dns报文解析系统种的内核模块接收到查询求请求后,检查当前进程的空闲状态,例如,根据软件程序规则判断出由进程3进行查询处理,并且内核模块监测出进程3对应的监听端口号为56,通过内核模块将dns报文当前的目的端口对应的端口号53修改成56,得到指定进程对应的监听端口号的dns报文。当前dns报文的目的端口对应的端口号修改成56。
[0103]
s307、将携带有第一监听端口号的dns报文发送至第一设备对应的进程,以使第一设备返回dns报文对应的应答报文,应答报文携带有第一监听端口号。
[0104]
其中,应答报文可以理解为经过dns报文的解析处理后得到的解析结果。在dns报文查询过程中,发出的解析请求可以理解为dns报文的域名查询请求,通过查询处理,得到表征域名信息的ip地址,这里获得的ip地址可以作为查询结果来表征应答报文。
[0105]
进一步地,通过第三设备将携带有第一监听端口号的dns报文发送至第一设备,通过第一监听端口号对应的进程,对dns报文进行解析处理,得到表征解析结果的应答报文。
[0106]
在一种可能的示例场景种,通过dns报文解析系统中的内核模块将目的端口对应的端口号为56的dns报文发送至dns服务器模块中监听56端口对应的进程3中,通过进程3对dns报文进行解析处理,得到对应的应答报文。
[0107]
s308、将应答报文中的第一监听端口号更新为第二监听端口号,得到携带有第二监听端口号的应答报文。
[0108]
进一步地,在获得第一监听端口号对应的应答报文时,将应答报文对应的监听端口对应的端口号由第一监听端口号修改为第二监听端口号,得到还原对应的端口号的应答报文。
[0109]
在一种可能的示例场景中,将监听端口号为56的应答报文修改成端口号为53的应答报文,得到还原状态的解析结果对应的应答报文。
[0110]
s309、将携带有第二监听端口号的应答报文发送给第二设备。
[0111]
进一步地,在获得还原端口号的应答报文后,将应答报文发送至第二设备,第二设备得到dns报文的解析请求对应的应答报文,完成对dns报文的解析过程。进而实现提高dns报文解析的处理效率的效果。
[0112]
本发明实施例提供的dns报文解析改进方法,通过在第一设备创建多个进程,并在每个进程中创建对应的监听端口。第二设备将dns报文的解析请求发送至dns报文解析系统中的第三设备,通过第三设备将dns报文的第二监听端口号修改成第一监听端口号,分配到目标进程中,完成对dns报文的解析处理,得到携带有第一监听端口号的应答报文。通过修改应答报文中的第一监听端口号,得到修改后的携带有第二监听端口号的应答报文,作为dns报文的解析结果发送至第二设备,完成对dns报文的解析过程。利用多进程架构,通过内核模块修改dns报文的监听端口号分配不同的进程,对dns报文进行解析处理,提高dns报文的解析速度,实现了提高dns报文解析的处理效率的效果。
[0113]
图4为本发明实施例提供的再一种dns报文解析改进方法的交互示意图。根据图4提供的示图,dns报文解析改进方法具体包括:
[0114]
s401、通过第一设备创建多个进程,每个进程中设置有相同的内存数据。
[0115]
在一种可能的示例场景中,通过表征第一设备的dns报文解析系统的dns服务器模块创建多个进程,每个进程携带有相同的缓存记录数据,在dns报文发出域名查询请求后,首先在进程中的缓存记录数据中查询,如果获得查询结果,则直接作为查询结果反馈给外部客户端。
[0116]
s402、根据每个进程创建对应的监听端口,得到多个进程的多个监控端口。
[0117]
根据图3实施例提供的进程与每个监听端口之间的对应关系,创建多个监听端口。
[0118]
s403、获取第一设备提供的进程以及进程对应的监听端口,监听端口对应设置有第一监听端口号。
[0119]
根据表1的内容,设置多个进程和多个进程对应的监听端口号。举例说明,在进程1中设置监听54端口,进程2中设置监听55端口,则进程1中的监听端口对应的端口号为54,进程2中的监听端口对应的端口号为55。
[0120]
s404、在接收到解析请求时,获取dns报文对应的五元组信息。
[0121]
s405、根据五元组信息,对dns报文进行负载均衡,将dns报文分配至指定的目标进程。
[0122]
这里的五元组信息可以理解为dns报文对应的源ip、源端口、目的ip、目的端口和传输层协议信息。
[0123]
进一步地,在一种可能的示例场景中,根据dns报文的五元组信息,确定dns报文的
目的端口对应的端口号,根据目的端口对应的端口号进行分配,根据软件程序规则分配指定的进程。例如,根据dns报文的五元组信息获得dns报文的目的端口为53,根据软件程序规则分配给进程4,侧进程4就作为目标进程,等待接收dns报文的解析请求。
[0124]
s406、在接收到第二设备发送的dns报文的解析请求时,通过第三设备将dns报文中的第二监听端口号更新为第一监听端口号,得到携带有第一监听端口号的dns报文,第二监听端口号为第一设备的端口对应的默认端口号。
[0125]
进一步地,在第三设备接收到解析请求时,根据dns报文的当前目的端口对应的端口号为第二监听端口号,修改成第一监听端口号对应的dns报文。
[0126]
在一种可能的示例场景中,dns报文解析系统中的内核模块接收到解析请求后,将dns报文的目的端口对应端口号由默认的53修改成为指定进程4对应的监听端口号57,得到携带有57端口号的dns报文。
[0127]
s407、根据第一监听端口号对应的dns报文,将dns报文负载到对应的进程,dns报文的目的端口对应的端口号由第二监听端口号替换为第一监听端口号。
[0128]
进一步地,根据dns报文对应的第一监听端口号,得到指定的进程,通过第三设备将dns报文分配到指定的进程中,此时dns报文的目的端口号发生改变。
[0129]
在一种可能的示例场景中,通过dns报文解析系统中的内核模块检查,得到携带有端口号57的dns报文对应的进程为进程4,通过内核模块将dns报文发送至进程4中,此时dns报文的目的端口对应的端口号由发出解析请求时的第二监听端口号53替换为第一监听端口号57。
[0130]
s408、通过第一监听端口号对应的进程对dns报文进行解析处理,接收由第一设备发送的携带有第一监听端口号的dns报文对应的应答报文。
[0131]
进一步地,在dns报文解析系统中的第一设备,分配给dns报文指定的进程,在进程中对dns报文进行解析处理,得到再此进程中对应监听端口号的应答报文。
[0132]
例如,通过内核模块将dns报文分配给进程2,根据之前设定的规则,得到进程2对应的监听端口对应的端口号为55,通过在进程2中对dns报文进行解析处理,得到监听端口号为55的应答报文。
[0133]
s409、将应答报文的源ip由第二ip替换为第一ip,目的ip由第一ip替换为第二ip。
[0134]
s410、将应答报文的源端口对应的端口号由第二端口号替换为第一监听端口号,应答报文的目的端口对应的端口号由第一监听端口替换为第二端口号,第一ip为第一设备的ip,第二ip为第二设备的ip,第二端口号为第二设备的端口对应的端口号。
[0135]
通过解析处理,得到表征解析结果的应答报文。根据应答报文的五元组信息,解析处理后的应答报文的源ip相对于解析请求来说,应答报文的源ip和目的ip发生相互替换,应答报文的源ip由第二ip替换为第一ip,目的ip由第一ip替换为第二ip。
[0136]
同样地,解析处理后的应答报文对应的源端口对应的端口号和目的端口对应的端口号发生相互替换,将应答报文的源端口对应的端口号由第二端口号替换为第一监听端口号,应答报文的目的端口对应的端口号由第一监听端口替换为第二端口号。
[0137]
在一种可能的示例场景中,第一设备为dns报文解析系统中的dns服务器模块,第一ip为dns服务器模块的ip,第二设备为客户端,第二ip为客户端对应的ip,第二端口号为客户端的端口对应的端口号。通过在进程2中进行解析处理,得到端口号为55的应答报文。
此时的应答报文将源ip和目的ip进行互换,得到替换后的源ip和目的ip。同时,应答报文将当前的源端口对应的端口号由客户端的端口号替换成进程2对应的端口号55,目的端口由进程2对应的55替换成客户端的端口号。
[0138]
例如,在一种可能的示例场景中,通过客户端发出的dns报文的五元组信息包括:源端src:1.1.1.1/24451,目的端dst:1.1.1.2/53。通过分配进程2进行解析处理,得到的应答报文的五元组信息包括:源端src:1.1.1.2/55,目的端dst:1.1.1.1/24451。再通过修改应答报文的源端口对应的端口号得到的应答报文的五元组信息包括:源端src:1.1.1.2/53,目的端dst:1.1.1.1/24451。
[0139]
可选地,客户端的端口号的取值不做要求,根据不同的客户端或浏览器得到不同的端口号。
[0140]
s411、对应答报文的源端口对应的端口号由第一监听端口号替换为第二监听端口号,得到携带有第二监听端口号的应答报文。
[0141]
s412、将替换后的应答报文执行发送至第二设备的步骤。
[0142]
进一步地,在获得的应答报文的基础上,修改应答报文的源端口对应的端口号,将应答报文的源端口对应的端口号由第一监听端口号还原到第二监听端口号,得到表征解析结果的应答报文。再将应答报文发送给第二设备,反馈表征解析结果的应答报文,完成对dns报文的解析过程。
[0143]
在一种可能的示例场景中,通过修改应答报文的源端口对应的端口号,将当前的源端口的端口号55修改成默认端口号53,得到还原处理的应答报文。再将应答报文发送给外部客户端,返回dns报文对应的解析结果,完成dns报文的解析过程。通过创建多进程和多个监听端口的软件架构,修改dns报文的端口号来强制分配不同的处理进程,在不同的进程中进行解析处理得到应答报文,再将应答报文的端口号通过强行修改还原到默认端口号,得到最终的解析结果,并将解析结果发送给相应的客户端,完成dns报文的解析过程。从而实现了提高dns报文解析的处理效率的效果。
[0144]
图5为本发明实施例提供的一种dns报文解析改进装置的结构示意图。如图5所示,dns报文解析改进装置具体包括:
[0145]
获取模块51,用于获取第一设备提供的进程以及进程对应的监听端口,监听端口对应设置有第一监听端口号;
[0146]
更新模块52,用于在接收到第二设备发送的dns报文的解析请求时,通过第三设备将dns报文中的第二监听端口号更新为第一监听端口号,得到携带有第一监听端口号的dns报文,第二监听端口号为第一设备的端口对应的默认端口号;
[0147]
应答模块53,将携带有第一监听端口号的dns报文发送至第一设备对应的进程,以使第一设备返回dns报文对应的应答报文,应答报文携带有第一监听端口号;
[0148]
其中,更新模块52,还用于将应答报文中的第一监听端口号更新为第二监听端口号,得到携带有第二监听端口号的应答报文;
[0149]
发送模块54,用于将携带有第二监听端口号的应答报文发送给第二设备。
[0150]
本实施例提供的dns报文解析改进装置可以是如图5中所示的dns报文解析改进装置,可执行如图2-4中dns报文解析改进方法的所有步骤,进而实现图2-4所示dns报文解析改进方法的技术效果,具体请参照图2-4相关描述,为简洁描述,在此不作赘述。
[0151]
图6为本发明实施例提供的一种改进设备的结构示意图,图6所示的改进设备600包括:至少一个处理器601、存储器602、至少一个网络接口604和其他用户接口603。改进设备600中的各个组件通过总线系统606耦合在一起。可理解,总线系统606用于实现这些组件之间的连接通信。总线系统606除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统606。
[0152]
其中,用户接口603可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。
[0153]
可以理解,本发明实施例中的存储器602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddrsdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synch link dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。本文描述的存储器602旨在包括但不限于这些和任意其它适合类型的存储器。
[0154]
在一些实施方式中,存储器602存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统6021和应用程序6022。
[0155]
其中,操作系统6021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序6022,包含各种应用程序,例如媒体播放器(media player)、浏览器(browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序6022中。
[0156]
在本发明实施例中,通过调用存储器602存储的程序或指令,具体的,可以是应用程序6022中存储的程序或指令,处理器601用于执行各方法实施例所提供的方法步骤,例如包括:
[0157]
获取第一设备提供的进程以及进程对应的监听端口,监听端口对应设置有第一监听端口号;在接收到第二设备发送的dns报文的解析请求时,通过第三设备将dns报文中的第二监听端口号更新为第一监听端口号,得到携带有第一监听端口号的dns报文,第二监听端口号为第一设备的端口对应的默认端口号;将携带有第一监听端口号的dns报文发送至第一设备对应的进程,以使第一设备返回dns报文对应的应答报文,应答报文携带有第一监听端口号;将应答报文中的第一监听端口号更新为第二监听端口号,得到携带有第二监听端口号的应答报文;将携带有第二监听端口号的应答报文发送给第二设备。
[0158]
上述本发明实施例揭示的方法可以应用于处理器601中,或者由处理器601实现。处理器601可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器601中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器601可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电
路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器602,处理器601读取存储器602中的信息,结合其硬件完成上述方法的步骤。
[0159]
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(application specific integrated circuits,asic)、数字信号处理器(digital signal processing,dsp)、数字信号处理设备(dspdevice,dspd)、可编程逻辑设备(programmable logic device,pld)、现场可编程门阵列(field-programmable gate array,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本技术所述功能的其它电子单元或其组合中。
[0160]
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
[0161]
本实施例提供的改进设备可以是如图6中所示的改进设备,可执行如图2-4中dns报文解析改进方法的所有步骤,进而实现图2-4所示dns报文解析改进方法的技术效果,具体请参照图2-4相关描述,为简洁描述,在此不作赘述。
[0162]
本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
[0163]
当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在dns报文解析改进设备侧执行的dns报文解析改进方法。
[0164]
所述处理器用于执行存储器中存储的dns报文解析改进程序,以实现以下在dns报文解析改进设备侧执行的dns报文解析改进方法的步骤:
[0165]
获取第一设备提供的进程以及进程对应的监听端口,监听端口对应设置有第一监听端口号;在接收到第二设备发送的dns报文的解析请求时,通过第三设备将dns报文中的第二监听端口号更新为第一监听端口号,得到携带有第一监听端口号的dns报文,第二监听端口号为第一设备的端口对应的默认端口号;将携带有第一监听端口号的dns报文发送至第一设备对应的进程,以使第一设备返回dns报文对应的应答报文,应答报文携带有第一监听端口号;将应答报文中的第一监听端口号更新为第二监听端口号,得到携带有第二监听端口号的应答报文;将携带有第二监听端口号的应答报文发送给第二设备。
[0166]
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现
不应认为超出本发明的范围。
[0167]
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0168]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献