报文处理方法、装置、存储介质及处理器与流程

文档序号:17321022发布日期:2019-04-05 21:32阅读:175来源:国知局
报文处理方法、装置、存储介质及处理器与流程

本发明涉及通信领域,具体而言,涉及一种报文处理方法、装置、存储介质及处理器。



背景技术:

随着科技的发展,人们对上网的需求也越来越多,而网络连接势必要涉及到流量的耗费,而在实际使用中,有些流量的耗费是不必要的,下面以卫星通讯为例进行说明:

随着海上渔民从近海捕捞向远洋捕捞的发展,海上渔民的通讯和上网要求日益迫切,加上大容量的通讯卫星技术的发展,使得原来面向高端用户的宽带卫星上网服务普及到普通的渔民以及旅游人群成为可能。

当前海洋宽带卫星网络提供用户终端(例如,智能终端)无线保真(wirelessfidelity,简称为wifi)接入方式。在wifi使用网络环境下,很多智能终端上的应用会默认开启云端同步功能、软件自动更新功能,甚至在用户不知情的情况下,终端应用会暗地里搜集机型、地理位置等信息,并偷偷上传至指定服务器,从而导致用户流量白白浪费。

由于卫星网络带宽资源有限,卫星流量费用比较陆地费用依然昂贵,为了节省用户流量费用,需要在卫星网络wifi条件下,实现对智能终端应用流量消耗的管控。但是在相关技术中并不存在有效的对流量消耗进行管控的方式。

针对相关技术中存在的终端流量浪费的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种报文处理方法、装置、存储介质及处理器,以至少解决相关技术中存在的终端流量浪费的问题。

根据本发明的一个实施例,提供了一种报文处理方法,包括:获取来自终端中的应用的待外发的数据报文;在确定需要拦截所述待外发的数据报文时对所述待外发的数据报文进行外发拦截。

可选地,获取来自所述终端中的所述应用的所述待外发的数据报文包括:在监听到所述终端中的tun口中有数据写入时,从所述tun口中读取所述待外发的数据报文,其中,所述终端中的应用的待外发的数据均会重定向到所述tun口。

可选地,在获取来自终端中的应用的待外发的数据报文之后,所述方法还包括:根据所述待外发的数据报文的包头信息在会话session链表中查找是否存在与所述待外发的数据报文对应的session;在确定存在的情况下,根据所述待外发的数据报文更新与所述待外发的数据报文对应的session;在确定不存在的情况下,创建新的session,并根据所述新的session中的地址信息创建新的套接字socket连接。

可选地,确定需要拦截待外发的数据报文包括:当通过监听所述session链表中的socket连接确定所述待外发的数据报文需要发送给用于处理所述待外发的数据报文的远端服务器时,根据所述待外发的数据报文的目标网络协议ip地址和端口确定所述应用的标识;在根据所述应用的标识确定所述应用为非前台运行的应用的情况,确定需要拦截所述待外发的数据报文。

可选地,在获取来自终端中的应用的待外发的数据报文之后,所述方法还包括:在确定不需要拦截所述待外发的数据报文时,将所述待外发的数据报文转发给预定网卡,并指示所述预定网卡将所述待外发的数据报文转发给用于处理所述待外发的数据报文的预定服务器。

可选地,确定不需要拦截待外发的数据报文包括:当通过监听所述session链表中的socket连接确定所述待外发的数据报文需要发送给用于处理所述待外发的数据报文的远端服务器时,根据所述待外发的数据报文的目标网络协议ip地址和端口确定所述应用的标识;在根据所述应用的标识确定所述应用为前台运行的应用的情况,确定不需要拦截所述待外发的数据报文。

可选地,在将所述待外发的数据报文转发给预定网卡之后,所述方法还包括:通过监听所述session链表中的socket连接确定接收到来自所述预定服务器的接收数据报文;根据所述接收数据报文的包头信息在session链表中查找与所述接收数据报文对应的session,并从查找到的与所述接收数据报文对应的session中读取待接收所述接收数据报文的应用的地址信息;将所述接收数据报文转发给所述应用。

可选地,将所述接收数据报文转发给所述应用包括:对所述接收数据报文进行重组;将重组后的接收数据报文写入tun口中,以使所述tun口将所述重组后的接收数据报文发送给所述应用。

根据本发明的另一个实施例,提供了一种报文处理装置,包括:获取模块,用于获取来自终端中的应用的待外发的数据报文;拦截模块,用于在确定需要拦截所述待外发的数据报文时,对所述待外发的数据报文进行外发拦截。

可选地,所述获取模块包括:读取单元,用于在监听到所述终端tun口中有数据写入时,从所述tun口中读取所述待外发的数据报文,其中,所述终端中的应用的待外发的数据均会重定向到所述tun口。

可选地,所述装置还包括:查找模块,用于在获取来自终端中的应用的待外发的数据报文之后,根据所述待外发的数据报文的包头信息在会话session链表中查找是否存在与所述待外发的数据报文对应的session;更新模块,用于在确定存在的情况下,根据所述待外发的数据报文更新与所述待外发的数据报文对应的session;创建模块,用于在确定不存在的情况下,创建新的session,并根据所述新的session中的地址信息创建新的套接字socket连接。

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述任一项所述的方法。

根据本发明的又一个实施例,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任一项所述的方法。

通过本发明,能够实现在待外发的数据报文进行外发之前,对不必要外发的数据报文进行拦截,从而避免了不必要的流量浪费。因此,可以解决相关技术中存在的流量浪费的问题,达到对终端应用流量进行管控,节省流量费用的效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例的一种报文处理方法的移动终端的硬件结构框图;

图2是根据本发明实施例的报文处理方法的流程图;

图3是根据本发明实施例的整体结构框图;

图4是根据本发明实施例的报文处理装置的结构框图;

图5是根据本发明具体实施例一的终端应用数据发送处理图;

图6是根据本发明具体实施例二的数据转发和接收处理流程图;

图7是根据本发明具体实施例三的session维护处理流程如图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

为了解决流量耗损的问题,传统的安全管家类终端软件,要实现对智能终端应用流量的管控,要么需要先root智能终端,让安全管家类软件获取智能终端操作系统的最高权限,从而实现读取智能终端网络设备文件的路由信息,从而实现增加或修改路由规则来达到拦截功能;要么需要另外建立虚拟专用网络(virtualprivatenetwork,简称为vpn)服务器,智能终端通过与vpn服务器建立vpn通道,在vpn通道上进行对终端应用数据报文的控制和拦截。

受限于海洋宽带卫星网络用户群对智能终端的熟悉程度不高,通过root智能终端来实现应用流量管控非常困难,而且会导致用户智能终端无法保修。另外由于卫星资源带宽资源有限,智能终端与陆地vpn服务器之间建立数据通道后,会增加vpn协议和数据加密的开销,上述两种方式在海洋宽带卫星网络环境中不适用。

本发明实施例中的关键是针对目前业界对智能终端应用流量管控的局限性和缺陷,提出一种新的报文处理方法,能够在智能终端免root,且不需要搭建vpn服务器条件下,实现对用户智能终端应用的流量管控,防止不必要的流量浪费,从而为用户节省网络费用。下面结合实施例对本发明进行说明:

在本申请实施例中所提供的方法是可以在移动终端、计算机终端或者类似的运算装置中执行的。以运行在移动终端上为例,图1是本发明实施例的一种报文处理方法的移动终端的硬件结构框图。如图1所示,移动终端10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的报文处理方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。

在本实施例中提供了一种可以运行于上述移动终端的报文处理方法,图2是根据本发明实施例的报文处理方法的流程图,如图2所示,该方法包括如下步骤:

步骤s202,获取来自终端中的应用的待外发的数据报文;

步骤s204,在确定需要拦截该待外发的数据报文时,对所述待外发的数据报文进行外发拦截。

其中,执行上述步骤的主体可以是终端中的流量管控装置。

通过上述实施例,能够实现在待外发的数据报文进行外发之前,对不必要外发的数据报文进行拦截,从而避免了不必要的流量浪费。因此,可以解决相关技术中存在的流量浪费的问题,达到对终端应用流量进行管控,节省流量费用的效果。

在一个可选的实施例中,获取来自上述终端中的应用的待外发的数据报文包括:在监听到终端中的tun口中有数据写入时,从tun口中读取待外发的数据报文,其中,终端中的应用的待外发的数据均会重定向到tun口。在本实施例中,终端在启动vpn服务后,会创建虚拟tun口,终端上的所有应用的待外发的数据报文都可以重定向发给该虚拟tun口。在本实施例中,在监听到tun口中有数据写入时,可以先从tun口读取数据报文到缓存,再根据缓存中的数据报文的信息进行后续处理。其中,tun口是计算机的专业术语,可以指linux操作系统内核中的虚拟网络设备。

在一个可选的实施例中,在获取来自上述终端中的应用的待外发的数据报文之后,上述方法还包括:根据待外发的数据报文的包头信息在会话session链表中查找是否存在与所述待外发的数据报文对应的session;在确定存在的情况下,根据待外发的数据报文更新与待外发的数据报文对应的session;在确定不存在的情况下,创建新的session,并根据所述新的session中的地址信息创建新的套接字socket连接。在本实施例中,可以先为待外发的数据创建会话,其中,在根据待外发的数据报文的包头信息在会话session链表中查找到与该待外发的数据报文对应的session时,可以根据待外发的数据报文更新与待外发的数据报文对应的session的有效时间、标识id等信息,在需要创建新的session时,需要记录协议、时间、uid、版本、地址、id等信息,并调用系统socket新建网络控制协议(internetcontrolmessageprotocol,简称为icmp)连接,保护protect连接从而使得从该socket发出的数据不会被截获。

在一个可选的实施例中,确定需要拦截上述待外发的数据报文包括:当通过监听所述session链表中的socket连接确定待外发的数据报文需要发送给用于处理待外发的数据报文的远端服务器时,根据待外发的数据报文的目标网络协议ip地址和端口确定所述应用的标识;在根据应用的标识确定所述应用为非前台运行的应用的情况,确定需要拦截待外发的数据报文。在本实施例中,主要是根据发送该待外发的数据报文的应用是否是前台运行的应用来确定是否拦截该待外发的数据报文的,当是前台运行的应用时,不需要拦截,否则,需要拦截。需要说明的是,将发送该待外发的数据报文的应用是否是前台运行的应用来对待外发的数据报文进行拦截处理的方式仅是一种优选的实施例,在实际应用时,也可以根据其他拦截条件来对报文进行拦截,例如,根据应用是否处于白名单中来进行报文的拦截处理,或者,根据报文的发送时间段来进行拦截处理,等等。

在一个可选的实施例中,在获取来自上述终端中的应用的待外发的数据报文之后,上述方法还包括:在确定不需要拦截待外发的数据报文时将待外发的数据报文转发给预定网卡,并指示预定网卡将待外发的数据报文转发给用于处理待外发的数据报文的预定服务器。在本实施例中,主要是对不需要拦截待外发的数据报文的情况进行说明,在不需要拦截的情况下,需要将该报文进行外发处理,发送到远端服务器中,以使得该远端服务器根据应用的请求进行对应的处理。

在一个可选的实施例中,确定不需要拦截上述待外发的数据报文包括:当通过监听所述session链表中的socket连接确定待外发的数据报文需要发送给用于处理待外发的数据报文的远端服务器时,根据待外发的数据报文的目标网络协议ip地址和端口确定应用的标识;在根据应用的标识确定应用为前台运行的应用的情况,确定不需要拦截待外发的数据报文。在本实施例中,将发送该待外发的数据报文的应用是否是前台运行的应用来对待外发的数据报文进行拦截处理的方式仅是一种优选的实施例,在实际应用时,也可以根据其他拦截条件来对报文进行拦截,例如,根据应用是否处于白名单中来进行报文的拦截处理,或者,根据报文的发送时间段来进行拦截处理,等等。

在一个可选的实施例中,在将上述待外发的数据报文转发给预定网卡之后,上述方法还包括:通过监听所述session链表中的socket连接确定接收到来自预定服务器的接收数据报文;根据接收数据报文的包头信息在session链表中查找与接收数据报文对应的session,并从查找到的与接收数据报文对应的session中读取待接收数据报文的应用的地址信息;将接收数据报文转发给应用。在本实施例中,预定服务器在对应用的请求进行处理之后,会返回对应的处理结果,即上述的接收数据报文,进而可以将该接收数据报文转发给应用。

在一个可选的实施例中,将上述接收数据报文转发给上述应用包括:对上述接收数据报文进行重组;将重组后的接收数据报文写入虚拟网络设备tun口中,以使该虚拟tun口将重组后的接收数据报文发送给上述应用。在本实施例中,可以通过tun口将接收数据报文转发给应用。

由上述的实施例可知,本发明主要是通过如下步骤实现的流量管控:

1.启动流量管控功能,用户确认创建vpn连接后,流量管控应用启动vpn服务重定向终端数据到虚拟tun口。

2.流量管控应用监听tun口有数据报文写入时,读取原始报文,根据拦截规则判断是否拦截,后转发给真实网卡,真实网卡转发给远端服务器;同时流量监控应用根据网络协议给终端应用回复控制响应。

3.流量管控应用监听智能终端接收到数据时,将原始数据报文进行重组写入tun口,tun口转发报文给终端应用。具体的整体结构框图可以参考图3。

通过本发明的上述实施例,由于终端的流量管控装置能够实现从tun读取数据,进行数据报文的重组、拦截判断、然后转发给真实网卡(即,上述的预定网卡),能自动实现限制智能终端后台运行的应用流量发送和接收。因此,可以解决用户智能终端后台应用偷跑流量的问题,达到对用户智能终端应用流量管控,为用户节省网络费用的效果。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

在本实施例中还提供了一种报文处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图4是根据本发明实施例的报文处理装置的结构框图,如图4所示,该装置包括如下模块:

获取模块42,用于获取来自终端中的应用的待外发的数据报文;拦截模块44,连接至上述获取模块42,用于在确定需要拦截所述待外发的数据报文时,对所述待外发的数据报文进行外发拦截。

在一个可选的实施例中,上述装置还包括读取单元,用于在监听到终端中的虚拟网络设备tun口中有数据写入时,从tun口中读取待外发的数据报文,其中,该终端中的应用的待外发的数据均会重定向到tun口。

在一个可选的实施例中,上述装置还包括查找模块,用于在获取来自上述终端中的应用的待外发的数据报文之后,根据待外发的数据报文的包头信息在会话session链表中查找是否存在与该待外发的数据报文对应的session;更新模块,用于在确定存在的情况下,根据该待外发的数据报文更新与待外发的数据报文对应的session;创建模块,用于在确定不存在的情况下,创建新的session,并根据新的session中的地址信息创建新的套接字socket连接。

在一个可选的实施例中,上述装置可以通过如下方式确定需要拦截上述待外发的数据报文:当通过监听session链表中的socket连接确定上述待外发的数据报文需要发送给用于处理待外发的数据报文的远端服务器时,根据该待外发的数据报文的目标网络协议ip地址和端口确定上述应用的标识;在根据应用的标识确定应用为非前台运行的应用的情况,确定需要拦截上述待外发的数据报文。

在一个可选的实施例中,上述装置还用于在获取来自上述终端中的应用的待外发的数据报文之后,在确定不需要拦截所述待外发的数据报文时,将上述待外发的数据报文转发给预定网卡,并指示该预定网卡将待外发的数据报文转发给用于处理该待外发的数据报文的预定服务器。

在一个可选的实施例中,上述装置可以通过如下方式确定不需要拦截上述待外发的数据报文:当通过监听上述session链表中的socket连接确定待外发的数据报文需要发送给用于处理该待外发的数据报文的远端服务器时,根据上述待外发的数据报文的目标网络协议ip地址和端口确定上述应用的标识;在根据上述应用的标识确定应用为前台运行的应用的情况,确定不需要拦截该待外发的数据报文。

在一个可选的实施例中,上述装置还用于在将上述待外发的数据报文转发给上述预定网卡之后,通过监听上述session链表中的socket连接确定接收到来自预定服务器的接收数据报文;根据该接收数据报文的包头信息在session链表中查找与接收数据报文对应的session,并从查找到的与接收数据报文对应的session中读取待接收该接收数据报文的应用的地址信息;将接收数据报文转发给应用。

在一个可选的实施例中,上述装置可以通过如下方式将接收数据报文转发给上述应用:对接收数据报文进行重组;将重组后的接收数据报文写入虚拟网络设备tun口中,以使该虚拟tun口将重组后的接收数据报文发送给上述应用。

在一个可选的实施例中,图4所示的报文处理装置是可以应用于终端中的流量管控装置中,下面以该智能终端中的流量管控装置为例,对本发明进行说明:

本实施例中的流量管控装置可以执行如下操作:

1.流量管控装置中的业务模块启动智能终端自带的vpnservice服务,vpnservice服务启动后,会创建虚拟tun口,智能终端上所有应用外发的数据报文都会重定向发给虚拟的tun口。

2.流量管控装置中的主控模块(对应于上述的获取模块42)监听虚拟tun口,当tun口有数据写入时,从tun口读取数据报文到缓存。

3.主控模块读取缓存中数据报文的包头信息,包括ip地址信息、端口信息、协议状态信息、窗口信息等,根据报文包头中的传输协议类型,调用不同的传输协议的数据收发模块进行处理,传输协议包括tcp、udp和icmp等。

4.流量管控装置中的数据收发模块根据数据报文包头信息创建session。创建session时,会先到session链表中找,如果是同一种协议报文,且地址一致,则认为session已经存在,相反如果session不存在,则创建新的session,并根据session中的地址信息创建新的socket连接,用于数据的转发。

5.数据收发模块监听session链表中所有的socket连接,当有数据需要发送给远端服务器时,调用拦截模块进行管控。拦截模块根据发送的数据报文的目标ip和端口,找到对应的终端应用的标识uid,再跟用户当前正在前台使用的终端应用uid比较,如果为前台运行应用发送的数据,则调用session中的socket连接,将原始数据报文转发给真实网卡,真实网卡再转发给远程服务器,否则拦截。

6.当远端服务器有数据报文发送给智能终端真实网卡时,可以监听到转发socket有数据接收,数据收发模块从socket读取数据到缓存,根据数据报文包头中的地址信息在session链表中找到对应的session,从session中读取终端应用地址信息,将接收的数据报文进行重组后写入虚拟tun口,虚拟tun口会转发数据给终端应用。

7.主控模块维护所有应用的网络连接信息,并隔固定时间清除超时的连接。

下面结合具体实施例对本发明进行说明:

具体实施例一

图5是根据本发明具体实施例一的终端应用数据发送处理图,如图5所示,包括如下步骤:

步骤s501监听tun口是否有数据需要发送。

步骤s502判断是否为epoll错误事件,如果是,则进入错误处理。

步骤s503如果是数据读取事件,则从tun口读取数据到缓存。

步骤s504对数据报文进行格式检查和协议判断。如果是tcp协议报文,则跳转到s505;如果是udp协议报文,则跳转到s517;如果是icmp协议报文,则跳转到s522。

步骤s505调用tcp数据报文收发处理模块处理,判断是否是紧急包。如果不是紧急包则跳转到s506;如果是紧急包则跳转到s507。

步骤s506进行tcp报文的合法性检测,如果报文合法则跳转到s508,如果报文不合法则跳转到s509。

步骤s507丢弃。

步骤s508从session链表中寻找当前tcpsession,判断是否存在,不存在,并且报文为syn包,则跳转到s510,存在则跳转到s511.如果不是syn包,则表示错误包,跳转到s509。

步骤s509丢弃。

步骤s510创建新的session。session记录协议类型、时间、uid、版本、地址、id等(还有其他字段)信息,并调用系统socket建立传输控制协议(transfercontrolprotocol,简称为tcp)连接,protect连接,使从该socket发出的数据不会被tun截获,在epoll注册该socket的读取和错误事件监听,之后把新的session加入session链表中。

步骤s511在session链表中更新有效时间、id、发送总长度等信息。

步骤s512判断数据报文是否是tcp状态包,如果是,则跳转到s513;如果不是,则是数据包,跳转到s514。

步骤s513根据tcp协议,按包状态信息进行出错或者状态转移修改,响应终端应用,并更新session中tcp状态。

步骤s514先判断session中tcp状态,如果是tcp_closing或者tcp_close,则表明已经关闭,跳转到s515;如果未关闭,则跳转到s516。

步骤s515不发送数据。

步骤s516将数据存入session的发送数据队列中。

步骤s517调用udp数据收发处理模块,从session链表中寻找当前udpsession,如果不存在,则跳转到s518;存在,则跳转到s519。

步骤s518创建新的session,记录协议、时间、uid、版本、地址、id等信息,并调用系统socket新建udp连接,protect连接,使从该socket发出的数据不会被tun截获。在epoll注册该socket的读取和错误事件监听,之后把新的session加入session队列中。

步骤s519找到对应的session,在session中更新有效时间、id、发送总长度等信息。

步骤s520判断是否是dns包或dhcp包,进行重组处理。

步骤s521进行是否拦截判断,如果是前台应用发出的报文,则跳转到s522,如果是后台应用发出的报文,则跳转到s523。

步骤s522重组udp包,修改当前id,重新计算校验和,修改地址信息,通过新的socket发送到远端服务器。

步骤s523需要拦截,不发送。

步骤s524调用icmp数据收发处理模块处理,包检查类型,如果支持,跳转到s523,不支持跳转到s526。

步骤s525从session链表中寻找当前icmpsession,如果不存在,则跳转到s526;如果存在,则跳转到s527。

步骤s526跳过不支持的类型。

步骤s527创建新的session,记录协议、时间、uid、版本、地址、id等信息,并调用系统socket新建icmp连接,protect连接,使从该socket发出的数据不会被tun截获。在epoll注册该socket的读取和错误事件监听,之后把新的session加入session队列。

步骤s528找到对应的session,在session中更新有效时间、id等信息。

步骤s529进行是否拦截判断,如果是前台应用发出的报文,则跳转到s530,如果是后台应用发出的报文,则跳转到s531。

步骤s530重组icmp包,修改当前id,重新计算校验和,地址信息,通过新的socket发送到远端服务器。

步骤s531需要拦截,不发送。

具体实施例二

图6是根据本发明具体实施例二的数据转发和接收处理流程图,如图6所示,包括如下步骤:

步骤s601如果监听到epoll事件,说明socket有数据需要发送或接收。

步骤s602拷贝数据到缓存。

步骤s603对数据报文进行格式检查和协议判断。如果是tcp协议报文,则跳转到s604;如果是udp协议报文,则跳转到s610;如果是icmp协议报文,则跳转到s615。

步骤s604调用tcp数据报文收发处理模块。判断epoll事件,如果是epollerror事件则跳转到s605;如果是epollout事件,则跳转到s606;如果是eppollin事件,则跳转到s611。

步骤s605进行错误处理。

步骤s606接收从远端发送的数据,获取当前接收窗口大小,如果有转发数据,则判断转发数据是否确认接收。如果tcp状态为tcp_established或者tcp_close_wait,则获取发送窗口大小,用该buffer接收数据,如果数据长度小于0,跳转到s607,如果数据长度等于0,则跳转到s608,如果数据长度大于0,则跳转到s609。否则,提示还有数据没有发送完毕。

步骤s607标识出错,发送fin指令给应用并关闭socket。

步骤s608说明为结束数据报文,此时如果没有转发数据,则可以发送fin指令给应用并关闭socket。

步骤s609表示数据传输,重组tcp报文,修改地址信息。

步骤s610把重组后的tcp报文发送到tun口。

步骤s611说明需要转发数据,对转发数据进行是否拦截判断,如果是终端前台应用数据,则跳转到s612;如果是后台应用数据,则跳转到s613。

步骤s612通过新的socket转发给远端服务器。

步骤s613需要拦截,不发送。

步骤s614调用udp数据收发处理模块处理,判断epoll事件,如果是epollerror事件则跳转到s615;如果是eppollin事件,则跳转到s616。

步骤s615进行错误处理。

步骤s616从socket获取数据到buffer,修改session链表中该udpsession对应的接收长度。

步骤s617如果是dns响应,则调额外处理。

步骤s618重组udp报文,修改地址信息。

步骤s619把重组后的udp报文发送到tun口。

步骤s620调用icmp数据收发处理模块处理,判断epoll事件,如果是epollerror事件则跳转到s621;如果是eppollin事件,则跳转到s622。

步骤s621进行错误处理。

步骤s622从socket获取数据buffer。

步骤s623重组icmp报文,恢复icmpid,计算icmp校验和,修改地址信息。

步骤s624把重组后的icmp报文发送到tun口。

具体实施例三

图7是根据本发明具体实施例三的session维护处理流程如图,如图7所示,包括如下步骤:

步骤s701遍历session链表,检查session记录。

步骤s702对session中数据报文类型进行协议判断。如果是tcp协议报文,则跳转到s703;如果是udp协议报文,则跳转到s708;如果是icmp协议报文,则跳转到s713。

步骤s703调用tcp数据收发处理模块处理,判断tcp状态是否超时。

步骤s704如果超时,且tcp状态为listen,则标记sessiontcp状态为closing状态。

步骤s705如果sessiontcp状态为closing、close状态,关闭session中的socket,标记sessiontcp状态为close状态。

步骤s706session中数据发送长度清零。

步骤s707session中数据接收长度清零。

步骤s708调用udp数据收发处理模块处理,判断udp状态是否超时。

步骤s709如果超时,则标记sessiontcp状态为finishing状态。

步骤s710如果sessiontcp状态为udp_finishing、udp_closed、udp_blocked,如果是,关闭session中的socket,标记sessionudp状态为closed状态。

步骤s711session中数据发送长度清零。

步骤s712session中数据接收长度清零。

步骤s713调用icmp数据收发处理模块处理,判断udp状态是否超时。

步骤s714关闭session中的socket。

步骤s715清除session链表中无效的session。

本发明的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项所述的方法。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本发明的实施例还提供了一种处理器,该处理器用于运行程序,其中,该程序运行时执行上述任一项方法中的步骤。

通过上述实施例,可以解决用户智能终端后台应用偷跑流量的问题,本发明中的实施例能够在智能终端免root,且不需要搭建vpn服务器条件下,实现对用户智能终端应用的流量管控,从而达到防止后台应用偷跑流量,为用户节省网络费用的目的。具体可以达到以下效果:

1)智能终端免root。不需改变用户智能终端的设置,避免为了实现防后台应用流量偷跑,而给用户带来的操作智能终端的复杂度。2)不需要额外建立vpn服务器。在卫星网络环境下,空口资源有限,避免了用户终端与vpn服务器建立vpn连接后,带来额外的网络开销。3)在本发明技术基础上,实现了用户智能终端的后台应用防偷跑拦截功能,为用户节省了流量费用。4)本发明不仅用于海洋卫星网络通讯,还适用于飞机、车载、高山、煤矿等现有移动网络无法通讯的地方的卫星网络通讯。5)本发明不仅用于卫星网络通讯领域,还适用于国际漫游、移动wifi、偏远地区或国家等wifi费用昂贵的网络领域。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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