穿越网络地址转换设备/防火墙的方法、系统及客户端的制作方法

文档序号:7669526阅读:173来源:国知局

专利名称::穿越网络地址转换设备/防火墙的方法、系统及客户端的制作方法
技术领域
:本发明涉及网络
技术领域
,尤其涉及一种穿越网络地址转换设备/防火墙的方法、系统及客户端。技术背景目前,互联网中存在大量的网络地址转换(NetworkAddressTranslation,NAT)设备。网络地址转换设备解决了IPV4地址不足的问题,但同时也给P2P(PeertoPeer)网络中客户端的直接连接设置了障碍。因此,在P2P网络中,需要克服网络地址转换设备产生的障碍,建立通信连接,。为实现上述目的,现有技术提出了一种TCP穿越网络地址转换设备的方法。请参见图1,两个私网分别通过NAT-A设备101和NAT-B设备102连接到公网,NAT-A设备101后面有一台客户端A103,NAT-B设备102后面有一台客户端B104,打洞辅助服务器105用于协助客户端A和客户端B建立直接的TCP连接,即由客户端B向客户端A打一个洞,让客户端A可以沿这个洞直接连接到客户端B,如同NAT-B设备不存在。现有的TCP穿越NAT设备的过程如下1)打洞辅助服务器启动两个端口侦听,一个为主连接侦听,一个为协助打洞侦听;2)客户端A和客户端B分别与打洞辅助服务器的主连接保持联系;3)当客户端A需要和客户端B建立直接的TCP连接时,客户端A首先连接打洞辅助服务器的协助打洞端口,并发送协助连接请求,同时在该端口启动侦听;4)打洞辅助服务器收到客户端A的协助连接请求后,通过主连接向客户端B发送连4妻通知,并将客户端A经过NAT-A设备转换后的/>网IP地址和端口号发送客户端B;5)客户端B收到连接通知后,首先与打洞辅助服务器的协助打洞端口连接,随便发送一些数据后立即断开,这样做的目的是让打洞辅助服务器记录客户端B经过NAT-B设备转换后的公网IP地址和端口号;6)客户端B尝试与客户端A的公网IP地址和端口进行连接,目的是为了NAT-B设备记录客户端A的公网IP地址和端口号,为接下来真正的连接做准备,这就是所谓的打洞,即客户端B为客户端A在NAT-B设备上打了一个洞;7)客户端B在一切准备就绪以后通过主连接向打洞辅助服务器回复"已经准备好消息";8)打洞辅助服务器在收到上述回复消息后,将客户端B的公网IP地址和端口号发送给客户端A;9)客户端A在收到客户端B的公网IP地址和端口号等信息后,开始连接客户端B的公网IP地址和端口号,由于在步骤6中客户端B曾经尝试连接过客户端A的公网IP地址和端口号,因此,NAT-B设备记录了此次连接的信息,所以当客户端A主动连接客户端B时,NAT-B设备会认为客户端A发送来的同步数据包(synchronize,SYN)是合法数据,允许通过,从而建立直接的TCP连接。在对现有技术的研究和实践过程中,发明人发现现有技术的缺点是穿越NAT设备的成功率很低,只有在特定的环境下才能成功。这是因为步骤6客户端B尝试与客户端A的公网IP地址和端口号进行连接时,有些NAT设备会认为这是一个非法的连接请求,此时,NAT-A设备会向客户端B发送一个复位消息(Resettheconnection,RST),要求客户端B和NAT-B设备复位,这会导致NAT-B设备清除其记录的客户端A的公网IP地址和端口号,当步骤9客户端A主动连接客户端B时,由于NAT-B设备上没有客户端A的记录,因此,NAT-B设备认为客户端A的连接请求是非法的,从而拒绝客户端A的连接请求,TCP直接连接失败。
发明内容本发明实施例要解决的技术问题是提供一种穿越网络地址转换设备/防火墙的方法、系统及客户端,能够保证很高的穿越网络转换设备的成功率。为解决上述技术问题,本发明所提供的实施例是通过以下技术方案实现的本发明实施例提供了一种穿越网络地址转换设备/防火墙的方法,包括第一客户端通过打洞辅助服务器向第二客户端发起传输控制协议直接连接请求;打洞辅助服务器将第一客户端的公网IP地址及端口号发送给第二客户端,并将第二客户端的公网IP地址及端口号发送给第一客户端;第一客户端获取已测试得到的打洞可采用的传输控制协议数据包序列;第一客户端和第二客户端在打洞辅助服务器的协助下,按照所述打洞可采用的传输控制协议包序列,向对方的公网IP地址和端口号发送数据包,直到成功建立传输控制协议直接连接。本发明实施例还提供了一种第一客户端,包括直连请求发送单元,用于通过打洞辅助服务器向第二客户端发起传输控制协议直接连接请求;公网IP地址接收单元,用于接收打洞辅助服务器返回的第二客户端的公网IP地址及端口号;包序列获取单元,用于获取已测试得到的打洞可采用的传输控制协议包序列;直连建立单元,用于在打洞辅助服务器的协助下,按照所述打洞可采用的传输控制协议包序列,向第二客户端的公网IP地址和端口号发送数据包,直到成功建立传输控制协议直接连接。本发明实施例还提供了一种穿越网络地址转换设备/防火墙的系统,包括第一客户端,第二客户端,打洞辅助服务器;第一客户端,用于通过打洞辅助服务器向第二客户端发起传输控制协议直接连接请求,并获取已测试得到的打洞可采用的传输控制协议包序列;打洞辅助服务器,用于将第一客户端的公网IP地址及端口号发送给第二客户端,并将第二客户端的公网IP地址及端口号发送给第一客户端;第一客户端和第二客户端在打洞辅助服务器的协助下,按照所述打洞可采用的传输控制协议包序列,向对方的公网IP地址和端口号发送数据包,直到成功建立4输控制协议直接连接。上述技术方案具有如下有益效果本发明实施例中,由于第一客户端保存了预先测试的打洞环境测试结果,第一客户端可以根据测试结果,向第二客户端的公网IP地址和端口号发送数据包,避免了现有技术只能在特定的环境下穿越NAT设备的缺陷,提高了穿越网络转换设备的成功率。图1为现有技术提供的TCP穿越网络地址转换设备的组网图;图2为本发明实施例提供的穿越网络地址转换设备的系统组成示意图图3为本发明实施例提供的穿越网络地址转换设备的方法流程图;图4为本发明第一实施例提供的穿越网络地址转换设备的方法流程图;图5为本发明第二实施例提供的穿越网络地址转换设备的方法流程图;图6为本发明第三实施例提供的穿越网络地址转换设备的方法流程图;图7为本发明第四实施例提供的穿越网络地址转换设备的方法流程图;图8为本发明第五实施例提供的穿越网络地址转换设备的方法流程图;图9为本发明第六实施例提供的穿越网络地址转换设备的方法流程图。具体实施方式本发明实施例提供的穿越网络地址转换设备/防火墙的方法、系统及客户端,用于在P2P网络中需要可靠数据传输的场合,建立TCP直接连接(TCP为使本发明实施例的目的、技术方案、及优点更加清楚明白,以下结合附图对本发明实施例进行详细说明。以下以穿越网络地址转换设备的方法为例说明本发明实施例提供的方法,该方法也能够用于穿越防火墙。请参见图2,为本发明实施例提供的穿越网络地址转换设备的系统组成示意图,该系统包括客户端A(第一客户端)201,客户端B(第二客户端)202,打洞辅助服务器203;其中,测打洞辅助服务器203,用于协助客户端A201和客户端B202穿越NAT设备建立图2中虛线所示的TCP直连,打洞辅助服务器203在协助客户端A201和客户端B202建立TCP直连以后,不会介入数据传输过程,数据传输由客户端A201和客户端B202独立完成。在本发明实施例中,在穿越NAT设备,建立TCP直连前,客户端需要测试打洞环境,并保存测试结果,打洞环境测试包括测试操作系统版本是否符合打洞要求、测试用户是否有超级用户权限(一般Windows用户都具有超级用户权限)、测试是否可以使用操作系统接口设置公网IP地址的TTL值,以及测试表1所示的TCP包序列是否为可用于打洞的TCP包序列,其中,可用于打洞的TCP包序列是指未被TNAT设备过滤的TCP包序列。其中,操作系统版本是否符合打洞要求、用户是否有超级用户权限、以及是否可以使用操作系统接口设置IP地址的TTL值的测试由客户端使用操作系统提供的接口独立完成。并且,在本发明实施例中,客户端的操作系统版本为WinXPSP2及以上的版本,则符合打洞要求。为了完成对表1所示TCP包序列过滤情况的测试,图2所示的系统中进一步包括测试服务器A204,测试服务器B205;其中,测试服务器A204,用于协助客户端A201测试客户端A的NAT设备(NAT_A)对表1所示TCP包序列的过滤情况,即测试客户端A可用表1中的哪些TCP包序列打洞;测试服务器B205,用于协助客户端B202测试客户端B的NAT设备(NAT-B)对表1所示TCP包序列的过滤情况,即测试客户端B可用表1中的哪些TCP包序列打洞。值得注意的是,为了节约网络资源,在本发明实施例中,如果打洞环境没有改变,则客户端可以直接获取已保存的测试结果,并按照该结果进行打洞,并不影响本发明实施例的实现。以下对表1所示的TCP包序列进行介绍。表1每一行表示一个TCP包序列,其中,第一个包表示客户端向测试服务器发送的数据包,第二个包和第三个包表示测试服务器在收到第一个包后,向客户端返回的数据包。<table>tableseeoriginaldocumentpage15</column></row><table>1SYNoutSYNin无2SYNoutICMPinSYNin3SYN。utICMPinSYNACKin4SYN。utRSTinSYNin5SYNoutRSTinSYNACKin表1以下结合图2所示的系统对本发明实施例提供的方法进行详细介绍。请参见图3,为本发明实施例提供的穿越网络地址转换设备的方法,该方法包括步骤301:客户端A通过打洞辅助服务器向客户端B发起TCP直接连接请求;步骤302:打洞辅助服务器将客户端A的公网IP地址及端口号发送给客户端B,并将客户端B的公网IP地址及端口号发送给客户端A;步骤303:客户端A获取已测试得到的打洞可采用的TCP包序列;步骤304:客户端A和客户端B在打洞辅助服务器的协助下,按照步骤303获得的打洞可采用的TCP包序列,向对方的公网IP地址和端口号发送数据包,直到成功建立TCP直接连接。若客户端是第一次进行TCP打洞,则上述方法进一步包括如下步骤客户端A和客户端B在测试服务器的协助下,测试打洞环境;客户端A保存自身的打洞环境测试结果及客户端B通过打洞辅助服务器向其返回的打洞环境测试结果。举例说明客户端和测试服务器如何测试哪些TCP包序列是可以用于打洞的TCP序列。比如,客户端A向测试服务器A发送第一个包SYNout后,客户端收到了测试服务器返回的第二个包ICMPin和第三个包SYNin,这说明序号为2的TCP包序列未被NAT设备过滤,则客户端A记录序号为2的TCP包序列为可用打洞的TCP包序列,反之,若客户端A未收到测试服务器返回的数据包,说明TCP包序列被NAT设备过滤,则该序列不能用于打洞。以上介绍了本发明实施例提供的穿越NAT设备的方法,在本发明其他实施例中,客户端可以在步骤304之前的任意一个位置执行步骤303,并不影响本发明实施例的实现。'具体实现时,会存在多种不同的打洞环境测试结果,以下针对不同的打洞环境测试结果对本发明实施例的具体实现过程进行详细介绍。请参见图4,为本发明第一实施例提供的穿越NAT设备的方法流程图,该方法包括步骤401:客户端A连接打洞辅助服务器的协助打洞端口,并发送TCP直接连接请求;步骤402:打洞辅助服务器收到所述请求后,通过主连接向客户端B发送TCP连4妻通知,并将客户端A经过NAT-A设备转换的/>网IP地址和端口号通过主连接发送给客户端B;客户端B在收到TCP连接通知后,与打洞辅助服务器的协助打洞端口连接,随便发送一些数据至打洞辅助服务器后立即断开,以使得打洞辅助服务器记录客户端B经NAT-B设备转换后的公网IP地址和端口号;步骤403:打洞辅助服务器通过主连接将客户端B的公网IP地址和端口号发送给客户端A;此时,客户端A知道了客户端B的7>网IP地址和端口号,客户端B也知道了客户端A的^^网IP地址和端口号;步骤404:客户端A获取已测试得到的打洞可采用的TCP包序列,若所述TCP序列是表1中序号为1的TCP包序列,则客户端A获取已存的环境测试结果,若环境测试结果为系统版本为WinXPSP2及以上,则进入步骤405;步骤405:客户端A通过打洞辅助服务器向客户端B发送通知消息,该通知消息用于通知客户端B向客户端A的公网IP地址和端口号发送SYN包;步骤406:客户端A和客户端B向对方的公网IP地址和端口号,发送SYN包;步骤407:客户端A和客户端B在收到SYN包后,返回同步数据包确认消息(SYNACK)至对方;至此TCP直连已建立,按照TCP协议的规定,上述方法进一步包括步骤408:客户端A和客户端B在收到SYNACK后,向对方返回确iU肖息(ACK)。'请参见图5,为本发明第二实施例提供的穿越网络地址转换设备的方法流程图,该方法与第一实施例的区别在于步骤504:客户端A获取已测试得到的打洞可采用的TCP包序列,若所述TCP序列是表1中序号为2的TCP包序列,则客户端A获取已存的环境测试结果,若环境测试结果为系统版本为能够使用操作系统接口设置公网IP地址的TTL值,则进入步骤505;步骤505:客户端A通过打洞辅助服务器向客户端B发送第一SYN包,第一SYN包携带客户端B的公网IP地址的TTL值被设置为低;其中,低TTL值的要求是TTL值可以使第一SYN包穿过NAT-A设备,但是不能到达客户端B;并且,第一SYN包由客户端A利用底层网络函数自己构造。步骤506:打洞辅助服务器向客户端A返回Internet控制消息协议包(InternetControlMessageProtocol,ICMP),ICMP包携带客户端A的公网IP地址的TTL值设置为过期;步骤507:打洞辅助服务器向客户端B发送通知消息;步骤508:客户端B在收到所述通知消息后,向客户端A的公网IP地址和端口号发送第二SYN包;步骤509:客户端A在收到客户端B发送来的第二SYN包后,向客户端B发送SYNACK包,至此TCP直连已建立。请参见图6,为本发明第三实施例提供的穿越NAT设备的方法流程图,该方法与前文已述实施例的区别在于步骤604:客户端A获取已测试得到的打洞可采用的TCP包序列,若所述TCP序列是表1中序号为3的TCP包序列,则客户端A获取已存的环境测试结果,若环境测试结果为系统版本为操作系统版本为WinXPSP2及以上,用户具有超级用户权限,并且,能够使用操作系统接口设置公网IP地址的TTL值,则进入步骤605;步骤605:客户端A和客户端B通过打洞辅助服务器向对方发送SYN包,该SYN包携带公网IP地址的TTL值被设置为低TTL值;具体的,客户端A向客户端B发送的第一SYN包携带客户端B的公网IP地址,该公网IP地址的TTL值被设置为低TTL值,同理,客户端B向客户端A发送的第二SYN包携带客户端A的公网IP地址,该公网IP地址的TTL值被设置为低TTL值;并且,低TTL值的要求请参见第二实施例相关部分,此处不再赘述。步骤606:打洞辅助服务器向客户端A和客户端B分别发送ICMP包;其中,发给客户端A的ICMP包携带客户端A的公网IP地址,该公网IP地址的TTL被设置为过期,同理,发给客户端B的ICMP携带客户端B的公网IP地址,该公网IP地址的TTL值被设置为过期;步骤607:客户端A和客户端B在收到ICMP包后,通过打洞辅助服务器向对方发送自己的TCP序列号;其中,TCP序列号是客户端A和客户端B在向对方发送SYN包的同时自己监听到的;步骤608:客户端A和客户端B在收到对方的TCP序列号后,向对方发送SYNACK包,至此TCP直连已建立。以上介绍了本发明第三实施例,该实施例中所有数据包均是由客户端A和客户端B利用底层网络函数自己构造的。请参见图7,为本发明第四实施例提供的穿越NAT设备的方法流程图,该方法与前文已述方法的区别在于步骤704:客户端A获取已测试得到的打洞可采用的TCP包序列,若所述TCP序列是表1中序号为4的TCP包序列,则进入步骤705;步骤705:客户端A向客户端B的公网IP地址和端口号对应的NAT-B设备发送第一SYN包;其中,第一SYN包是客户端A利用底层网络函数自己构造的数据包;步骤706:NAT-B设备向客户端A返回RST消息,RST消息是NAT-B设备自动生成的;其中,客户端A发送第一SYN包到NAT-B时,由于NAT-B设备上没有客户端A的记录,所以NAT-B设备会自动生成一个RST消息,并返回给客户端A,要求客户端A和NAT-A设备复位。步骤707:客户端A通过打洞辅助服务器向客户端B发送通知消息;步骤708:客户端B接收倒所述通知消息后,向客户端A的公网IP地址和端口号发送第二SYN包;步骤709:客户端A在收到第二SYN包后,向客户端B返回SYNACK包,至此TCP直连已建立。请参见图8,为本发明第五实施例提供的穿越NAT设备的方法流程图,该方法与前文已述实施例的区别在于步骤804:客户端A获取已测试得到的打洞可采用的TCP包序列,若所述TCP序列是表1中序号为5的TCP包序列,则客户端A获取已存的环境测试结果,若环境测试结果为操作系统版本为WinXPSP2及以上,用户具有超级用户权限,则进入步骤805;步骤805:客户端A和客户端B的分别向对方的公网IP地址和端口号对应的NAT设备发送SYN包;步骤806:NAT-A设备和NAT-B设备在收到SYN包后,返回RST消息至客户端A和客户端B;步骤807:客户端A和客户端B通过打洞辅助服务器将自己的TCP序列发送给对方;步骤808:客户端A和客户端B在收到对方的TCP序列号后,分别向对方返回SYNACK包,至此TCP直连已建立。以上为本发明第五实施例提供的方法,该方法中除RST消息外,其他的数据包均是由客户端A和客户端B分别利用底层网络函数自己构造的。以上针对不同的打洞环境对本发明实施例进行了介绍。进一步,在本发明实施例中,上述五个实施例提供的方法可以运行在同一个客户端上,在开始打洞前,获取TCP包序列的测试结果,如果表l中序号为N(N=l,2,,5)的TCP包序列未被NAT设备过滤,则选择第N实施例提供的方法,然后,测试表2所列信息的测试结果是否满足第N实施例的要求,如果满足,则使用第N实施例提供的方法开始打洞,如果不满足,则不能进行TCP打洞。表2所示是前文已述5个实施例各自需要测试及不需要测试的信息,其中,'W,,表示需要测试的信息,"x"表示不需要测试的信息。通常情况下,客户端B需要将自己打洞环境测试结果通过打洞辅助服务器发送给客户端A,客户端A通过已保存自己的打洞环境测试结果和客户端B的打洞环境测试结果,选择打洞方法。<table>tableseeoriginaldocumentpage21</column></row><table>表2以上介绍了本发明实施例提供的穿越NAT设备的方法,为了保证更高的节点中转数据的方法相融合。请参见图9,为本发明实施例提供的融合了多种打洞方式的穿越NAT设备的方法流程图,该方法包括步骤901:客户端A和客户端B利用测试服务器A和测试服务器B使用STUN十办i义测试自己的NAT类型;NAT类型有四种全双工锥型NAT,IP受限型NAT,端口受限型NAT及对称型NAT。步骤902:若客户端A判断得到UDP不通或者业务层要求必须使用TCP打洞,则进入步骤903,否则,进入步骤904;步骤903:客户端A获取已存的打洞环境测试结果,根据所述测试结果,曰f步骤904:客户端A判断是否可以进行打洞,如果可以,则进入步骤905,否则,进入步骤906;步骤905:客户端A根据NAT设备的类型,使用UDP打洞;步骤906:客户端A触发超级节点中转数据。本发明实施例还提供了一种第一客户端,该客户端包括直连请求发送单元,用于通过打洞辅助服务器向客户端B发起TCP直接连接请求;公网IP地址接收单元,用于接收打洞辅助服务器返回的客户端B的公网IP地址及端口号;包序列获取单元,用于获取已测试得到的打洞可采用的传输控制协议包序列;直连建立单元,用于在打洞辅助服务器的协助下,按照所述打洞可采用的传输控制协议包序列,向客户端B的公网IP地址和端口号发送数据包,直到成功建立TCP直接连接。若第一客户端是第一次进行TCP打洞,则上述第一客户端进一步包括环境测试单元,用于测试打洞环境,并保存第一客户端保存自身的打洞环境测试结果及客户端B通过打洞辅助服务器向其返回的打洞环境测试结果。本发明实施例针对不同的打洞环境测试结果,提供了几种第一客户端的具体实现方式,以下进4于详细介绍。1、若表1中序号为1的TCP包序列是可用于打洞的TCP序列,则所述客户端进一步包括测试结果获取单元,用于获取已存的环境测试结果,若测试结果为操作系统版本符合预置的版本条件,则触发所述直连建立单元;在具体实现时,直连建立单元包括同步数据包发送单元,同步数据包接收单元,确认消息发送单元;同步数据包发送单元,用于向客户端B的公网IP地址和端口号,发送第一同步凄t据包;通知消息发送单元,用于通过打洞辅助服务器向客户端B发送通知消息,该通知消息用于通知客户端B向客户端A的公网IP地址和端口号发送SYN包;同步数据包接收单元,用于接收客户端B在收到所述通知消息后,发送的第二同步数据包;确认消息发送单元,用于在收到所述第二同步数据包后,向客户端B发送同步数据包确认消息;确认消息接收单元,用于接收客户端B在收到第一同步数据包后,返回的同步数据包确认消息。2、若表1中序号为2的TCP包序列是可用于打洞的TCP序列,则所述客户端进一步包括测试结果获取单元,用于获取已存的环境测试结果,若测试结果为能够使用操作系统接口设置公网IP地址的TTL值,则触发所述直连建立单元;在具体实现时,直连建立单元包括同步数据包发送单元,用于通过打洞辅助服务器向客户端B发送第一同步数据包,所述第一同步数据包携带客户端B的公网IP地址的TTL值被设置为低;协议包接收单元,用于接收打洞辅助服务器返回的互联网控制消息协议包,所述协议包携带第一客户端的公网IP地址的TTL值被设置为过期;同步数据包接收单元,用于接收客户端B发送的第二同步数据包;确认消息发送单元,用于在同步数据包接收单元收到所述第二同步数据包后,向客户端B发送同步数据包确认消息。3、若表1中序号为3的TCP包序列是可用于打洞的TCP序列,则所述客户端进一步包括测试结果获取单元,用于获取已存的环境测试结果,若测试结果为操作系统版本为WinXPSP2及以上,能够使用操作系统接口设置公网IP地址的TTL值,并且用户具有超级用户权限,则触发所述直连建立单元;在具体实现时,直连建立单元包括同步数据包发送单元,用于通过打洞辅助服务器向客户端B发送同步数据包,所述同步数据包携带客户端B的公网IP地址的TTL值被设置为低;协议包接收单元,用于接收打洞辅助服务器返回的互联网控制消息协议包,所述协议包携带第一客户端的公网IP地址的TTL值被设置为过期;序列号发送单元,用于通过打洞辅助服务器向客户端B发送第一传输控制协议序列号;序列号接收单元,用于接收打洞服务器发送来的客户端B的第二传输控制协议序列号;确认消息发送单元,用于在收到第二传输控制协议序列号后,向客户端B发送同步数据包确认消息;确认消息接收单元,用于接收客户端B在收到第一传输控制协议序列号后,返回的同步数据包确认消息。4、若表1中序号为4的TCP包序列是可用于打洞的TCP序列,则在具体实现时,直连建立单元包括同步数据包发送单元,用于向客户端B的公网IP地址和端口号对应的网络地址转换设备发送第一同步数据包;复位消息接收单元,用于接收所述网络地址转换设备返回的复位消息;通知消息发送单元,用于通过打洞辅助服务器向客户端B发送通知消息;同步数据包接收单元,用于接收客户端B在收到通知消息后,发送的第二同步数据包;确认消息发送单元,用于在收到所述第二同步数据包后,向客户端B返回同步数据包确认消息。5、若表1中序号为5的TCP包序列是可用于打洞的TCP序列,则所述客户端进一步包括测试结果获取单元,用于获取已存的环境测试结果,若测试结果为操作系统版本为WinXPSP2,并且用户具有超级用户权限,则触发所述直连建立单元;在具体实现时,直连建立单元包括同步数据包发送单元,用于向客户端B的公网IP地址和端口号对应的网络地址转换设备发送第一同步数据包;'复位消息接收单元,用于接收所述网络地址转换设备返回的复位消息;序列号发送单元,用于向客户端B的公网IP地址和端口号发送第一传输控制协议序列号;序列号接收单元,用于接收客户端B发送的第二传输控制协议序列号;确认消息发送单元,用于在收到第二传输控制协议序列号后,向客户端B返回同步数据包确iU肖息;确认消息接收单元,用于接收客户端B在收到第一传输控制协议序列号后,返回的同步数据包确认消息。按照TCP协议的要求,在上述五种直连建立单元都进一步包括响应消息发送单元,用于在收到第二客户端返回的同步数据包确认消息后,向第二客户端发送响应消息(ACK);响应消息接收单元,用于接收第二客户端在收到第一客户端发送的同步数据包确认消息后,返回的响应消息。在本发明实施例提供的第一客户端中,进一步包括测试数据包发送单元,测试数据包4矣收单元,序列记录单元;测试数据包发送单元,用于向测试服务器发送第一同步数据包,测试数据包接收单元,用于接收测试服务器返回的数据包;若测试数据包接收单元接收到的数据包是第二同步数据包,则序列记录单元,用于记录由所述第一同步数据包和第二同步数据包构成的序列为可用于打洞的传输控制协议包序列;若测试数据包接收单元接收到数据包是互联网控制消息协议包和第二同步数据包,则序列记录单元,用于记录由所述第一同步数据包,互联网控制消息协议包,及第二同步数据包构成的序列为可用于打洞的传输控制协议包序列;若测试数据包接收单元接收到数据包是互联网控制消息协议包和同步数据包确认消息,则序列记录单元,用于记录由所述第一同步数据包,互联网制协议包序列;若测试数据包接收单元接收到数据包是复位消息以及第二同步数据包,则序列记录单元,用于记录由所述第一同步数据包,复位消息以及第二同步数据包构成的序列为可用于打洞的传输控制协议包序列;若测试数据包接收单元接收到数据包是复位消息和同步数据包确认消息,则序列记录单元,用于记录由所述第一同步数据包,复位消息和同步数据包确认消息构成的序列为可用于打洞的传输控制协议包序列。为了保证更高的穿越NAT设备的成功率,本发明实施例提供的第一客户端进一步包括网络地址转换设备类型测试单元,用于利用测试服务器测试网络地址转换设备的类型;打洞方法选择单元,若判断得到用户数据报协议包无法通过或者业务层要求使用传输控制协议打洞,则触发测试结果获取单元,否则,判断是否能够进行打洞,若能,则触发用户数据报直连建立单元,否则,触发超级节点中转数据;用户数据报直连建立单元,用于根据网络地址转换设备的类型,使用用户数据报协议打洞。以上对本发明所提供的一种穿越网络地址转换设备/防火墙的方法、系统及客户端进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。权利要求1、一种穿越网络地址转换设备/防火墙的方法,其特征在于,包括第一客户端通过打洞辅助服务器向第二客户端发起传输控制协议直接连接请求;打洞辅助服务器将第一客户端的公网IP地址及端口号发送给第二客户端,并将第二客户端的公网IP地址及端口号发送给第一客户端;第一客户端获取已测试得到的打洞可采用的传输控制协议数据包序列;第一客户端和第二客户端在打洞辅助服务器的协助下,按照所述打洞可采用的传输控制协议包序列,向对方的公网IP地址和端口号发送数据包,直到成功建立传输控制协议直接连接。2、如权利要求l所述的方法,其特征在于,进一步包括第一客户端向测试服务器发送第一同步数据包,若第一客户端接收到测试服务器返回的第二同步数据包,则由所述第一同步数据包和第二同步数据包构成的序列为可用于打洞的第一传输控制协议包序列;若第一客户端接收到测试服务器返回的互联网控制消息协议包和第二同步数据包,则由所述第一同步数据包,互联网控制消息协议包,及第二同步数据包构成的序列为可用于打洞的第二传输控制协议包序列;若第一客户端接收到测试服务器返回的互联网控制消息协议包和同步数据包确认消息,则由所述第一同步数据包,互联网控制消息协议包,及同步数据包确认消息构成的序列为可用于打洞的第三传输控制协议包序列;若第一客户端接收到测试服务器返回的复位消息以及第二同步数据包,则由所述第一同步数据包,复位消息以及第二同步数据包构成的序列为可用于打洞的第四传输控制协议包序列;若第一客户端接收到测试服务器返回的复位消息和同步数据包确认消息,则由所述第一同步数据包,复位消息和同步数据包确认消息构成的序列为可用于打洞的第五传输控制协议包序列。3、如权利要求2所述的方法,其特征在于,若打洞可采用的传输控制协议包序列为所述第一传输控制协议包序列,则第一客户端获取已测试得到的打洞可采用的传输控制协议数据包序列之后进一步包括第一客户端获取已存的环境测试结果,若测试结果为操作系统版本符合预置的版本条件,则所述第一客户端和第二客户端向对方发送数据包;其中,所述第一客户端和第二客户端向对方发送数据包具体包括第一客户端通过打洞辅助服务器向第二客户端发送通知消息;第一客户端向第二客户端的公网ip地址和端口号,发送第一同步数据包;第二客户端在收到所述通知消息后,向第一客户端的公网IP地址和端口号,发送第二同步数据包;第一客户端和第二客户端在收到所述同步数据包后,向对方的公网ip地址和端口号返回同步数据包确认消息,至此第一和第二客户端成功建立传输控制协议直接连接。4、如权利要求2所述的方法,其特征在于,若打洞可采用的传输控制协议包序列为所述第二传输控制协议包序列,则第一客户端获取已测试得到的打洞可采用的传输控制协议数据包序列之后进一步包括第一客户端获取已存的环境测试结果,若测试结果为能够使用操作系统接口设置公网IP地址的TTL值,则所述第一客户端和第二客户端向对方发送数据包;其中,所述第一客户端和第二客户端向对方发送数据包具体包括第一客户端通过打洞辅助服务器向第二客户端发送第一同步数据包,所述第一同步数据包携带第二客户端的公网IP地址的TTL值被设置为低;打洞辅助服务器向第一客户端返回互联网控制消息协议包,所述协议包携带第一客户端的公网IP地址的TTL值被设置为过期;打洞辅助服务器向第二客户端发送通知消息;第二客户端在收到所述通知消息后,向第一客户端的公网IP地址和端口号发送第二同步数据包;第一客户端收到所述第二同步数据包后,向第二客户端发送第二同步数据包确认消息,至此第一和第二客户端成功建立传输控制协议直接连接。5、如权利要求2所述的方法,其特征在于,若打洞可采用的传输控制协议包序列为所述第三传输控制协议包序列,则第一客户端获取已测试得到的打洞可采用的传输控制协议数据包序列之后进一步包括第一客户端获取已存的环境测试结果,若测试结果为操作系统版本符合预置的版本条件,能够使用操作系统接口设置公网IP地址的TTL值,并且用户具有超级用户权限,则所述第一客户端和第二客户端向对方发送数据包;其中,所述第一客户端和第二客户端向对方发送数据包具体包括第一客户端和第二客户端通过打洞辅助服务器向对方发送同步数据包,所述同步数据包携带的公网IP地址的TTL值被设置为低;打洞辅助服务器向第一客户端和第二客户端发送互联网控制消息协议包,所述协议包携带的公网IP地址的TTL值被设置为过期;第一客户端和第二客户端通过打洞辅助服务器向对方发送传输控制协议序列号;第一客户端和第二客户端在收到所述传输控制协议序列号后,向对方发送同步数据包确认消息,至此第一和第二客户端成功建立传输控制协议直接连接。6、如权利要求2所述的方法,其特征在于,若打洞可采用的传输控制协议包序列为所述第四传输控制协议包序列,则所述第一客户端和第二客户端向对方发送数据包具体包括第一客户端向第二客户端的公网IP地址和端口号对应的网络地址转换设备发送第一同步数据包;所述网络地址转换设备向第一客户端的公网IP地址和端口号返回复位消息;第一客户端通过打洞辅助服务器向第二客户端发送通知消息;第二客户端在收到所述消息后,向第一客户端发送第二同步数据包;第一客户端收到所述第二同步数据包后,向第二客户端返回同步数据包确认消息,至此第一和第二客户端成功建立传输控制协议直接连接。7、如权利要求2所述的方法,其特征在于,若打洞可采用的传输控制协议包序列为所述第五传输控制协议包序列,则第一客户端获取已测试得到的打洞可采用的传输控制协议数据包序列之后进一步包括第一客户端获取已存的环境测试结巢,若测试结果为系统版本符合预置的版本条件,并且用户具有超级用户权限,则第一客户端和第二客户端向对方发送数据包;其中,所述第一客户端和第二客户端向对方发送数据包具体包括第一客户端和第二客户端向对方的/>网IP地址和端口号对应的网络地址转换设备发送同步数据包;网络地址转换设备在收到所述同步数据包后,向对方的客户端返回复位消息;第一客户端和第二客户端向对方的公网IP地址和端口号发送传输控制协议序列号;第一客户端和第二客户端在收到对方的传输控制协议序列号后,向对方返回同步数据包确认消息,至此第一和第二客户端成功建立传输控制协议直接连接。8、如权利要求1至7所述的任意一个方法,其特征在于,在第一客户端通过打洞辅助服务器向第二客户端发起传输控制协议直接连接请求之前进一步包括第一客户端和第二客户端利用测试服务器测试网络地址转换设备的类型;若第一客户端判断得到用户数据报协议包无法通过或者业务层要求使用传输控制协议打洞,则第一客户端获取已存的打洞环境测试结果,使用传输控制协议打洞;否则,第一客户端判断能否进行打洞,若能,则第一客户端根据网络地址转换设备的类型,使用用户数据报协议打洞,否则,触发超级节点中转数据。9、一种第一客户端,其特征在于,包括直连请求发送单元,用于通过打洞辅助服务器向第二客户端发起传输控制协议直接连接请求;公网IP地址接收单元,用于接收打洞辅助服务器返回的第二客户端的公网IP地址及端口号;包序列获取单元,用于获取已测试得到的打洞可采用的传输控制协议包序列;直连建立单元,用于在打洞辅助服务器的协助下,按照所述打洞可采用的传输控制协议包序列,向第二客户端的公网IP地址和端口号发送数据包,直到成功建立传输控制协议直接连接。10、如权利要求9所述的客户端,其特征在于,所述客户端进一步包括测试数据包发送单元,测试数据包接收单元,序列记录单元;测试数据包发送单元,用于向测试服务器发送第一同步数据包,测试数据包接收单元,用于接收测试服务器返回的数据包;若测试数据包接收单元接收到的数据包是第二同步数据包,则序列记录单元,用于记录由所述第一同步数据包和第二同步数据包构成的序列为可用于打洞的第一传输控制协议包序列;若测试数据包接收单元接收到数据包是互联网控制消息协议包和第二同步数据包,则序列记录单元,用于记录由所述第一同步数据包,互联网控制消息协议包,及第二同步数据包构成的序列为可用于打洞的第二传输控制协议包序列;若测试数据包接收单元接收到数据包是互联网控制消息协议包和同步数据包确认消息,则序列记录单元,用于记录由所述第一同步数据包,互联网控制消息协议包,及同步数据包确认消息构成的序列为可用于打洞的第三传输控制协议包序列;若测试数据包接收单元接收到数据包是复位消息以及第二同步数据包,则序列记录单元,用于记录由所述第一同步数据包,复位消息以及第二同步数据包构成的序列为可用于打洞的第四传输控制协议包序列;若测试数据包接收单元接收到数据包是复位消息和同步数据包确认消息,则序列记录单元,用于记录由所述第一同步数据包,复位消息和同步数据包确认消息构成的序列为可用于打洞的第五传输控制协议包序列。11、如权利要求IO所述的客户端,其特征在于,若打洞可采用的传输控制协议包序列为所述第一传输控制协议包序列,则所述客户端进一步包括测试结果获取单元,用于获取已存的环境测试结果,若测试结果为操作系统版本符合预置的版本条件,则触发所述直连建立单元;其中,所述直连建立单元具体包括同步数据包发送单元,用于向第二客户端的公网IP地址和端口号,发送第一同步数据包;通知消息发送单元,用于通过打洞辅助服务器向第二客户端发送通知消自同步数据包接收单元,用于接收第二客户端在收到所述通知消息后,发送的第二同步数据包;确认消息发送单元,用于在收到所述第二同步数据包后,向第二客户端发送同步数据包确认消息;确认消息接收单元,用于接收第二客户端在收到第一同步数据包后,返回的同步数据包确认消息。12、如权利要求IO所述的客户端,其特征在于,若打洞可采用的传输控制协议包序列为所述第二传输控制协议包序列,则所述客户端进一步包括测试结果获取单元,用于获取已存的环境测试结果,若测试结果为能够使用操作系统接口设置公网IP地址的TTL值,则触发所述直连建立单元;其中,所述直连建立单元具体包括同步数据包发送单元,用于通过打洞辅助服务器向第二客户端发送第一同步数据包,所述第一同步数据包携带第二客户端的公网IP地址的TTL值被设置为低;协议包接收单元,用于接收打洞辅助服务器返回的互联网控制消息协议包,所述协议包携带第一客户端的公网IP地址的TTL值被设置为过期;通知消息发送单元,用于通过打洞辅助服务器向第二客户端发送通知消息;同步数据包接收单元,用于接收第二客户端在收到所述通知消息后,发送的第二同步数据包;确认消息发送单元,用于在收到所述第二同步数据包后,向第二客户端发送第二同步数据包确认消息。13、如权利要求IO所述的客户端,其特征在于,若打洞可采用的传输控制协议包序列为所述第三传输控制协议包序列,则所述客户端进一步包括测试结果获取单元,用于获取已存的环境测试结果,若测试结果为操作系统版本符合预置的版本条件,能够使用操作系统接口设置公网IP地址的TTL值,并且用户具有超级用户权限,则触发所述直连建立单元;其中,所述直连建立单元具体包括同步数据包发送单元,用于通过打洞辅助服务器向第二客户端发送同步数据包,所述同步数据包携带第二客户端的公网IP地址的TTL值被设置为低;协议包接收单元,用于接收打洞辅助服务器返回的互联网控制消息协议包,所述协议包携带第一客户端的公网IP地址的TTL值被设置为过期;序列号发送单元,用于通过打洞辅助服务器向第二客户端发送第一传输控制协议序列号;序列号接收单元,用于接收打洞服务器发送来的第二客户端的第二传输控制协议序列号;确认消息发送单元,用于在收到第二传输控制协议序列号后,向第二客户端发送同步数据包确认消息;确认消息接收单元,用于接收第二客户端在收到第一传输控制协议序列号后,返回的同步数据包确认消息。14、如权利要求IO所述的客户端,其特征在于,若打洞可采用的传输控制协议包序列为所述第四传输控制协议包序列,则所述直连建立单元具体包括同步数据包发送单元,用于向第二客户端的公网IP地址和端口号对应的网络地址转换设备发送第一同步数据包;复位消息接收单元,用于接收所述网络地址转换设备返回的复位消息;通知消息发送单元,用于通过打洞辅助服务器向第二客户端发送通知消自同步数据包接收单元,用于接收第二客^端在收到所述通知消息后,发送的第二同步数据包;确认消息发送单元,用于在收到所述第二同步数据包后,向第二客户端返回同步数据包确认消息。15、如权利要求IO所述的客户端,其特征在于,若打洞可采用的传输控制协议包序列为所述第五传输控制协议包序列,则所述客户端进一步包括测试结果获取单元,用于获取已存的环境的测试结果,若测试结果为操作系统版本符合预置的版本条件,并且用户具有超级用户权限,则触发所述直连建立单元;其中,所述直连建立单元具体包括同步数据包发送单元,用于向第二客户端的公网IP地址和端口号对应的网络地址转换设备发送第一同步数据包;复位消息接收单元,用于接收所述网络地址转换设备返回的复位消息;序列号发送单元,用于向第二客户端的公网IP地址和端口号发送第一传输控制协议序列号;序列号接收单元,用于接收第二客户端发送的第二传输控制协议序列号;确认消息发送单元,用于在收到第二传输控制协议序列号后,向第二客户端返回同步数据包确认消息;确认消息接收单元,用于接收第二客户端在收到第一传输控制协议序列号后,返回的同步数据包确认消息。16、如权利要求9至15所述的任意一个客户端,其特征在于,所述客户端进一步包括网络地址转换设备类型测试单元,用于利用测试服务器测试网络地址转换设备的类型;打洞方法选择单元,若判断得到用户数据报协议包无法通过或者业务层要求使用传输控制协议打洞,则触发直连请求发送单元,否则,判断能否进行打洞,若能,则触发用户数据包直连建立单元,否则,触发超级节点中转数据;用卢数据包直连建立单元,用于根据网络地址转换设备的类型,使用用户数据报协议打洞。17、一种穿越网络地址转换设备/防火墙的系统,其特征在于,包括第一客户端,第二客户端,打洞辅助服务器;第一客户端,用于通过打洞辅助服务器向第二客户端发起传输控制协议直接连接请求,并获取已测试得到的打洞可采用的传输控制协议包序列;打洞辅助服务器,用于将第一客户端的公网IP地址及端口号发送给第二客户端,并将第二客户端的公网IP地址及端口号发送给第一客户端;第一客户端和第二客户端在打洞辅助服务器的协助下,按照所述打洞可采用的传输控制协议包序列,向对方的公网IP地址和端口号发送数据包,直到成功建立传输控制协议直接连接。18、如权利要求17所述的系统,其特征在于,所述系统进一步包括第一测试服务器和第二测试服务器;第一测试服务器,用于协助第一客户端测试打洞可采用的传输控制协议包序列;第二测试服务器,用于协助第二客户端测试打洞可采用的传输控制协议包序列。全文摘要本发明公开了一种穿越网络地址转换设备/防火墙的方法,该方法包括第一客户端通过打洞辅助服务器向第二客户端发起传输控制协议直接连接请求;打洞辅助服务器将第一客户端的公网IP地址及端口号发送给第二客户端,并将第二客户端的公网IP地址及端口号发送给第一客户端;第一客户端获取已测试得到的打洞可采用的传输控制协议数据包序列;第一客户端和第二客户端在打洞辅助服务器的协助下,按照所述打洞可采用的传输控制协议包序列,向对方的公网IP地址和端口号发送数据包,直到成功建立传输控制协议直接连接。本发明还相应的公开了与所述方法对应的系统及客户端。本发明实施例提供的技术方案提高了穿越网络转换设备的成功率。文档编号H04L29/06GK101217536SQ200710306339公开日2008年7月9日申请日期2007年12月28日优先权日2007年12月28日发明者王志华申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1