具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明报文传输方法一个实施例的流程图,如图1所示,该报文传输方法可以包括:
步骤101,通过第二数据端口在回环连接上进行侦听,获得数据报文;其中,第二数据端口的端口号与预先获得的服务器的第一数据端口的端口号相同。
在本实施例的一种实现方式中,在通过第二数据端口在回环连接上进行侦听,获得数据报文之前,客户端可以通过与代理网关之间建立的隧道以及该代理网关与服务器之间建立的控制通道,获得并保存代理网关转发的上述服务器的IP地址和第一数据端口的端口号。
在本实施例的另一种实现方式中,在通过第二数据端口在回环连接上进行侦听,获得数据报文之前,客户端可以通过与代理网关之间的隧道向代理网关发送第一控制报文,以使代理网关通过该代理网关与服务器之间建立的控制通道将第一控制报文转发至服务器,该第一控制报文中携带服务器的IP地址;然后,客户端可以接收代理网关通过上述隧道转发的第二控制报文,该第二控制报文由上述服务器通过上述控制通道发送至代理网关,且携带上述服务器的IP地址以及上述服务器根据第一控制报文产生的第一数据端口的端口号;客户端可以解析第二控制报文,获得并保存上述服务器的IP地址和第一数据端口的端口号。
接下来,客户端可以将解析后的第二控制报文中携带的上述服务器的IP地址替换为回环地址,并根据该回环地址建立回环连接,然后客户端可以通过开启的第二数据端口在上述回环连接上进行侦听,获得数据报文。
本实施例中,前一种实现方式中的“客户端可以通过与代理网关之间建立的隧道以及该代理网关与服务器之间建立的控制通道,获得并保存代理网关转发的上述服务器的IP地址和第一数据端口的端口号”这一过程在具体实现时,可以参照后一种实现方式提供的方法;当然,也可以采用其他方法实现,本实施例对此不作限定。
步骤102,根据第二数据端口的端口号以及预先保存的上述服务器的IP地址和第一数据端口的端口号的对应关系将封装后的数据报文发送至代理网关。
其中,该封装后的数据报文中携带有上述服务器的IP地址和第一数据端口的端口号,以使代理网关根据该IP地址和第一数据端口的端口号与上述服务器建立数据通道,将封装后的数据报文发送至上述服务器。
上述实施例中,客户端对控制报文进行处理,无需代理网关对控制报文进行处理;并且客户端与代理网关通过该客户端与该代理网关之间建立的隧道,交互客户端的控制报文和数据报文,避免了在代理网关上开启多个数据端口进行报文的侦听;上述实施例中,代理网关仅用于报文的转发,从而减轻了代理网关的处理负载,提高了使用代理网关的网络的安全性。
本发明实施例提供的报文传输方法可以应用于图2所示的应用场景中,图2为本发明实施例提供的一个应用场景的示意图,如图2所示,客户端中增加了应用处理装置,该应用处理装置与代理网关间建立有隧道,该应用处理装置与代理网关通过上述隧道交互该客户端的应用程序模块发送的控制报文和数据报文。代理网关与服务器间建立有控制通道和数据通道,代理网关与服务器通过控制通道交互客户端的应用程序模块发送的控制报文,代理网关与服务器通过数据通道交互客户端的应用程序模块发送的数据报文。
图3为本发明报文传输方法另一个实施例的流程图,本实施例提供的报文传输方法可以用于图2所示的应用场景中。
如图3所示,该报文传输方法可以包括:
步骤301,在客户端启用应用处理装置,该应用处理装置建立与代理网关之间的隧道。
具体地,在客户端启用应用处理装置之后,该应用处理装置可以与代理网关之间建立传输控制协议(Transmission Control Protocol;以下简称:TCP)连接,该TCP连接即为该应用处理装置与该代理网关之间的隧道,用于在应用处理装置与代理网关之间交互该客户端的应用程序模块发送的控制报文和数据报文。
步骤302,应用处理装置截获客户端的应用程序模块发送的第一控制报文,通过建立的隧道向代理网关发送该第一控制报文,该第一控制报文中携带服务器的IP地址。
具体地,当启用客户端访问企业内部的服务器时,客户端的应用程序模块发送第一控制报文,该第一控制报文携带企业内部的服务器的IP地址,例如:该企业内部的服务器的IP地址可以为172.16.234.10。该客户端的应用处理装置截获到应用程序模块发送的第一控制报文之后,通过建立的隧道将该第一控制报文发送到代理网关。
步骤303,代理网关接收到该第一控制报文后,根据第一控制报文中携带的服务器的IP地址(例如:172.16.234.10)与对应的服务器建立控制通道,通过该控制通道将第一控制报文转发到服务器上。
步骤304,服务器接收到第一控制报文之后,随机分配一个第一数据端口用来进行数据报文的侦听,并将该第一数据端口的端口号(例如:2176)和该服务器的IP地址(例如:172.16.234.10)携带在第二控制报文中,通过代理网关和服务器间建立的控制通道发送到代理网关。
步骤305,代理网关接收到第二控制报文之后,通过隧道将该第二控制报文转发给客户端的应用处理装置,该第二控制报文携带有服务器的IP地址(例如:172.16.234.10)和第一数据端口的端口号(例如:2176)。
步骤306,客户端的应用处理装置接收到第二控制报文之后,解析该第二控制报文,获得服务器的IP地址(例如:172.16.234.10)和第一数据端口的端口号(例如:2176),并保存服务器的IP地址(例如:172.16.234.10)和第一数据端口的端口号(例如:2176)的对应关系,开启第二数据端口进行数据报文的侦听,该第二数据端口的端口号与第一数据端口的端口号(例如:2176)相同。
具体地,客户端的应用处理装置收到该第二控制报文后,对该第二控制报文进行解析,提取出第一数据端口的端口号(例如:2176)和服务器的IP地址(例如:172.16.234.10),并在本地创建与第一数据端口具有相同端口号的第二数据端口进行数据报文的侦听。
步骤307,客户端的应用处理装置将解析后的第二控制报文中携带的服务器的IP地址(例如:172.16.234.10)替换为回环地址(127.0.0.1),重新计算替换后的控制报文的长度,将替换后的控制报文封装为第三控制报文,并将该第三控制报文发送至客户端的应用程序模块。
其中,回环地址不属于任何一个有类别地址类,代表客户端的本地虚拟接口,所以默认被看作是永远不会宕掉的接口,回环地址可以为现有的固定地址127.0.0.1。
步骤308,接收到第三控制报文之后,客户端的应用程序模块根据该第三控制报文中的回环地址建立该应用程序模块与应用处理装置间的回环连接。
其中,回环连接即为根据回环地址建立的连接,即在客户端自身建立的回环连接,客户端既作为发送端也作为接收端,具体地,在本实施例中,可以是客户端的应用程序模块和应用处理装置之间的连接。
步骤309,通过开启的第二数据端口在回环连接上侦听到客户端的应用程序模块发送的数据报文之后,应用处理装置截获该应用程序模块发送的数据报文,并根据开启的第二数据端口的端口号(例如:2176)在该应用处理装置保存的服务器的IP地址与第一数据端口的端口号的对应关系中进行查找,获得与该第二数据端口的端口号(例如:2176)对应的服务器的IP地址(例如:172.16.234.10),并对截获的数据报文进行封装,以将第二数据端口的端口号(例如:2176)对应的服务器的IP地址(例如:172.16.234.10)携带在截获的数据报文中。
步骤310,客户端的应用处理装置将携带有服务器的IP地址(例如:172.16.234.10)和第二数据端口的端口号(例如:2176)的数据报文通过隧道发送到代理网关。
步骤311,接收到该数据报文之后,代理网关根据该数据报文中携带的服务器的IP地址(例如:172.16.234.10)和第二数据端口的端口号(例如:2176)与服务器建立数据通道,通过该数据通道将上述数据报文发送给服务器。
本实施例中,若代理网关需要同时向服务器传输至少一个数据报文时,那么代理网关与服务器之间可以建立至少一条数据通道,代理网关通过一条数据通道向服务器传输一个数据报文。
上述实施例中,对于服务器返回的协商后的控制报文,代理网关不做任何处理只转发给客户端,由客户端的应用处理装置对该控制报文进行解析和重新封装,这样使得代理网关不需要对控制报文做其他处理;并且应用处理装置与代理网关通过该应用处理装置与该代理网关之间建立的隧道,交互客户端的应用程序模块的控制报文和数据报文,避免了在代理网关上开启多个数据端口进行报文的侦听;上述实施例中,代理网关仅用于报文的转发,从而减轻了代理网关的处理负载,提高了使用代理网关的网络的安全性。
图4为本发明报文传输方法再一个实施例的流程图,本实施例从代理网关侧对本发明实施例提供的报文传输方法进行描述。如图4所示,该报文传输方法可以包括:
步骤401,通过与客户端之间建立的隧道以及与服务器之间建立的控制通道,将该服务器发送的该服务器的IP地址和第一数据端口的端口号转发给客户端。
具体地,代理网关可以通过与客户端之间建立的隧道接收该客户端发送的第一控制报文,将第一控制报文通过与服务器之间建立的控制通道转发至该服务器,该第一控制报文中携带该服务器的IP地址;然后,代理网关可以接收服务器通过上述控制通道发送的第二控制报文,该第二控制报文携带上述服务器的IP地址以及上述服务器根据第一控制报文产生的第一数据端口的端口号;代理网关将该第二控制报文通过与客户端之间建立的隧道发送给该客户端。
步骤402,通过上述隧道接收客户端发送的数据报文,该数据报文中携带有服务器的IP地址和第一数据端口的端口号。
步骤403,根据数据报文中携带的服务器的IP地址和第一数据端口的端口号与该服务器建立数据通道,将该数据报文通过上述数据通道发送给服务器。
上述实施例中,代理网关无需对控制报文进行处理,代理网关仅用于报文的转发,从而减轻了代理网关的处理负载,并且代理网关与客户端通过该客户端与该代理网关之间建立的隧道,交互客户端的控制报文和数据报文,避免了在代理网关上开启多个数据端口进行报文的侦听,提高了使用代理网关的网络的安全性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可获取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
图5为本发明客户端一个实施例的结构示意图,本实施例中的客户端可以实现本发明图1所示实施例的流程。如图5所示,该客户端可以包括:报文获得模块51和报文发送模块52。其中:
报文获得模块51,用于通过第二数据端口在回环连接上进行侦听,获得数据报文,该第二数据端口的端口号与预先获得的服务器的第一数据端口的端口号相同;
报文发送模块52,用于根据第二数据端口的端口号以及预先保存的上述服务器的IP地址和第一数据端口的端口号的对应关系将封装后的数据报文发送至代理网关,该封装后的数据报文中携带有上述服务器的IP地址和第一数据端口的端口号;以使代理网关根据该IP地址和第一数据端口的端口号与上述服务器建立数据通道,将封装后的数据报文发送至上述服务器。
上述实施例中的客户端可以对控制报文进行处理,无需代理网关对控制报文进行处理,代理网关仅用于报文的转发,从而减轻了代理网关的处理负载。并且客户端与代理网关通过该客户端与该代理网关之间建立的隧道,交互客户端的控制报文和数据报文,避免了在代理网关上开启多个数据端口进行报文的侦听,提高了使用代理网关的网络的安全性。
图6为本发明客户端另一个实施例的结构示意图,与图5所示的客户端相比,不同之处在于,图6所示的客户端还可以包括:获得模块53;
获得模块53,用于通过与代理网关之间建立的隧道以及该代理网关与服务器之间建立的控制通道,获得并保存代理网关转发的服务器的IP地址和第一数据端口的端口号。
上述实施例中的客户端可以对控制报文进行处理,无需代理网关对控制报文进行处理,代理网关仅用于报文的转发,从而减轻了代理网关的处理负载;并且客户端与代理网关通过该客户端与该代理网关之间建立的隧道,交互客户端的控制报文和数据报文,避免了在代理网关上开启多个数据端口进行报文的侦听,提高了使用代理网关的网络的安全性。
图7为本发明客户端再一个实施例的结构示意图,与图5所示的客户端相比,不同之处在于,图7所示的客户端还可以包括:控制报文发送模块54、接收模块55和解析模块56;
其中,控制报文发送模块54,用于通过与代理网关之间建立的隧道向代理网关发送第一控制报文,以使代理网关通过该代理网关与服务器之间建立的控制通道将第一控制报文转发至服务器,该第一控制报文中携带有上述服务器的IP地址;
接收模块55,用于接收代理网关通过上述隧道转发的第二控制报文,该第二控制报文由服务器通过控制通道发送至代理网关,且携带有服务器的IP地址以及该服务器根据第一控制报文产生的第一数据端口的端口号;
解析模块56,用于解析第二控制报文,获得服务器的IP地址和第一数据端口的端口号;
保存模块57,用于保存解析模块56获得的服务器的IP地址和第一数据端口的端口号。
进一步地,本实施例中,客户端还可以包括:封装模块58和建立模块59;其中:
封装模块58,用于将解析模块56解析后的第二控制报文中携带的服务器的IP地址替换为回环地址;
建立模块59,用于根据该回环地址建立回环连接;这样,报文获得模块51就可以通过第二数据端口在建立模块59建立的回环连接上进行侦听,获得数据报文。
上述实施例中的客户端可以对控制报文进行处理,无需代理网关对控制报文进行处理,代理网关仅用于报文的转发,从而减轻了代理网关的处理负载;并且客户端与代理网关通过该客户端与该代理网关之间建立的隧道,交互客户端的控制报文和数据报文,避免了在代理网关上开启多个数据端口进行报文的侦听,提高了使用代理网关的网络的安全性。
进一步地,在具体实现时,除本发明图5、图6或图7所示实施例中的模块之外,客户端还可以包括其他一些模块,例如:应用程序模块等,其中,该应用程序模块可以用于发送控制报文和数据报文。另外,本发明图5、图6或图7所示实施例中的模块可以按照实施例描述分布于客户端中,也可以进行相应变化位于不同于本发明图5、图6或图7所示实施例的一个或多个装置中。本发明图5、图6或图7所示实施例中的模块可以合并为一个模块,例如:本发明图5、图6或图7所示实施例中的模块可以作为本发明图2所示实施例中客户端的应用处理装置,或者该应用处理装置的一部分;当然本发明图5、图6或图7所示实施例中的模块也可以进一步拆分成多个子模块;本发明实施例对此不作限定。
图8为本发明代理网关一个实施例的结构示意图,本实施例中的代理网关可以实现本发明图4所示实施例的流程。如图8所示,该代理网关可以包括:发送模块81和报文接收模块82,其中:
发送模块81,用于通过与客户端之间建立的隧道以及与服务器之间建立的控制通道,将服务器发送的该服务器的IP地址和第一数据端口的端口号发送给客户端;
报文接收模块82,用于通过上述隧道接收客户端发送的数据报文,该数据报文中携带有服务器的IP地址和第一数据端口的端口号;
本实施例中,发送模块81还可以根据报文接收模块82接收的数据报文中携带的服务器的IP地址和第一数据端口的端口号与该服务器建立数据通道,将上述数据报文通过上述数据通道发送给服务器。
上述代理网关无需对控制报文进行处理,代理网关仅用于报文的转发,从而减轻了代理网关的处理负载,并且该代理网关与客户端通过该客户端与该代理网关之间建立的隧道,交互客户端的控制报文和数据报文,避免了在代理网关上开启多个数据端口进行报文的侦听,提高了使用代理网关的网络的安全性。
图9为本发明代理网关另一个实施例的结构示意图,与图8所示的代理网关相比,不同之处在于,图9所示的代理网关中,发送模块81可以包括:控制报文接收子模块811和转发子模块812;
其中,控制报文接收子模块811,用于通过与客户端之间建立的隧道接收客户端发送的第一控制报文;
转发子模块812,用于将控制报文接收子模块811接收的第一控制报文通过与服务器之间建立的控制通道转发至服务器,该第一控制报文中携带服务器的IP地址;
本实施例中,控制报文接收子模块811还可以接收服务器通过控制通道发送的第二控制报文,该第二控制报文携带服务器的IP地址以及该服务器根据第一控制报文产生的第一数据端口的端口号;
转发子模块812还可以将第二控制报文通过与客户端之间建立的隧道发送给客户端。
上述代理网关无需对控制报文进行处理,代理网关仅用于报文的转发,从而减轻了代理网关的处理负载;并且该代理网关与客户端通过该客户端与该代理网关之间建立的隧道,交互客户端的控制报文和数据报文,避免了在代理网关上开启多个数据端口进行报文的侦听,提高了使用代理网关的网络的安全性。
图10为本发明报文传输系统一个实施例的结构示意图,如图10所示,该报文传输系统可以包括:代理网关1001、服务器1002和客户端1003;
其中,客户端1003,用于获得服务器1002的IP地址和第一数据端口的端口号,保存该服务器1002的IP地址和第一数据端口的端口号的对应关系;通过开启的第二数据端口获得数据报文,该第二数据端口的端口号与第一数据端口的端口号相同;并根据第二数据端口的端口号以及保存的服务器1002的IP地址和第一数据端口的端口号的对应关系将封装后的数据报文发送至代理网关1001,该封装后的数据报文中携带有服务器1002的IP地址和第一数据端口的端口号;具体地,客户端1003可以通过本发明图5、图6或图7所示的客户端实现;
代理网关1001,用于通过与客户端1003之间建立的隧道以及与服务器1002之间建立的控制通道,将服务器1002发送的该服务器1002的IP地址和第一数据端口的端口号转发给客户端1003;通过上述隧道接收客户端1003发送的封装后的数据报文,并根据封装后的数据报文中携带的服务器1002的IP地址和第一数据端口的端口号与服务器1002建立数据通道,将封装后的数据报文通过上述数据通道发送给服务器1002;具体地,代理网关1001可以通过本发明图8或图9所示的代理网关实现。
上述实施例中,客户端1003对控制报文进行处理,无需代理网关1001对控制报文进行处理,代理网关1001仅用于报文的转发,从而减轻了代理网关1001的处理负载,并且客户端1003与代理网关1001通过该客户端1003与该代理网关1001之间建立的隧道交互客户端1003的控制报文和数据报文,避免了在代理网关1001上开启多个数据端口进行报文的侦听,提高了使用代理网关1001的网络的安全性。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。此外,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。