专利名称:一种转发数据的方法及网关的制作方法
技术领域:
本发明涉及通信技术领域,尤其涉及一种转发数据的方法及网关。
背景技术:
在通信系统中,客户端连接互联网时,为了实现对客户端的访问进行控制或计费, 甚至于进行页面适配或者广告插入等动作,通常可以使用网关设备来完成。网关在采用不同体系结构或协议的网络之间进行互通时,用于提供协议转换、路由选择、数据交换等网络兼容功能的设施。网关可以分为显式网关或者透明代理网关方式。以显式网关为例,网关拥有自己的监听地址,客户端需要配置网关地址才能正常访问互联网。在现有技术中,网关转发数据的流程可以如下所示终端直接访问网关并将请求发送给网关,网关解析处理后将请求转发给真正的服务器,服务器将对客户端的响应首先返回给网关,网关处理完响应后再转发给终端。可以看出在现有技术中,终端与服务器之间的数据交互是由网关进行转发的,因此需要在终端上配置网关地址,甚至还需要根据不同的协议配置不同的网关地址,这就使现有技术中的数据转发过程较为繁琐,网关转发数据的效率较低。
发明内容
本发明实施例提供一种转发数据的方法及网关,以解决现有技术中数据转发过程较为繁琐使网关转发数据的效率较低的问题。为解决上述技术问题,本发明实施例提供了一种转发数据的方法,该方法包括在客户端与服务器之间的TCP连接上接收数据报文,并依据所述数据报文的协议判断所述数据报文是否需要在应用层转发,如果是,则在应用层转发所述数据报文,如果否,则在网络层转发所述数据报文。本发明实施例提供了一种网关,该网关包括接收模块,用于在客户端与服务器之间的TCP连接上接收数据报文;判断模块,用于依据所述数据报文的协议判断所述数据报文是否需要在应用层转发;转发模块,用于当所述判断模块的结果为是时,在应用层转发所述数据报文,或者,当所述判断模块的结果为否时,在网络层转发所述数据报文。本发明实施例具有以下优点在本发明实施例中,网关可以判断数据报文是否需要进行应用层转发,在不需要时直接进行网络层转发,在需要时才进行应用层转发,因此通过对数据报文的转发需求的判断,可以由网关来识别出不同协议的数据报文应该做什么样的后续处理,并且因为本发明实施例的网关具有了识别数据报文的功能,所以就不需要在终端侧来配置网关地址,使得数据转发的过程相对简单,因此也可以提高网络数据的转发效率。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本发明的转发数据的方法实施例一的流程图;图2是方法实施例一中步骤102的流程图;图3是本发明的转发数据的方法实施例二的流程图;图4是本发明的转发数据的方法实施例三的流程图;图5是本发明的网关实施例的结构示意图;图6是本发明的网关实施例中判断模块的结构示意图;图7是本发明的网关实施例中转发模块的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。开放式系统互连(0SI,Open System Interconnec),是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 其中,本发明实施例中涉及的应用层为最高层7层,网络层为3层,传输层为4层。为使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明实施例作进一步详细的说明。参考图1,在本发明实施例一中,实现本发明实施例一所提供的方法可以包括以下步骤步骤101 网关在客户端与服务器之间的TCP连接上接收数据报文,并依据所述数据报文的协议判断所述数据报文是否需要在应用层转发,如果是,则进入步骤103,如果否, 则进入步骤104。在实际应用中,客户端与服务器之间的传输控制协议(TCP,Transmission Control Protocol)可以预先建立。客户端通过网关向服务器发送SYN信息,服务器再通过网关向客户端返回SYN ACK信息以建立TCP连接。而网关相当于通过解析并转发客户端和服务器之间的连接建立请求,使客户端和服务器正常建立了 TCP连接。在建立TCP连接的过程中,网关仅保存SYN中的TCP选项,这些选项决定了建立的TCP连接的特性。网关再在建立的TCP连接上接收数据报文,并依据数据报文的协议判断该数据报文是否需要在应用层转发。请参考图2所示,在步骤102中进行判断的步骤,在实际应用中,可以包括图2所示的流程步骤201 对所述数据报文进行协议识别,以得到所述数据报文的应用协议;
网关首先对数据报文进行协议识别,如果数据报文应用了应用层协议,则将进入步骤103执行应用层转发。例如,网关解析出数据报文的目标地址为一个特定的网址,而这个特定的网址又设置了需要插入广告,这种情况就需要进行应用层处理,因为无法在网络层(即是IP层)进行页面的广告插入。步骤202 判断所述应用协议是否为应用层协议,以及当前的TCP连接内容/协议内容是否能够在应用层实现。网关得到数据报文的应用协议时,就判断这个应用协议是否为应用层协议,并且当前的TCP连接内容以及协议内容是否能够在应用层实现。步骤102 网关在应用层转发所述数据报文。应用层转发数据报文即是7层转发,就是网关使用传统的OSI模型在最高层应用层上转发数据,在本发明实施例中由网关内置的TCP协议栈实现,在下一个实施例中将重点介绍TCP协议栈实现在应用层转发数据报文的过程。步骤103 网关在网络层转发所述数据报文。网络层转发也被称为3层转发,即是在网络层上转发数据。如果数据报文不需要进行应用层转发,本实施例中可以在网络层直接转发所述数据报文。本发明实施例中提及的网关可以部署在终端到服务器的路径上,即是将网关作为一个路由设备部署,从终端到服务器的数据报文就必定先通过网关。在本实施例中,网关可以在数据报文不需要进行应用层转发的时候,直接进行IP 层转发,且在数据报文需要进行应用层转发的时候才进行高性能消耗的应用层转发,因为在应用层转发数据报文时消耗的性能要高于数据报文在IP层转发或在应用层转发时消耗的性能,所以本实施例公开的在应用层转发和IP层转发之间的切换可以实现网关性能和功能的平衡,并且因为不需在客户端配置网关地址,因此本发明实施例还可以提高网络数据的转发效率。同时,网关在正常处理业务的同时,通过IP层和应用层之间数据报文的转发切换,能够提高网关性能和灵活性。参考图3,在本发明实施例二中,实现本发明实施例二所提供的方法可以包括以下步骤步骤301 网关在客户端与服务器之间的TCP连接上接收数据报文,并依据所述数据报文的协议判断得到所述数据报文需要在应用层转发。步骤302 启动TCP协议栈以及对应所述TCP连接的两个TCP状态机。在本实施例中,网关判断得到数据报文需要执行应用层转发时,首先会启动TCP 协议栈。所述TCP协议栈内置在所述网关中,可以在需要进行应用层转发时接管连接,即是模拟服务器端和客户端数据报文的交互过程。在执行应用层转发时,所有的数据报文都会被接收到应用层进行处理。内置TCP协议栈之后的网关工作在代理模式下,可以处理由客户端发往服务器的数据报文。本实施例中的TCP协议栈可以理解为增强TCP协议栈,普通的TCP协议栈针对一条TCP连接只有一个TCP状态机,而增强的TCP协议栈针对每个TCP连接却有两个TCP状态机,该两个TCP状态机分别对应客户端和服务器。当然,因为每一对客户端和服务器都有一对TCP状态机与之对应,所以如果客户端和服务器大于一对,那么相应的TCP状态机的个数也应该相应调整。因为在应用层转发时,分别对应于客户端和服务器的两个TCP状态机是不同步的,而在3层或者4层转发时却需要客户端和服务器的TCP状态机是同步的,所以本发明实施例通过对应于客户端和服务器设置两个TCP状态机就能够实现在7层转发和3 层或者4层转发之间的任意切换,具体实施时只需要分别转换对应于客户端和服务器的两个TCP状态机即可。所述TCP状态机可以用来表示当前TCP连接的状态,例如,当状态为“CLOSED”时表示当前的TCP连接处于“关闭状态,没有连接活动或正在进行”,本发明实施例中的TCP状态机可以使用一个具有11种状态的有限状态机(Finite State Machine)来表示,具体可以参考表1,为上述11种状态的说明。表 1
状态描述CLOSED关闭状态,没有连接活动或正在进行LISTEN监听状态,服务器正在等待连接进入SYN RCVD收到一个连接请求,尚未确认SYN SENT已经发出连接请求,等待确认ESTABLISHED连接建立,正常数椐传输状态FIN WAIT 1(主动关闭)已经发送关闭请求,等待确认FIN WAIT 2(主动关闭)收到对方关闭确认,等待对方关闭请求TIMED WAIT完成双向关闭,等待所有分组死掉CLOSING双方同时尝试关闭,等待对方确认CLOSE WAIT(被动关闭)收到对方关闭请求,已经确认LAST ACK(被动关闭)等待最后一个关闭确认, 并等待所有分组死掉步骤303 由TCP协议栈将所述数据报文在应用层进行转发。网关启动TCP协议栈之后,就由TCP协议栈对数据报文在应用层进行转发,具体处理可以包括TCP重组、分包以及重传等。步骤304 当所述TCP连接的数据报文转发完成时,TCP协议栈从用于应用层转发的两个TCP状态机切换至用于IP层转发的TCP状态机上。当对应于应用层转发的任务完成时,由应用层通知TCP协议栈本次业务访问结束,TCP协议栈将残留在缓存中的数据发送完成之后就放弃连接的接管,TCP协议栈此时将用于应用层转发的两个TCP状态机切换至用于IP层转发的TCP状态机上,通过TCP状态机的切换可以实现应用层转发到IP层转发的切换。在本实施例中,网关内置的TCP协议栈能够实现随时接管和放弃TCP连接,并且通过TCP状态机的设置能够支持在3层转发和7层转发之间的切换。参考图4,在本发明实施例三中,实现本发明实施例三所提供的方法可以包括以下步骤步骤401 在客户端与服务器之间的TCP连接上接收数据报文,并依据所述数据报文的协议判断得到所述数据报文不需要在应用层转发。步骤402 在网络IP层转发所述数据报文。步骤403 如果所述数据报文中的TCP序号进行了修改,则将修改了 TCP序号的数据报文在传输层进行转发。在本实施例中,当所述数据报文在IP层转发之后,如果数据报文中的TCP序号发生了变化,则需要将修改了 TCP序号的数据报文在传输层进行转发。传输层转发即是4层转发,在4层转发时不修改数据报文中的数据部分,但是为了使客户端和服务端的TCP序号对应上,网关会修改数据报文中的TCP序号部分之后再转发出去。通过本发明实施例中的描述可知,本发明实施例中的网关内置了 TCP协议栈,且对应一个TCP连接对应设置两个TCP状态机分别对应客户端和服务器,从而本发明实施例中的网关能够实现在3层转发、4层转发以及7层转发之间的切换,即是分别对应OSI中的网络层、传输层和应用层,进一步提升了网关的性能和灵活性。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。与上述本发明实施例所提供的方法相对应,参见图5,本发明实施例还提供了一种网关实施例的结构示意图,所述网关具体可以包括接收模块501,用于在立客户端与服务器之间的TCP连接上接收数据报文;判断模块502,用于依据所述数据报文的协议判断所述数据报文是否需要在应用层转发;参考图6所示,示出了判断模块503的结构示意图,如图所示,所述判断模块503 包括识别子模块601,用于对所述数据报文进行协议识别,以得到所述数据报文的应用协议;判断子模块602,用于判断所述应用协议是否为应用层协议,以及当前的TCP连接内容/协议内容是否能够在应用层实现。转发模块503,用于当所述判断模块503的结果为是时,在应用层转发所述数据报文,或者,当所述判断模块503的结果为否时,在网络层转发所述数据报文。本实施例公开的网关可以在数据报文不需要进行应用层转发的时候,直接进行IP层转发,且在数据报文需要进行应用层转发的时候才进行较高性能的应用层转发,通过数据报文在IP层转发和应用层转发之间的切换,以实现网关性能和功能的平衡,并且因为不需在客户端配置网关地址,因此本发明实施例还可以提高网络数据的转发效率。同时,网关在正常处理业务的同时,通过IP层和应用层的数据报文转发之间的切换,能够提高网关性能和灵活性。在实际应用中的不同实施例中,参考图7所示,所述转发模块504具体可以包括触发子模块701,用于启动TCP协议栈以及对应所述TCP连接的两个TCP状态机, 所述TCP协议栈中一个TCP连接对应两个TCP状态机;TCP协议栈702,用于将所述数据报文在应用层进行转发。在实际应用中的不同实施例中,当所述TCP连接的数据报文转发完成时,所述TCP 协议栈702还用于从用于应用层转发的两个TCP状态机切换至用于IP层转发的TCP状态机上。在实际应用中的不同实施例中,所述转发模块504具体还可以用于如果所述数据报文中的TCP序号进行了修改,则将修改了 TCP序号的数据报文在传输层进行转发。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。 对于网关类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素, 而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固
有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在
包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括ROM、RAM、磁盘或光盘等。以上对本发明实施例所提供的一种转发数据的方法及网关进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明实施例的方法及其思想;同时,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种转发数据的方法,其特征在于,该方法包括在客户端与服务器之间的TCP连接上接收数据报文,并依据所述数据报文的协议判断所述数据报文是否需要在应用层转发,如果是,则在应用层转发所述数据报文,如果否,则在网络层转发所述数据报文。
2.根据权利要求1所述的方法,其特征在于,所述依据所述数据报文的协议判断是否数据报文是否需要在应用层转发,包括对所述数据报文进行协议识别,以得到所述数据报文的应用协议;判断所述应用协议是否为应用层协议,以及当前的TCP连接内容和/或协议内容是否能够在应用层实现。
3.根据权利要求1所述的方法,其特征在于,一个TCP连接对应两个TCP状态机,则所述在应用层转发数据报文,包括启动TCP协议栈以及对应所述TCP连接的两个TCP状态机,所述TCP协议栈中一个TCP 连接对应两个TCP状态机;由所述TCP协议栈将所述数据报文在应用层进行转发。
4.根据权利要求3所述的方法,其特征在于,所述由TCP协议栈将所述数据报文在应用层进行转发之后,还包括当所述TCP连接的数据报文转发完成时,TCP协议栈从用于应用层转发的两个TCP状态机切换至用于网络层转发的TCP状态机上。
5.根据权利要求1所述的方法,其特征在于,所述在网络层转发所述数据报文之后,还包括如果所述数据报文中的TCP序号进行了修改,则将修改了 TCP序号的数据报文在传输层进行转发。
6.一种网关,其特征在于,包括接收模块,用于在客户端与服务器之间的TCP连接上接收数据报文;判断模块,用于依据所述数据报文的协议判断所述数据报文是否需要在应用层转发;转发模块,用于当所述判断模块的结果为是时,在应用层转发所述数据报文,或者,当所述判断模块的结果为否时,在网络层转发所述数据报文。
7.根据权利要求6所述的网关,其特征在于,所述判断模块包括识别子模块,用于对所述数据报文进行协议识别,以得到所述数据报文的应用协议;判断子模块,用于判断所述应用协议是否为应用层协议,以及当前的TCP连接内容/协议内容是否能够在应用层实现。
8.根据权利要求7所述的网关,其特征在于,所述转发模块包括触发子模块,用于启动TCP协议栈以及对应所述TCP连接的两个TCP状态机,所述TCP 协议栈中一个TCP连接对应两个TCP状态机;TCP协议栈,用于将所述数据报文在应用层进行转发。
9.根据权利要求8所述的网关,其特征在于,当所述TCP连接的数据报文转发完成时, 所述TCP协议栈还用于从用于应用层转发的两个TCP状态机切换至用于网络层转发的TCP 状态机上。
10.根据权利要求6所述的网关,其特征在于,所述转发模块还用于如果所述数据报文中的TCP序号进行了修改,则将修改了 TCP序号的数据报文在传输层进行转发。
全文摘要
一种转发数据的方法及网关,所述方法包括建立客户端与服务器之间的传输控制协议TCP连接;在建立的TCP连接上接收数据报文,并依据所述数据报文的协议判断所述数据报文是否需要在应用层转发,如果是,则在应用层转发所述数据报文,如果否,则在网络层转发所述数据报文。应用本发明实施例的方法及网关,可以提升网关的性能和灵活性,且提升网关转发数据的效率。
文档编号H04L29/08GK102215231SQ20111014952
公开日2011年10月12日 申请日期2011年6月3日 优先权日2011年6月3日
发明者周波, 甘化新, 胡军伟 申请人:华为软件技术有限公司