客户端主应用部件与目标服务器间进行通信的装置和方法

文档序号:7625003阅读:202来源:国知局
专利名称:客户端主应用部件与目标服务器间进行通信的装置和方法
技术领域
本发明涉及网络信息交互技术,尤其涉及一种当客户端所在私网与服务器所在公网之间引入转发设备时,为成功地实现客户端与服务器之间信息交互的装置和方法。
背景技术
随着因特网(Internet)的快速发展,各种新兴Internet应用层出不穷,Internet业务量迅猛增长,IP地址资源也越来越紧张,网络安全问题也日渐突出。为了解决I P地址资源日益匮乏、提高企业网络的安全性,许多企事业单位或城域网通过使用转发设备间接接入Internet,转发设备例如网络地址转换(NAT)设备/代理服务器/防火墙。
然而,当前某些较复杂的Internet应用需要端到端的直连网络才能完成通信,例如Internet上进行诸如网络电话、网络会议等多媒体通信应用的应用,这些应用要求客户终端的主应用部件与Internet上的目标服务器进行端到端的信息交互,并且,这类复杂的Internet应用通常具有以下一条或几条特性1、目标服务器动态分配与客户端主应用部件的通信端口;2、目标服务器与客户端主应用部件动态协商双方的通信端口;3、一次完整通信过程中需要使用目标服务器与客户端主应用部件之间的一个或一个以上TCP或UDP通信端口;4、所采用的通信协议都较为复杂,例如这些应用普遍采用的通信协议有H.323、SIP、MGCP、H.248/MECAGO等复杂的协议,而转发设备上一般不支持这种复杂的协议,因此可能阻碍主应用部件与目标服务器间端对端的通信。另外,某些复杂的通信协议(例如H.323协议)的交互方法为客户端主应用部件向目标服务器发送的报文中,除了报文头中携带源/目标IP地址和端口,在报文的数据部分还包括源IP地址和端口,目标服务器收到报文后,从报文的数据部分解析出源IP地址和端口,向解析出的IP地址和端口返回响应报文。这种交互方法要求客户端主应用部件与目标服务器直连才能正常通信;5、涉及公网主动发起的从公网到私网的通信;6、应用所处的网络环境多样化,网络设置不允许或很难改动;7、目标服务器相对固定,直接处于Internet上;8、目标服务器的软硬件很难变动。
在Internet中,由于许多私网和公网即Internet之间引入了转发设备,而依照现有的通信方法客户端主应用部件与目标服务器交互的信息无法穿透转发设备,因此会阻碍上述这些端到端应用的正常通信。以下根据上述应用的特性具体分析无法穿透转发设备的原因。
首先,假设私网与Internet之间引入的转发设备是防火墙,而防火墙要对通信端口进行限制,一般只开放有限的几个端口。然而上述复杂的应用中,客户端主应用部件与目标服务器之间的通信过程中要动态分配端口,通信端口在动态变化,很容易分配到防火墙没有开放的端口,因此容易导致通信失败;并且,客户端主应用部件与目标服务器可能协商多个通信端口,而防火墙开放的端口只是数量有限的几个,且防火墙的端口配置很难改变,因此难以通过开放通信端口来允许报文通行,普通用户通常也很难或根本不能更改网络设置,因此这些应用难以穿越防火墙进行通信。
其次,假设私网与Internet之间引入的转发设备是NAT/代理服务器,客户端主应用部件的IP地址为私网的IP地址。客户端主应用部件与目标服务器之间采用复杂的具有上述特性4的通信协议(例如H.323、SIP、MGCP、H.248/MECAGO等协议)进行交互。客户端主应用部件向目标服务器发送的报文首先到达该NAT/代理服务器,该NAT/代理服务器对报文头中的源IP地址和端口转换为本NAT的IP地址和端口再发送给目标服务器;按照具有特性4的协议的要求,目标服务器从报文数据部分解析出源IP地址和端口,向该源IP地址和端口返回响应报文;但是,数据部分包括的源IP和端口不是公网上的IP地址和端口,而是客户端私网上的IP地址和端口,因此返回的响应报文路由不到正确的目的IP地址和端口,从而不能到达客户端主应用部件,导致通信失败。
另外如果转发设备为代理服务器,则上述主应用部件所采用的协议是要求端到端通信的协议,不支持通过代理服务器进行交互的代理协议,因此客户端的主应用部件无法与代理服务器进行通信,更无法穿越代理服务器与目标服务器进行通信了。
还有,上述三种转发设备都会阻止主动从公网发起的到私网的通信过程。

发明内容
有鉴于此,本发明的主要目的在于提供一种客户端主应用部件与目标服务器之间进行通信的装置,以实现当客户端与服务器端之间引入转发设备时,可以通过该装置使交互信息穿透转发设备而进行正常通信。
本发明的另一目的在于提供一种客户端主应用部件与目标服务器之间进行通信的方法,以实现当客户端与服务器端之间引入转发设备时,可以使交互信息穿透转发设备而进行正常通信。
为了实现上述发明目的,本发明的主要技术方案为一种客户端主应用部件与目标服务器之间进行通信的装置,适用于客户端与目标服务器之间引入转发设备的通信系统,该装置包括位于客户端的中转部件和位于服务器端的中转服务器;中转部件和中转服务器之间通过专用信道和内部协议穿透转发设备进行通信;中转部件和中转服务器用于建立主应用部件到目标服务器之间的逻辑通道,该逻辑通道建立在所述中转部件和中转服务器间的专用信道之上;主应用部件和目标服务器通过中转部件和中转服务器所建立的逻辑通道进行通信。
优选的,所述中转部件与中转服务器之间的专用信道为一个传输控制协议TCP或用户数据报协议UDP通信连接,且其端口采用转发设备的开放端口。
优选的,所述中转服务器包括端口分配模块,用于根据主应用部件的端口请求分配本地端口,以此建立所述逻辑通道。所述端口分配模块具体包括但不限于用于分配单个TCP端口的分配模块、用于分配单个UDP端口的分配模块、用于分配两个连续UDP端口的分配模块。
优选的,所述装置进一步包括协商地址端口转换模块,设置在主应用部件、支持主应用部件通信协议的中转部件、或者支持主应用部件通信协议的中转服务器中,用于解析主应用服务器向目标服务器发送的协商数据包,将其数据部分内的主应用部件协商IP地址和端口转换为对应逻辑通道的中转服务器IP地址和端口。
上述装置中的转发设备为网络地址转换设备、代理服务器、或者防火墙。
一种客户端主应用部件与目标服务器之间进行通信的方法,适用于客户端与目标服务器之间引入转发设备的通信系统,包括在客户端设置中转部件,在服务器端设置中转服务器,并在中转部件和中转服务器间建立专用信道,中转设备和中转服务器利用该专用信道和内部协议穿透转发设备进行通信;主应用部件与目标服务器进行通信前,在中转部件和中转服务器中建立该通信的逻辑通道,该逻辑通道建立在所述中转部件和中转服务器间的专用信道之上;主应用部件和目标服务器通过中转部件和中转服务器中所建立的逻辑通道进行通信。
优选地,所述在中转部件和中转服务器中建立所述主应用部件与目标服务器间通信的逻辑通道的方法为主应用部件向中转部件发送携带主应用部件IP地址和端口以及目标服务器IP地址和端口的端口请求;中转部件经过内部协议封装转发端口请求给中转服务器,并在本地分配用于数据转发的转发接口;中转服务器根据端口请求分配本地端口;建立逻辑通道号、中转服务器IP地址和端口、以及目标服务器IP地址和端口的对应关系;中转服务器将所述自身建立的对应关系返回给中转部件,中转部件建立逻辑通道号、主应用部件IP地址和端口、中转部件转发接口、中转服务器IP地址和端口以及目标服务器IP地址和端口的对应关系;将所述主应用部件IP地址和端口、中转部件转发接口、中转服务器IP地址和端口以及目标服务器IP地址和端口的对应关系作为所述主应用部件与目标服务器间通信的逻辑通道。
优选地,所述在中转部件和中转服务器中建立所述主应用部件与目标服务器间通信的逻辑通道的方法为主应用部件向中转部件发送携带主应用部件IP地址和端口的端口请求;中转部件经过内部协议封装转发端口请求给中转服务器,并在本地分配用于数据转发的转发接口;中转服务器根据端口请求分配本地端口;主应用部件通过通信数据或通知发送目标服务器的IP地址和端口给中转部件以及中转服务器;中转服务器建立逻辑通道号、中转服务器IP地址和端口、以及目标服务器IP地址和端口的对应关系;中转服务器将所述自身建立的对应关系返回给中转部件,中转部件建立逻辑通道号、主应用部件IP地址和端口、中转部件转发接口、中转服务器IP地址和端口以及目标服务器IP地址和端口的对应关系;将所述主应用部件IP地址和端口、中转部件转发接口、中转服务器IP地址和端口以及目标服务器IP地址和端口的对应关系作为所述主应用部件与目标服务器间通信的逻辑通道。
所述端口请求中携带所请求的端口类型和端口数量,中转服务器根据该端口请求分配相应类型和数量的本地端口。所述请求的端口类型和数量包括但不限于以下三种之一或任意组合单个TCP端口、单个UDP端口、或者两个连续的UDP端口。
所述主应用部件以请求消息的形式给中转部件发送端口请求;中转部件所分配的转发接口为本地端口。
所述主应用部件以调用函数的形式给中转部件发送端口请求;中转部件所分配的转发接口为本地端口。
所述主应用部件以调用函数的形式给中转部件发送端口请求;中转部件所分配的转发接口为回调函数。
优选地,在主应用部件与目标服务器进行端口协商的过程中,该方法进一步包括解析主应用部件向目标服务器发送的协商数据包,将其数据部分内的主应用部件协商IP地址和端口转换为对应逻辑通道的中转服务器IP地址和端口,再将转换后的协商数据包发送给目标服务器。
上述方法中的转发设备为网络地址转换设备、代理服务器、或者防火墙。
以下是本发明的有益效果当私网与Internet之间引入的转发设备为防火墙时,由于动态分配的端口或动态协商的端口所对应的逻辑通道在穿越防火墙时采用专用信道进行通信,不论分配或协商的端口的数量是多少,其对应逻辑通道都利用该专用信道穿越防火墙,并且该专用信道是单一的传输控制协议(TCP)或用户数据报协议(UDP)连接,且其所应用的端口为防火墙开放的端口,可以实现主应用部件和目标服务器之间的信息成功穿透防火墙。
由于中转部件与中转服务器之间的通信是一种符合转发设备特性的简单通信,所采用的交互协议也只是一种简单的内部协议,一般不会受到转发设备的阻碍,因此可以实现成功穿透转发设备进行通信。另外,如果转发设备为NAT/代理服务器,则由于中转部件与中转服务器之间的交互协议只是一种简单的内部协议,不需像诸如H.323和SIP复杂协议那样根据数据包数据部分包括的源IP地址和端口返回响应,而是根据数据包的包头中的源IP地址和端口返回响应,而包头中的IP地址和端口是经过NAT/代理服务器转换的,因此返回的响应可以成功穿透NAT/代理服务器,实现主应用部件与目标服务器的畅通通信。
当私网与Internet之间引入的转发设备为代理服务器(例如HTTP/SOCKS4/SOCKS5等代理服务器)时,则在客户端的中转部件上相对容易实现代理协议的功能,因此即使主应用部件不支持代理协议的情况下也可使交互信息成功地穿透代理服务器。
本发明对目标服务器的软硬件无需做任何改动;在中转部件或中转服务器支持与主应用部件相同协议的情况下,对主应用部件的软硬件也无需改动;并且,不需要升级或更换NAT/代理服务器/防火墙的软硬件,一般不需要改动NAT/代理服务器/防火墙的设置。因此,在成功穿越NAT/代理服务器/防火墙的同时,可以最大程度地保留现有软硬件资源,实施成本低。
本发明采用的方案与主应用部件和目标服务器本身采用的通信协议无关,无需考虑通信协议的复杂性,实现简单。
另外,本发明所述的方法在主应用部件和目标服务器进行正式通信之前,通过端口请求已经穿越了所述转发设备进行通信,包括“出”通信和“入”通信,因此当从公网主动到私网发起通信时,由于转发设备中已经记录了从私网到公网的“出”通信的过程,且已经建立了逻辑通道,因此转发设备不会阻碍通过该逻辑通道从公网主动到私网的通信。


图1为本发明所述装置的一种实施例的结构示意图;图2为本发明所述方法的第一实施例的流程图。
具体实施例方式
下面通过具体实施例和附图对本发明做进一步详细说明。
本发明的核心技术方案为在客户端与服务器端分别设置中转设备,这两个中转设备之间通过专用信道进行通信,客户端与服务器端所有的交互信息都通过这两个中转设备转发到对方。
首先说明本发明所述装置的一种实施例。图1为本发明所述装置的一种实施例的结构示意图。参见图1,整个Internet应用分为两大实体部分一大实体部分为位于转发设备即NAT/代理/防火墙内局域网(LAN)的部分,这个实体部分为客户端;另一实体部分位于NAT/代理/防火墙外的处于Internet上的部分,这个实体部分为服务器端。客户端中包括主应用部件11,主要用于完成整个Internet应用的客户端部分的实际功能,例如网络电话应用部件和网络会议应用部件等。服务器端主要包括目标服务器14,例如网络电话服务器和网络会议服务器等,是与客户端完成整个通信的实际目的地。本发明所述的装置包括位于客户端的中转部件12和位于服务器端的中转服务器13。中转部件12和中转服务器13之间通过建立专用信道15进行通信,该专用信道15为一个单一的TCP/UDP连接,该专用信道所用的端口为转发设备(例如防火墙)所开放的端口。中转部件12和中转服务器13用于建立主应用部件到目标服务器之间的逻辑通道,该逻辑通道建立在所述中转部件和中转服务器间的专用信道之上;主应用部件和目标服务器通过中转部件和中转服务器中所建立的逻辑通道进行通信。
以下说明本发明所述方法的具体实施例。
图2为本发明所述方法的第一实施例的流程图。参见图2,该流程包括步骤201、客户端启动时,在客户端中转部件和中转服务器之间建立一个专用信道。
该专用信道可以为单一的TCP/UDP通信连接,利用转发设备(例如防火墙)的开放端口建立。如果一次建立该专用信道不成功,则可以通过两次或两次以上试探检测转发设备的开放端口,在该开放端口上建立所述专用信道。该专用信道建立之后,客户端中转部件和中转服务器之间所有通信数据均通过此专用信道进行传输,这样就将主应用部件与目标服务器之间原本需要动态分配并协商一个或一个以上端到端的TCP/UDP通信端口进行穿越转发设备的通信转化成由单一专用信道穿越转发设备来完成通信,从而尽量维持网络原有的安全性,在转发设备上至多需要开放一个固定的通信端口即可完成整个通信过程,因此可以非常容易地穿透防火墙。
由于主应用部件的端口与目标服务器的端口通过中转部件和中转服务器进行通信,所以主应用部件端口将要与目标服务器端口进行通信前,需要在中转部件和中转服务器中建立与通信端口的类型和数量对应的逻辑通道,以后主应用部件端口与目标服务器端口之间的通信数据在中转部件和中转服务器中通过该端口对应的逻辑通道传输,最终发送给对方。目标服务器的端口可以是主应用部件知道的、并在主应用部件上配置好的开放端口,也可以是目标服务器为主应用部件分配的端口(该分配的端口信息可通过上述开放端口发送给主应用部件),也可以是主应用部件和目标服务器之间动态协商的端口。
在中转部件和中转服务器上建立逻辑通道的过程为以下步骤202到步骤207。
步骤202、客户端主应用部件在向目标服务器发送数据前,首先向中转部件发送端口请求。
端口请求可以采用消息的形式进行请求(例如TCP/IP的socket消息,以及Windows消息等其他形式的消息),也可以采用调用函数的方式来请求。一般后续的数据转发过程中与端口请求相对应,也可利用消息形式或调用函数方式,但是如果通过端口消息的形式发送数据,则还是通过端口消息的形式返回数据;如果通过调用函数方式发送数据,则返回数据时可以通过端口消息形式返回,也可以通过回调函数的形式返回。
本第一实施例中采用消息的形式进行端口请求。此处的端口请求中携带所要请求的端口类型和数量以及主应用部件将要通信的目标服务器的IP地址和端口号,此处的端口号为140和141。所请求端口的类型和数量与主应用部件将要进行通信的端口的类型及数量对应,所述端口类型可以是TCP端口或UDP端口。例如将要通信的目标服务器端口是两个连续的UDP端口140和141。所述端口请求中还携带有主应用部件的IP地址和将要与目标服务器端口对应通信的端口信息,此处假设端口为两个连续的UDP端口110和111,中转部件需记录该主应用部件的IP地址和端口号以及目标服务器的IP地址和端口号。此处,所述端口请求中也可以不携带所述目标服务器的IP地址和端口号,而在后续数据通信中,将该目标服务器IP地址和端口号携带在数据包中。
步骤203、中转部件收到端口请求消息后,将该端口请求消息经过中转部件与中转服务器间的内部协议封装后,通过所述专用信道发送到中转服务器。同时,中转部件根据端口请求消息中所请求的端口类型和数量分配本地端口,即分配两个连续的本地UDP端口假设为端口120和端口121,用于后续数据包的转发。该本地端口称为中转部件的转发接口。
所述内部协议为一种具有简单封装以及解封装处理的通信协议,该协议只根据报文头内的IP地址和端口号进行响应处理,而不对数据部分的内容进行处理。由于此特点,该协议报文在穿越诸如NAT等通过转换报文头IP地址和端口号进行转发的转发设备时,可以实现成功地双向穿透该转发设备。对于具有上述功能的内部协议,本领域的技术人员依照现有技术就可以实现。
步骤204、中转服务器在收到客户端中转部件发送的端口请求消息后,根据请求消息中包含的通信端口类型及数量等信息分配本地端口,即分配两个连续的本地UDP端口,此处假设为端口130和端口131;接着建立逻辑通道号、中转服务器IP地址和端口号、目标服务器IP地址和端口号的对应关系,即建立以下表1的对应关系,假设中转服务器IP地址为C,目标服务器的IP地址为D

表1中转服务器在后续过程中还要对表1中的辅助端口信息数据、通信状态等信息进行维护。
如果所请求的端口类型为TCP端口,则中转服务器同时还在本地端口130与目标服务器对应的端口140之间、以及本地端口131与目标服务器对应的端口141之间建立通信连接,以便向目标服务器传送客户端发送过来的通信数据和接收目标服务器发回给客户端的通信数据。
如果所述端口请求中不带目标服务器IP地址和端口,则中转服务器可以先在本地分配端口,等到接收到携带有目标服务器IP地址和端口号的数据包时或在主应用部件知道了目标服务器IP地址和端口后而尚未发送数据之前通过中转部件通知中转服务器,再建立表1所述的对应关系。
步骤205、中转服务器接着通过专用信道15向中转部件返回利用内部协议封装的响应消息,其中包括端口请求是否成功的信息,如果成功则还包括中转服务器IP地址以及所分配的端口信息,即中转服务器分配的本地端口号130和131。
步骤206、中转部件收到响应消息后建立逻辑通道号、主应用部件IP地址和端口号、中转部件IP地址和端口号、中转服务器IP地址和端口号、目标服务器IP地址和端口号的对应关系,如表2所示,假设主应用部件的IP地址为A,中转部件的IP地址为B

表2中转部件向主应用部件返回响应消息,其中包括上述表2的内容。
如果所述端口请求中不带目标服务器IP地址和端口,则此处的中转部件等到接收到携带有目标服务器IP地址和端口号的数据包时或收到主应用的通知时,再建立表2所述的对应关系。
主应用部件收到响应消息后,可以在本地将要进行通信的端口110与中转部件端口120之间建立客户端本地的通信连接,同样在端口111与中转部件端口121之间建立客户端本地的通信连接;主应用部件可通过端口110和端口111发送和接收数据。
步骤207、针对主应用部件所请求的端口类型和数量,将所述主应用部件IP地址和端口、中转部件转发接口、中转服务器IP地址和端口以及目标服务器IP地址和端口的对应关系作为所述端口到端口通信的逻辑通道。即按照上述表1和表2的对应关系,从主应用部件的通信端口为起始端口,通过中转部件和中转服务器直到目标服务器的通信端口,建立了可以穿越转发设备的逻辑通道,即逻辑通道0经过的IP地址和端口为A/端口110-B/120-专用信道15-C/端口130-D/端口140,逻辑通道1经过的IP地址和端口为A/端口111-B/121-专用信道15-C/端口131-D/141。中转部件和中转服务器通过表1和表2所记录的逻辑通道将主应用部件端口发送的数据包转发给目标服务器的对应端口上。
在建立好不同端口的逻辑通道后,主应用部件和目标服务器就可以利用这些通道通信了。
步骤208、主应用部件从端口110发送的数据通过逻辑通道0最终发送给目标服务器,从端口111发送的数据通过逻辑通道1最终发送给目标服务器。以下以逻辑通道0为例对主应用部件到目标服务器的数据传输过程进行说明主应用部件11根据表2中的逻辑通道内容将从端口110发送的数据包传输给中转部件12的端口120;中转部件12根据端口110查找表2中的对应关系,确定传输该数据包的逻辑通道为0,其对应的中转服务器IP地址和端口为C和130;接着对要发送的数据内部协议封装,将该数据对应的逻辑通道信息封装到数据包中,此处的逻辑通道信息为逻辑通道号0;中转部件12通过与中转服务器13之间的专用信道15将封装好后的数据包转送给中转服务器13,中转服务器13收后则对其进行内部协议解封装,得到逻辑通道信息即逻辑通道号0,通过查询表1进一步得到端口130和目标服务器的IP地址D和端口140;接着将解封装出的数据包通过本地端口130发送到目标服务器14的端口140,这样目标服务器14的端口140就收到了客户端要发送的实际数据。
类似的,从端口111发送的数据包通过逻辑通道1发送到目标服务器的端口141。
步骤209、当目标服务器14要返回数据包给主应用部件11时,则将从端口140返回的数据包通过逻辑通道0最终发送给主应用部件11的端口110;从端口141返回的数据包通过逻辑通道1最终发送给主应用部件11的端口111。以下以逻辑通道0为例对目标服务器到主应用部件的数据传输过程进行说明目标服务器从端口140返回数据包,该数据包原路返回给中转服务器13的端口130;中转服务器查找表1中的对应关系,确定该数据的逻辑通道为0;接着对要发送的数据包利用内部协议封装,将该数据包对应的逻辑通道信息封装到数据包中,此处的逻辑通道信息为逻辑通道号0;中转服务器通过专用信道15将封装好后的数据包转送给中转部件12,中转部件12收后则对其进行内部协议解封装,得到逻辑通道信息即逻辑通道号,查询表2得到本地端口120和主应用部件的IP地址A和端口号110,将解封装出的数据包通过本地端口120发送到主应用部件11的端口110,这样主应用部件的端口就收到了目标服务器返回的实际数据。
类似的,从端口141返回的数据包(目的IP地址和端口号为A和端口111)通过逻辑通道1最终发送给主应用部件的端口111。
在本发明所述方法的第二实施例中,主应用部件利用调用函数方式向中转部件发起端口请求,并用函数调用的方式发送数据。用于端口请求的函数调用中包括所请求的端口类型和数量,还包括端口参数,用于指明发出数据的主应用部件的端口号,例如端口110和端口111。
本第二实施例与上述第一实施例的各个实施步骤基本类似,因此下面只介绍不同与上述第一实施例之处步骤203中,中转部件收到端口请求消息后,将该端口请求消息经过中转部件与中转服务器间的内部协议封装后,通过所述专用信道发送到中转服务器。同时,中转部件根据端口请求消息中所请求的端口类型和数量分配本地端口,即分配两个连续的本地UDP端口假设为端口120和端口121,用于后续数据包的转发。或者设置回调函数,通过回调函数对后续数据包进行转发;该回调函数可以为两个,分别用于将数据返回给端口110和端口111;或者,该回调函数可以为一个,但需在回调函数的端口参数中指明数据返回的端口号110或111。所述中转部件分配的端口或回调函数可以统称为中转部件用于转发数据的转发接口。此处有两个转发接口,设为转发接口0和转发接口1。其中转发接口0为端口120、或者回调函数0、或者端口参数为端口110的回调函数;转发接口1为端口121、或者回调函数1、或者端口参数为端口111的回调函数。
步骤206中,中转部件收到响应消息后建立逻辑通道号、主应用部件IP地址和端口号、中转部件IP地址和转发接口号、中转服务器IP地址和端口号、目标服务器IP地址和端口号的对应关系,如表3所示,假设主应用部件的IP地址为A,中转部件的IP地址为B

表3中转部件向主应用部件返回响应消息,其中包括上述表3的内容。
本第二实施例中,针对主应用部件所请求的端口类型和数量,根据上述表1和表3的对应关系,从主应用部件的通信端口为起始端口,通过中转部件和中转服务器直到目标服务器的通信端口,建立了可以穿越转发设备的逻辑通道,即逻辑通道0经过的IP地址和端口为A/端口110-B/转发接口0-专用信道15-C/端口130-D/端口140,逻辑通道1经过的IP地址和端口为A/端口111-B/转发接口1-专用信道15-C/端口131-D/141。中转部件和中转服务器通过表1和表2所记录的逻辑通道将主应用部件端口发送的数据包转发给目标服务器的对应端口上。
步骤208中,主应用部件从端口110发送的数据通过调用函数发送给中转部件12,中转部件12通过逻辑通道0最终发送数据包给目标服务器14的端口140;类似的,从端口111发送的数据通过逻辑通道1最终发送给目标服务器14的端口141。目标服务器要返回数据包给主应用部件时,则从端口140发送的数据包通过逻辑通道0最终发送给主应用部件11的端口110,其中在中转部件转发数据时,可以通过端口120转发,也可以通过回调函数0转发,也可以通过其端口参数指明目标为端口110的回调函数转发;类似的,从端口141发送的数据包通过逻辑通道1最终发送给主应用部件11的端口111。
一般情况下,主应用部件所请求的端口分多种情况,典型的有三种情况1)请求单个的TCP端口;2)请求单个的UDP端口;3)请求两个连续的UDP端口。因此,在中转服务器上可以针对上述情况做成专门的标准化处理模块。例如模块1专门用于分配单个TCP端口,模块2专门用于分配单个UDP端口,模块3专门用于分配两个连续的UDP端口;在进行端口分配时,直接调用上述的处理模块,可以使流程更加集成化,提高处理效率。如果主应用部件与目标服务器间的整个通信过程中需要多个TCP/UDP通信端口来完成通信,则可以重复执行步骤202到步骤207的方法并调用上述标准的处理模块来分配端口,并分别建立多个TCP/UDP通信端口对应的逻辑通道,以完成整个通信要求。例如整个通信过程需要三个端口,其中一个为TCP端口,另两个为连续的UDP端口,则首先执行一遍步骤202到步骤207,利用模块1完成对一个TCP端口的分配,并建立一个TCP逻辑通道,再执行一般步骤202到步骤207,利用模块3完成对两个连续UDP端口的分配,并对应建立两个UDP逻辑通道。另外,由于请求的端口分多种情况,不限于上述三种,可以根据实际应用变化进行扩展,在中转服务器上可以针对每种情况做成专门的标准化处理模块进行端口分配。使流程更加集成化,提高处理效率。
客户端主应用部件也可以使用所收到的中转服务器分配的端口号通过主应用部件相应的复杂通信协议(例如H.323、SIP、MGCP、H.248/MECAGO等协议)来完成通信端口的协商过程。实现协商过程分两种情况
第一种情况中转部件和中转服务器不支持主应用部件具备的复杂的、通过解析数据包内容传输数据的协议(例如H.323、SIP、MGCP、H.248/MECAGO等协议)。此时,在主应用部件中进一步设置一个转换模块,用于将所述复杂协议数据包内数据部分携带的主应用部件的协商IP地址和端口转换为中转服务器对应的IP地址和端口。例如,如果主应用部件的协商端口号为110,则将主应用部件的IP地址和端口110替换为中转服务器的IP地址和端口号130,该数据包通过对应的逻辑通道0发送给目标服务器,目标服务器从数据包的数据部分得到中转服务器的IP地址和端口130,将协商响应返回给该中转服务器的端口130,再通过逻辑通道0返回到主应用部件,结束协商过程。
第二种情况中转部件或中转服务器支持所述主应用部件具备的复杂的、通过解析数据包内容传输数据的协议。此时,将转换模块置于支持该复杂协议的中转部件或中转服务器中,用于解析来自主应用部件的、用于协商的数据包内的数据部分,将其中携带的主应用部件的协商IP地址和端口转换为中转服务器对应的IP地址和端口;并将转换后的数据包发送给目标服务器,目标服务器利用与主应用部件相同的通信协议处理,从数据包的数据部分得到中转服务器的IP地址和端口,将协商响应返回给该中转服务器的端口,再通过对应的逻辑通道返回到主应用部件,结束协商过程。
最后,在客户端关闭时,客户端首先向中转服务器发送撤销端口消息,申请关闭所述逻辑通道的连接,然后拆除与中转服务器之间建立的专用信道15,释放所有相关资源;同理,在服务器段关闭时,由中转服务器向客户端发送撤销端口消息,申请关闭所述逻辑通道的连接,然后拆除与中转部件之间建立的专用信道15,释放所有相关资源。
通过本发明的方案,可以使主应用部件和目标服务器之间的交互信息成功地穿透私网和公网之间引入的转发设备,其原因参见以下具体分析。
如果转发设备为防火墙,则由于所述的端口对端口的逻辑通道在穿越防火墙时采用专用信道15进行通信,而该专用信道是单一的TCP或UDP连接,且其端口使用防火墙的开放端口,可以实现主应用部件和目标服务器之间的信息成功穿透防火墙。
由于中转部件与中转服务器之间的通信是一种符合转发设备特性的简单通信,所采用的交互协议也只是一种简单的内部协议,一般不会受到转发设备的阻碍,因此可以实现成功穿透转发设备进行通信。另外,如果转发设备为NAT/代理服务器,则由于中转部件与中转服务器之间的交互协议只是一种简单的内部协议,不需像复杂协议(例如H.323和SIP协议)那样根据数据包数据部分包括的源IP地址和端口返回响应,而是根据数据包的包头中的源IP地址和端口返回响应,而包头中的I P地址和端口是经过NAT/代理服务器转换的,因此返回的响应可以成功穿透NAT/代理服务器,实现主应用部件与目标服务器的畅通通信。
转发设备为代理服务器时,例如HTTP/SOCKS4/SOCKS5等代理服务器,则在客户端的中转部件上相对容易实现代理协议的功能,因此即使主应用部件不支持代理协议的情况下也可使交互信息成功地穿透代理服务器。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
权利要求
1.一种客户端主应用部件与目标服务器之间进行通信的装置,适用于客户端与目标服务器之间引入转发设备的通信系统,其特征在于,该装置包括位于客户端的中转部件和位于服务器端的中转服务器;中转部件和中转服务器之间通过专用信道和内部协议穿透转发设备进行通信;中转部件和中转服务器用于建立主应用部件到目标服务器之间的逻辑通道,该逻辑通道建立在所述中转部件和中转服务器间的专用信道之上;主应用部件和目标服务器通过中转部件和中转服务器所建立的逻辑通道进行通信。
2.根据权利要求1所述的装置,其特征在于,所述中转部件与中转服务器之间的专用信道为一个传输控制协议TCP或用户数据报协议UDP通信连接,且其端口采用转发设备的开放端口。
3.根据权利要求1所述的装置,其特征在于,所述中转服务器包括端口分配模块,用于根据主应用部件的端口请求分配本地端口,以此建立所述逻辑通道。
4.根据权利要求3所述的装置,其特征在于,所述端口分配模块具体包括但不限于用于分配单个TCP端口的分配模块、用于分配单个UDP端口的分配模块、用于分配两个连续UDP端口的分配模块。
5.根据权利要求1所述的装置,其特征在于,所述装置进一步包括协商地址端口转换模块,设置在主应用部件、支持主应用部件通信协议的中转部件、或者支持主应用部件通信协议的中转服务器中,用于解析主应用服务器向目标服务器发送的协商数据包,将其数据部分内的主应用部件协商IP地址和端口转换为对应逻辑通道的中转服务器IP地址和端口。
6.根据权利要求1至5任一项所述的装置,其特征在于,所述转发设备为网络地址转换设备、代理服务器、或者防火墙。
7.一种客户端主应用部件与目标服务器之间进行通信的方法,适用于客户端与目标服务器之间引入转发设备的通信系统,其特征在于,在客户端设置中转部件,在服务器端设置中转服务器,并在中转部件和中转服务器间建立专用信道,中转设备和中转服务器利用该专用信道和内部协议穿透转发设备进行通信;主应用部件与目标服务器进行通信前,在中转部件和中转服务器中建立该通信的逻辑通道,该逻辑通道建立在所述中转部件和中转服务器间的专用信道之上;主应用部件和目标服务器通过中转部件和中转服务器中所建立的逻辑通道进行通信。
8.根据权利要求7所述的方法,其特征在于,所述在中转部件和中转服务器中建立所述主应用部件与目标服务器间通信的逻辑通道的方法为主应用部件向中转部件发送携带主应用部件IP地址和端口以及目标服务器IP地址和端口的端口请求;中转部件经过内部协议封装转发端口请求给中转服务器,并在本地分配用于数据转发的转发接口;中转服务器根据端口请求分配本地端口;建立逻辑通道号、中转服务器IP地址和端口、以及目标服务器IP地址和端口的对应关系;中转服务器将所述自身建立的对应关系返回给中转部件,中转部件建立逻辑通道号、主应用部件IP地址和端口、中转部件转发接口、中转服务器IP地址和端口以及目标服务器IP地址和端口的对应关系;将所述主应用部件IP地址和端口、中转部件转发接口、中转服务器IP地址和端口以及目标服务器IP地址和端口的对应关系作为所述主应用部件与目标服务器间通信的逻辑通道。
9.根据权利要求7所述的方法,其特征在于,所述在中转部件和中转服务器中建立所述主应用部件与目标服务器间通信的逻辑通道的方法为主应用部件向中转部件发送携带主应用部件IP地址和端口的端口请求;中转部件经过内部协议封装转发端口请求给中转服务器,并在本地分配用于数据转发的转发接口;中转服务器根据端口请求分配本地端口;主应用部件通过通信数据或通知发送目标服务器的IP地址和端口给中转部件以及中转服务器;中转服务器建立逻辑通道号、中转服务器IP地址和端口、以及目标服务器IP地址和端口的对应关系;中转服务器将所述自身建立的对应关系返回给中转部件,中转部件建立逻辑通道号、主应用部件IP地址和端口、中转部件转发接口、中转服务器IP地址和端口以及目标服务器IP地址和端口的对应关系;将所述主应用部件IP地址和端口、中转部件转发接口、中转服务器IP地址和端口以及目标服务器IP地址和端口的对应关系作为所述主应用部件与目标服务器间通信的逻辑通道。
10.根据权利要求8或9所述的方法,其特征在于,所述端口请求中携带所请求的端口类型和端口数量,中转服务器根据该端口请求分配相应类型和数量的本地端口。
11.根据权利要求10所述的方法,其特征在于,所述请求的端口类型和数量包括但不限于以下三种之一或任意组合单个TCP端口、单个UDP端口、或者两个连续的UDP端口。
12.根据权利要求8或9所述的方法,其特征在于,所述主应用部件以请求消息的形式给中转部件发送端口请求;中转部件所分配的转发接口为本地端口。
13.根据权利要求8或9所述的方法,其特征在于,所述主应用部件以调用函数的形式给中转部件发送端口请求;中转部件所分配的转发接口为本地端口。
14.根据权利要求8或9所述的方法,其特征在于,所述主应用部件以调用函数的形式给中转部件发送端口请求;中转部件所分配的转发接口为回调函数。
15.根据权利要求7所述的方法,其特征在于,在主应用部件与目标服务器进行端口协商的过程中,该方法进一步包括解析主应用部件向目标服务器发送的协商数据包,将其数据部分内的主应用部件协商IP地址和端口转换为对应逻辑通道的中转服务器IP地址和端口,再将转换后的协商数据包发送给目标服务器。
16.根据权利要求7、8、9或15所述的方法,其特征在于,所述转发设备为网络地址转换设备、代理服务器、或者防火墙。
全文摘要
本发明公开了一种客户端主应用部件与目标服务器之间进行通信的装置和方法,适用于客户端与目标服务器之间引入转发设备的通信系统,包括位于客户端的中转部件和位于服务器端的中转服务器;中转部件和中转服务器之间设置专用信道,通过专用信道和内部协议穿透转发设备进行通信;中转部件和中转服务器用于建立主应用部件端口到目标服务器端口之间的逻辑通道,该逻辑通道建立在所述中转部件和中转服务器间的专用信道之上;主应用部件和目标服务器通过中转部件和中转服务器所建立的逻辑通道进行可以穿透转发设备的正常通信。
文档编号H04L29/06GK1941738SQ20051010806
公开日2007年4月4日 申请日期2005年9月29日 优先权日2005年9月29日
发明者江涛, 陈伟华 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1