报文处理方法及装置与流程

文档序号:11236754阅读:316来源:国知局
报文处理方法及装置与流程

本发明实施例涉及计算机技术领域,尤其涉及一种报文处理方法及装置。



背景技术:

当前,域名解析服务器为人们提供网页域名与ip地址(internetprotocoladdress,互联网协议地址)相互转换的信息,是互联网系统的一项基础性技术设施,是人们日常浏览网页的过程中不可或缺的部分。

目前,当用户利用终端访问某一网页时,用户可以在终端中输入待访问网页的域名,例如,当用户需要浏览百度的主页面时,可以在终端中输入百度的主页面的域名“www.baidu.com”,终端获取用户输入的待访问网页的域名,并生成dns(domainnamesystem,域名系统)请求报文,dns请求报文中携带待访问网页的域名,然后向代理服务器转发dns请求报文;代理服务器利用linux(操作系统)的内核空间接收该dns请求报文,利用套接字将dns请求报文复制到linux的用户空间中,然后利用用户空间向域名解析服务器转发该dns请求报文,域名解析服务器获取根据该网页的域名,获取存储有该网页的网页服务器的ip地址,并根据该网页的域名与网页服务器的ip地址生成dns响应报文,然后向代理服务器发送该dns响应报文,代理服务器利用用户空间接收域名解析服务器发送的该dns响应报文,然后利用套接字将该dns响应报文复制到内核空间中,再利用内核空间向终端发送该dns响应报文。终端接收该dns响应报文,进而根据该dns响应报文中的网页服务器的ip地址从网页服务器中获取该网页,并在屏幕上显示该网页,以供用户浏览。

发明人在实现本发明实施例的过程中发现,相关技术中的这种方案至少存在如下缺点。

在上述过程中,需要利用套接字将dns请求报文从内核空间复制到用户空间,以及需要利用套接字将dns响应报文从用户空间复制到内核空间,两次复制过程耗费系统资源,且会耗费较多的时间,进而降低了终端获取到dns响应报文的获取效率。



技术实现要素:

为克服相关技术中存在的问题,本发明实施例提供一种报文处理方法及装置。

根据本发明实施例的第一方面,提供一种报文处理方法,应用于代理服务器,所述方法包括:

利用基于linux的内核空间接收终端发送的dns请求报文,所述dns请求报文携带待访问网页的域名;

利用所述内核空间在预先存储的预设报文列表中查找包括所述dns请求报文的记录;所述预设报文列表存储了多条记录,每一条记录中至少包括一个dns请求报文与一个dns响应报文,且不同的记录包括的dns请求报文和dns响应报文不同;

如果查找到包括所述dns请求报文的记录,则利用所述内核空间向所述终端发送所述查找到的dns响应报文。

进一步地,所述方法还包括:

如果未查找到包括所述dns请求报文的记录,则利用所述内核空间向域名解析服务器发送所述dns请求报文;

利用所述内核空间接收所述域名解析服务器根据所述dns请求报文返回的dns响应报文;

利用所述内核空间向所述终端发送所述接收到的dns响应报文。

进一步地,所述方法还包括:

将所述dns请求报文与所述接收到的dns响应报文组成一条记录,并存储在所述预设报文列表中。

其中,所述利用所述内核空间向域名解析服务器发送所述dns请求报文,包括:

如果所述dns请求报文中的源ip地址为私网ip地址,则利用所述内核空间将所述dns请求报文中的源ip地址修改为所述代理服务器的公网ip地址,再利用所述内核空间向所述域名解析服务器发送修改了源ip地址的dns请求报文。

其中,所述向所述终端发送所述查找到的dns响应报文,包括:

利用所述内核空间将所述dns响应报文中的目的ip地址修改为所述终端的私网ip地址,再利用所述内核空间向所述终端发送修改了目的ip地址的dns响应报文。

根据本发明实施例的第二方面,提供一种报文处理装置,应用于代理服务器,所述装置包括:

第一接收模块,用于利用基于linux的内核空间接收终端发送的dns请求报文,所述dns请求报文携带待访问网页的域名;

查找模块,用于利用所述内核空间在预先存储的预设报文列表中查找包括所述dns请求报文的记录;所述预设报文列表存储了多条记录,每一条记录中至少包括一个dns请求报文与一个dns响应报文,且不同的记录包括的dns请求报文和dns响应报文不同;

第一发送模块,用于如果查找到包括所述dns请求报文的记录,则利用所述内核空间向所述终端发送所述查找到的dns响应报文。

进一步地,所述装置还包括:

第二发送模块,用于如果未查找到包括所述dns请求报文的记录,则利用所述内核空间向域名解析服务器发送所述dns请求报文;

第二接收模块,用于利用所述内核空间接收所述域名解析服务器根据所述dns请求报文返回的dns响应报文;

第三发送模块,用于利用所述内核空间向所述终端发送所述接收到的dns响应报文。

进一步地,所述装置还包括:

存储模块,用于将所述dns请求报文与所述接收到的dns响应报文组成一条记录,并存储在所述预设报文列表中。

其中,所述第二发送模块包括:

第一修改单元,用于如果所述dns请求报文中的源ip地址为私网ip地址,则利用所述内核空间将所述dns请求报文中的源ip地址修改为所述代理服务器的公网ip地址;

第二发送单元,用于利用所述内核空间向所述域名解析服务器发送修改了源ip地址的dns请求报文。

其中,所述第三发送模块包括:

第二修改单元,用于利用所述内核空间将所述dns响应报文中的目的ip地址修改为所述终端的私网ip地址;

第二发送单元,用于利用所述内核空间向所述终端发送修改了目的ip地址的dns响应报文。

本发明实施例提供的技术方案可以包括以下有益效果:

在本发明实施例中,利用基于linux的内核空间接收终端发送的dns请求报文,该dns请求报文携带待访问网页的域名;利用内核空间在预先存储的预设报文列表中查找包括该dns请求报文的记录;预设报文列表存储了多条记录,每一条记录中至少包括一个dns请求报文与一个dns响应报文,且不同的记录包括的dns请求报文和dns响应报文不同;如果查找到包括该dns请求报文的记录,则利用内核空间向终端发送查找到的dns响应报文。

本发明实施例无需将dns请求报文通过套接字从内核空间复制到用户空间,也无需将dns请求报文通过套接字从用户空间复制到内核空间,直接利用内核空间处理该dns请求报文,进而利用内核空间得到dns响应报文,并利用内核空间向终端发送dns响应报文,从而节省了系统资源;以及节省了将dns请求报文通过套接字复制到用户空间所需耗费的时间,进而提高了终端获取到dns响应报文的获取效率。

其次,由于底层网络接口位于linux的内核空间中,且由于本发明实施例是利用内核空间来接收并处理dns请求报文以及利用内核空间向终端发送dns响应报文,因此,可以充分利用位于linux的内核空间中的底层的网络接口辅助处理dns请求报文,从而提高了扩展性和灵活性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明实施例。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明实施例的原理。

图1是根据一示例性实施例示出的一种报文处理系统的结构示意图;

图2是根据一示例性实施例示出的一种报文处理方法的流程图;

图3是根据一示例性实施例示出的一种报文处理方法的流程图;

图4是根据一示例性实施例示出的一种报文处理装置的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明实施例的一些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种报文处理系统的结构示意图,如图1所示,该系统包括终端1、代理服务器2和域名解析服务器3。终端1与代理服务器2之间通信连接,终端1与代理服务器2之间可以通过二者之间的通信连接实现数据交互;代理服务器2与域名解析服务器3之间通信连接。代理服务器2与域名解析服务器3之间可以通过二者之间的通信连接实现数据交互。

图2是根据一示例性实施例示出的一种报文处理方法的流程图,如图2所示,该方法用于如图1所示的代理服务器2中,该方法包括以下步骤。

在步骤s101中,利用基于linux的内核空间接收终端发送的dns请求报文,该dns请求报文携带待访问网页的域名;

在本发明实施例中,用户通常利用终端上网,当用户需要利用终端访问某一网页时,用户需要首先在终端中输入该网页的域名,例如,www.baidu.com或者www.taobao.com等。终端获取用户输入的该网页的域名,并根据该网页的域名从域名解析服务器中获取存储有该网页的网页服务器的ip地址(internetprotocoladdress,互联网协议地址),进而再根据网页服务器的ip地址从网页服务器中获取该网页,并在终端的屏幕上显示该网页,以供用户浏览。

其中,为了能够根据该网页的域名从域名解析服务器中获取存储有该网页的网页服务器的ip地址,终端需要根据该网页的域名生成dns请求报文,并向域名解析服务器发送dns请求报文;以使域名解析服务器就会根据dns请求报文携带的该网页的域名获取网页服务器的ip地址,并根据网页服务器的ip地址和该网页的域名生成dns响应报文,然后向终端返回dns响应报文;之后终端再从dns响应报文中提取出网页服务器的ip地址。

在本发明实施例中,终端在向域名解析服务器发送dns请求报文时,需要先将dns请求报文发送至代理服务器,进而代理服务器再将dns请求报文转发至域名解析服务器。相应地,域名解析服务器在向终端返回dns响应报文时,需要先将dns响应报文发送至代理服务器,进而代理服务器再将dns响应报文转发至终端。

因此,在本发明实施例中,当终端需要访问某一网页时,就会向代理服务器发送携带该网页的域名的dns请求报文,代理服务器在接收到终端发送的一个携带该网页的域名的dns请求报文之后,就会从域名解析服务器中获取dns响应报文,该dns响应报文中携带存储有该网页的网页服务器的ip地址以及该网页的域名,并向终端返回该dns响应报文。

如果之后终端还需要访问该网页,则终端还会向代理服务器发送该dns请求报文,代理服务器仍旧需要从域名解析服务器中获取该dns响应报文,并向终端返回该dns响应报文,终端再接收该dns响应报文。

但是,代理服务器从域名解析服务器中获取该dns响应报文的过程为:

代理服务器向域名解析服务器转发该dns请求报文;域名解析服务器接收该dns请求报文,并根据该dns请求报文携带的该网页的域名获取存储有该网页的网页服务器的ip地址,再根据该网页的网页服务器的ip地址和该网页的域名生成该dns响应报文,并向代理服务器返回该dns响应报文;代理服务器接收域名解析服务器返回的该dns响应报文。

在从域名解析服务器中获取该dns响应报文的整个过程中,代理服务器需要与域名解析服务器进行两次数据交互,会耗费代理服务器与域名解析服务器之间较多的网络资源,且在代理服务器与域名解析服务器之间的通信连接不稳定时,可能需要耗费较多时间代理服务器才能接收到域名解析服务器返回的该dns响应报文,导致获取该dns响应报文的获取效率较低。

因此,如果之后再次接收到终端发送的携带该域名的该dns请求报文,为了能够提高获取该dns响应报文的获取效率以及节省代理服务器与域名解析服务器之间的网络资源,在代理服务器接收到域名解析服务器返回的该dns响应报文时,除了向终端转发该dns响应报文之外,代理服务器还会将该dns请求报文与该dns响应报文组成一条记录,并存储本地存储的预设报文列表中。

如此,在本发明实施例中,当接收到携带待访问网页的域名的dns请求报文时,代理服务器无需直接向域名解析服务器转发该dns请求报文,而是执行步骤s102:利用内核空间在预先存储的预设报文列表中查找包括该dns请求报文的记录;然后执行步骤s103。

在步骤s102中,利用内核空间在预先存储的预设报文列表中查找包括该dns请求报文的记录;

预设报文列表存储了多条记录,每一条记录中至少包括一个dns请求报文与一个dns响应报文,且不同的记录包括的dns请求报文和dns响应报文不同;

在本发明实施例中,当利用内核空间接收到该dns请求报文之后,无需将dns请求报文通过套接字复制到linux的用户空间,也无需并利用用户空间查找在预先存储的预设报文列表中查找包括该dns请求报文的记录,也无需将查找到的记录中的dns响应报文再复制到linux的内核空间,进而无需利用内核空间向终端发送dns响应报文。本发明实施例是直接利用内核空间在预先存储的预设报文列表中查找包括该dns请求报文的记录。

如果查找到包括该dns请求报文的记录,在步骤s103中,利用内核空间向终端发送查找到的dns响应报文。

在本发明实施例中,在预设报文列表中的包括该dns请求报文的记录中,还存在dns响应报文,该记录中的dns响应报文中至少携带待访问网页的域名和存储有待访问网页的网页服务器的ip地址。

进一步地,在代理服务器向终端发送查找到的该记录中的dns响应报文之后,终端就会接收到代理服务器发送的dns响应报文,然后从代理服务器发送的dns响应报文中提取出存储有待访问网页的网页服务器的ip地址,并根据网页服务器的ip地址从网页服务器中获取待访问网页,进而在终端的屏幕上显示待访问网页,以供用户浏览待访问网页。

在本发明实施例中,利用基于linux的内核空间接收终端发送的dns请求报文,该dns请求报文携带待访问网页的域名;利用内核空间在预先存储的预设报文列表中查找包括该dns请求报文的记录;预设报文列表存储了多条记录,每一条记录中至少包括一个dns请求报文与一个dns响应报文,且不同的记录包括的dns请求报文和dns响应报文不同;如果查找到包括该dns请求报文的记录,则利用内核空间向终端发送查找到的dns响应报文。

本发明实施例无需将dns请求报文通过套接字从内核空间复制到用户空间,也无需将dns请求报文通过套接字从用户空间复制到内核空间,直接利用内核空间处理该dns请求报文,进而利用内核空间得到dns响应报文,并利用内核空间向终端发送dns响应报文,从而节省了系统资源;以及节省了将dns请求报文通过套接字复制到用户空间所需耗费的时间,进而提高了终端获取到dns响应报文的获取效率。

其次,由于底层网络接口位于linux的内核空间中,且由于本发明实施例是利用内核空间来接收并处理dns请求报文以及利用内核空间向终端发送dns响应报文,因此,可以充分利用位于linux的内核空间中的底层的网络接口辅助处理dns请求报文,从而提高了扩展性和灵活性。

进一步地,如果在预设报文列表中未查找到包括该dns请求报文的记录,则代理服务器就无法执行步骤s103,进而终端就无法得到存储有待访问网页的网页服务器的ip地址,也就无法获取待访问网页供用户浏览,因此,在未查找到包括该dns请求报文的记录的情况下,为了使得终端能够得到待访问网页供用户浏览,参见图3,该方法还包括:

如果未查找到包括该dns请求报文的记录,在步骤s201中,利用内核空间向域名解析服务器发送该dns请求报文;

如果在预设报文列表中未查找到包括该dns请求报文的记录,则说明之前未曾接收过携带待访问网页的域名的dns请求报文,也即,此次是首次接收到携带待访问网页的域名的dns请求报文,因此,需要利用内核空间向域名解析服务器发送该dns请求报文,以使域名解析服务器根据dns请求报文携带的待访问网页的域名,获取存储有待访问网页的网页服务器的ip地址,并根据网页服务器的ip地址和待访问网页的域名生成dns响应报文,以及向代理服务器返回生成的dns响应报文。

在本发明另一实施例中,有时候终端的ip地址是私网ip地址,并不是公网ip地址,如果终端的ip地址是私网ip地址,由于dns请求报文中携带的源ip地址是私网ip地址,则在代理服务器向域名解析服务器发送该dns请求报文之后,域名解析服务器就无法向dns响应报文发送至代理服务器,也无法直接向终端发送dns响应报文,进而代理服务器就无法向终端发送dns响应报文,终端也就接收不到dns响应报文。

为了在终端的ip地址是私网ip地址的情况下使得终端能够接收到dns响应报文,则代理服务器需要利用内核空间将dns请求报文中的源ip地址修改为代理服务器的公网ip地址,再利用内核空间向所述域名解析服务器发送修改了源ip地址的dns请求报文。

在步骤s202中,利用内核空间接收域名解析服务器根据该dns请求报文返回的dns响应报文;

在步骤s203中,利用内核空间向终端发送接收到的dns响应报文。

在本发明另一实施例中,如果dns请求报文的源ip地址由终端的私网ip地址修改为代理服务器的公网ip地址,则代理服务器接收到的dns响应报文的目的地址为代理服务器的公网ip地址,为了使得终端能够收到dns响应报文,代理服务器需要利用内核空间将dns响应报文中的目的ip地址修改为终端的私网ip地址,再利用内核空间向终端发送修改了目的ip地址的dns响应报文。

进一步地,在代理服务器利用内核空间向终端发送接收到的dns响应报文之后,终端就会接收到代理服务器发送的dns响应报文,然后从代理服务器发送的dns响应报文中提取出存储有待访问网页的网页服务器的ip地址,并根据网页服务器的ip地址从网页服务器中获取待访问网页,进而在终端的屏幕上显示待访问网页,以供用户浏览待访问网页。

进一步地,如果之后再次接收到终端发送的该dns请求报文,为了能够提高获取该dns响应报文的获取效率以及节省代理服务器与域名解析服务器之间的网络资源,代理服务器还可以将该dns请求报文与接收到的dns响应报文组成一条记录,并存储在预设报文列表中。如此,当之后再次接收到终端发送的该dns请求报文时,就可以按照上述步骤s101~步骤s103的流程获取到该dns响应报文,从而提高获取该dns响应报文的获取效率以及节省代理服务器与域名解析服务器之间的网络资源。

图4是根据一示例性实施例示出的一种报文处理装置的框图。参照图4,该装置包括:

第一接收模块11,用于利用基于linux的内核空间接收终端发送的dns请求报文,所述dns请求报文携带待访问网页的域名;

查找模块12,用于利用所述内核空间在预先存储的预设报文列表中查找包括所述dns请求报文的记录;所述预设报文列表存储了多条记录,每一条记录中至少包括一个dns请求报文与一个dns响应报文,且不同的记录包括的dns请求报文和dns响应报文不同;

第一发送模块13,用于如果查找到包括所述dns请求报文的记录,则利用所述内核空间向所述终端发送所述查找到的dns响应报文。

进一步地,所述装置还包括:

第二发送模块,用于如果未查找到包括所述dns请求报文的记录,则利用所述内核空间向域名解析服务器发送所述dns请求报文;

第二接收模块,用于利用所述内核空间接收所述域名解析服务器根据所述dns请求报文返回的dns响应报文;

第三发送模块,用于利用所述内核空间向所述终端发送所述接收到的dns响应报文。

进一步地,所述装置还包括:

存储模块,用于将所述dns请求报文与所述接收到的dns响应报文组成一条记录,并存储在所述预设报文列表中。

其中,所述第二发送模块包括:

第一修改单元,用于如果所述dns请求报文中的源ip地址为私网ip地址,则利用所述内核空间将所述dns请求报文中的源ip地址修改为所述代理服务器的公网ip地址;

第二发送单元,用于利用所述内核空间向所述域名解析服务器发送修改了源ip地址的dns请求报文。

其中,所述第三发送模块包括:

第二修改单元,用于利用所述内核空间将所述dns响应报文中的目的ip地址修改为所述终端的私网ip地址;

第二发送单元,用于利用所述内核空间向所述终端发送修改了目的ip地址的dns响应报文。

本发明实施例提供的技术方案可以包括以下有益效果:

在本发明实施例中,利用基于linux的内核空间接收终端发送的dns请求报文,该dns请求报文携带待访问网页的域名;利用内核空间在预先存储的预设报文列表中查找包括该dns请求报文的记录;预设报文列表存储了多条记录,每一条记录中至少包括一个dns请求报文与一个dns响应报文,且不同的记录包括的dns请求报文和dns响应报文不同;如果查找到包括该dns请求报文的记录,则利用内核空间向终端发送查找到的dns响应报文。

本发明实施例无需将dns请求报文通过套接字从内核空间复制到用户空间,也无需将dns请求报文通过套接字从用户空间复制到内核空间,直接利用内核空间处理该dns请求报文,进而利用内核空间得到dns响应报文,并利用内核空间向终端发送dns响应报文,从而节省了系统资源;以及节省了将dns请求报文通过套接字复制到用户空间所需耗费的时间,进而提高了终端获取到dns响应报文的获取效率。

其次,由于底层网络接口位于linux的内核空间中,且由于本发明实施例是利用内核空间来接收并处理dns请求报文以及利用内核空间向终端发送dns响应报文,因此,可以充分利用位于linux的内核空间中的底层的网络接口辅助处理dns请求报文,从而提高了扩展性和灵活性。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明实施例的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明实施例的一般性原理并包括本发明实施例未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明实施例的真正范围和精神由所附的权利要求指出。

应当理解的是,本发明实施例并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明实施例的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1