公开/公告号CN101547134A
专利类型发明专利
公开/公告日2009-09-30
原文格式PDF
申请/专利权人 天津德智科技有限公司;
申请/专利号CN200810084240.9
申请日2008-03-27
分类号H04L12/56;H04L29/08;H04L29/06;
代理机构北京集佳知识产权代理有限公司;
代理人逯长明
地址 300384 天津市新技术产业园区华苑产业区华天道8号海泰信息广场c-803
入库时间 2023-12-17 22:40:15
法律状态公告日
法律状态信息
法律状态
2020-03-17
未缴年费专利权终止 IPC(主分类):H04L12/56 授权公告日:20111228 终止日期:20190327 申请日:20080327
专利权的终止
2011-12-28
授权
授权
2011-08-10
专利申请权的转移 IPC(主分类):H04L12/56 变更前: 变更后: 登记生效日:20110701 申请日:20080327
专利申请权、专利权的转移
2010-02-03
实质审查的生效
实质审查的生效
2009-09-30
公开
公开
技术领域
本发明涉及通信技术领域,特别是涉及一种UDP连接和TCP连接相互转化的方法。
背景技术
用户数据报协议(User Datagram Protocol,UDP)是开放式系统互联(OpenSystem Interconnect,OSI)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠的信息传送服务。与传输控制协议(Transmission ControlProtocol,TCP)相比,具有传输速度快、系统开销小等优点,它适用于不需要TCP可靠机制的情形,服务于很多知名应用层协议,如简单网络管理协议(Simple Net Management Protocol,SNMP)、域名系统(Domain Name System,DNS)及简单文件传输系统(Trivial File Transfer Protocol,TFTP)。
通常防火墙设置为只许转发来自内部接口的UDP包,来自外部接口的UDP包则不转发,甚至有一些严格限制的防火墙设置为只有超文本传输协议(Hypertext Transfer Protocol,HTTP)才能访问外网,使得使用UDP通讯的软件在这样的防火墙面前将无法登录。现在的问题是,比如说,DNS名称解析要求应用UDP,如果提供DNS服务,至少要容许一些内部要求穿越防火墙;还有互联网中继聊天(Internet Relay Chat,IRC)这样的客户程序也应用UDP,如果要让用户应用它,就同样要允许他们的UDP数据包进入网络。
现有技术中解决这个问题的方法是设置HTTP代理,用TCP连接外网的方式连接到对应的TCP服务器上,也就是使服务器端和客户端软件支持TCP连接方式登录。
现有技术虽然能够解决这个问题,但由于客户端和服务器支持UDP连接的同时还要支持TCP连接,因此增加了服务器端和客户端的复杂度。
发明内容
本发明所要解决的技术问题是提供一种UDP连接和TCP连接相互转化的方法,以解决现有技术中,需要支持UDP连接的客户端和服务器同时支持TCP连接来穿透严格限制的防火墙的问题。
为解决上述技术问题,根据本发明提供的具体实施例,本发明公开了以下技术方案:
一种UDP连接和TCP连接相互转化的方法,包括:
UDP终端向中转服务器发送建立TCP连接的请求;
中转服务器为所述UDP终端分配TCP连接,并建立用于对外通讯的UDP连接;
所述UDP终端通过所述TCP连接将数据发送到中转服务器;
中转服务器通过所述用于对外通讯的UDP连接,将数据发送到目的端。
其中,所述中转服务器建立用于对外通讯的UDP连接之后,还包括:
将所述UDP连接的IP地址和端口发送到所述UDP终端;
所述UDP终端接收到所述IP地址和端口之后,建立用于本地UDP通讯的UDP连接。
其中,还包括:
中转服务器通过所述用于对外通讯的UDP连接,接收目的端发送的数据;
确定所述用于对外通讯的UDP连接对应的TCP连接,并通过所述TCP连接将所述数据发送给所述TCP连接对应的UDP终端;
所述UDP终端通过与所述TCP连接对应的用于本地通讯的UDP连接,将数据发送给上层调用。
其中,所述UDP终端通过所述TCP连接向所述中转服务器发送数据之前,还包括:
所述UDP终端判断数据流量是否可以发送,如果是,所述UDP终端通过所述TCP连接向中转服务器发送数据,并记录发送的速度;如果否,退出。
其中,所述判断数据流量是否可以发送的具体过程包括:
所述UDP终端创建发送队列,并创建发送线程;
将所述数据放入发送队列,判断当前发送队列的长度是否超过预先设定的长度,如果否,所述发送线程通过所述TCP连接向所述中转服务器发送数据,如果是,退出。
其中,所述UDP终端在所有数据发送完毕之后,还包括:
结束所述发送线程,销毁所述发送队列。
其中,中转服务器通过TCP连接将数据发送给所述TCP连接相对应的UDP终端之前,还包括:
判断数据流量是否可以发送,如果是,通过TCP连接将数据发送给所述TCP连接相对应的UDP终端,并记录发送的速度;如果否,退出。
其中,所述判断数据流量是否可以发送的具体过程包括:
中转服务器创建发送队列,并创建发送线程,
将所述数据放入发送队列,判断当前发送队列的长度是否超过预先设定的长度,如果否,所述发送线程通过TCP连接将数据发送给所述TCP连接相对应的UDP终端,如果是,退出。
其中,中转服务器在所有数据发送完毕之后,还包括:
结束所述发送线程,销毁所述发送队列。
一种UDP连接和TCP连接相互转化的系统,包括终端装置和中转服务器,其中:
终端装置,用于向中转服务器发送建立TCP连接的请求,并利用所述中转服务器分配的TCP连接将数据发送到中转服务器;
中转服务器,用于为所述UDP终端分配TCP连接,建立用于对外通讯的UDP连接,并利用所述用于对外通讯的UDP端口将数据发送到目的端。
其中,
所述中转服务器还用于:将用于对外通讯的UDP连接的IP地址和端口发送到终端装置;
所述终端装置还用于:在接收到所述UDP连接的IP地址和端口后,建立用于本地通讯的UDP连接。
其中,
所述中转服务器还用于:通过所述用于对外通讯的UDP连接,接收目的端发送的数据,确定与所述UDP连接对应的TCP连接,并通过该TCP连接将所述数据发送给所述TCP连接对应的终端装置;
所述终端装置还用于:通过与所述TCP连接对应的用于本地通讯的UDP连接,将数据发送给上层调用。
其中,所述终端装置还用于:
创建发送队列及发送线程;
将所述数据放入所述发送队列,并判断当前发送队列的长度是否超过预先设定的长度,如果否,所述发送线程通过所述TCP连接向所述中转服务器发送数据,如果是,退出;
判断所述TCP连接返回是否成功,如果是,记录所述发送的速度;如果否,保留所述数据等待下次发送;
在所有数据发送完毕之后,结束所述线程,销毁所述发送队列。
其中,所述中转服务器还用于:
创建发送队列及发送线程;
将所述数据放入所述发送队列,并判断当前发送队列的长度是否超过预先设定的长度,如果否,所述发送线程通过所述TCP连接向所述终端装置发送所述数据,如果是,退出;
判断所述TCP连接返回是否成功,如果是,记录所述发送的速度;如果否,保留所述数据等待下次发送;
在所有数据发送完毕之后,结束所述发送线程,销毁所述发送队列。
一种实现UDP连接和TCP连接相互转化的中转服务器,包括:
TCP连接分配单元,用于为终端装置分配TCP连接;
UDP连接建立单元,用于建立用于对外通讯的UDP连接;
TCP数据接收单元,用于接收所述终端装置利用所述TCP连接发送来的数据;
UDP数据发送单元,用于利用所述用于对外通讯的UDP端口将所述数据发送到目的端。
其中,还包括:
UDP数据接收单元,用于通过所述用于对外通讯的UDP连接,接收所述目的端发送的数据;
对应关系确定单元,用于确定与所述UDP连接对应的TCP连接;
TCP数据发送单元,用于通过所述TCP连接将所述数据发送给所述TCP连接对应的终端装置。
其中,还包括:
流量控制单元,用于所述TCP数据发送单元发送数据之前,判断数据流量是否可以发送,如果是,则触发所述TCP数据发送单元;如果否,退出。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
首先,本发明实施例通过UDP连接与TCP连接的相互转化来适应复杂的网络环境,使得在严格限制的防火墙面前,支持UDP连接的客户端或服务器通过中转服务器就可以实现与外网进行通讯,而且不需要对客户端或服务器进行大的改造。其次,本发明实施例对数据进行了流量控制,提高了系统的性能。
附图说明
图1是本发明实施例一提供的方法的流程图;
图2是本发明实施例二提供的方法的流程图;
图3是本发明实施例三提供的方法的流程图;
图4是本发明实施例提供的流量控制方法的流程图;
图5是本发明实施例提供的系统的示意图;
图6是本发明实施例提供的中转服务器的示意图;
图7是本发明实施例提供的另一中转服务器的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例一:参照图1,设UDP终端处于一个局域网中,UDP终端想要向公网上的用户发送数据,实现本发明实施例所提供的方法包括以下步骤:
S101:UDP终端中转服务器发送建立TCP连接的请求;
中转服务器创建接收TCP连接的监听服务,UDP终端接收上层调用后,向所述中转服务器发送建立TCP连接消息;
所述TCP连接用于实现所述UDP终端到所述中转服务器之间的连接,通过所述TCP连接可以进行所述UDP软件与所述中转服务器之间数据的转发;
S102:中转服务器为所述UDP终端分配TCP连接,并建立用于对外通讯的UDP连接;
S103:所述UDP终端通过所述TCP连接将数据发送到中转服务器;
这里,UDP终端是在得知中转服务器已经为其分配了TCP连接之后,利用该TCP连接将数据发送到中转服务器;
S104:中转服务器通过所述用于对外通讯的UDP连接,将数据发送到目的端。其中,所述目的端指所述UDP终端想要向其发送数据的处于网外的UDP终端。
通过以上各步骤便完成了UDP数据向目的端的转发,本发明实施例也能够实现从目的端接收数据,目的端通过接收中转服务器的数据,可以得知中转服务器建立的用于对外通讯的UDP连接的端口,此时目的端可以通过中转服务器向UDP终端返回数据,下面对从目的端接收数据的步骤进行详细地描述。
实施例二、参见图2,本发明实施例所提供的实现本发明实施例的方法包括以下步骤:
S201至S202与S101至S102相同;
S203:中转服务器将所述UDP连接的IP地址和端口发送到所述UDP终端;
S204:所述UDP终端接收到所述IP地址和端口之后,建立用于本地UDP通讯的UDP连接;
这里,所述UDP终端通过接收到的所述UDP连接的IP地址和端口,即可确定所述中转服务器已经建立为其建立了TCP连接;建立所述用于本地UDP通讯的UDP连接的目的是,将接收到远端发送来的数据通过所述用于本地UDP通讯的UDP连接的端口发送给上层调用;
S205至S206与S103至S104相同;
S207:中转服务器通过所述用于对外通讯的UDP连接,接收目的端发送的数据;
S208:确定所述用于对外通讯的UDP连接对应的TCP连接,并通过所述TCP连接将目的端发送的数据发送给所述TCP连接对应的UDP终端;
S209:所述UDP终端通过与所述TCP连接对应的用于本地通讯的UDP连接,将数据发送给上层调用。
上述实施例可以完成UDP数据的转发,但由于UDP是面向无连接的,而TCP是面向连接的,因此从UDP收到的数据包要用TCP发送时如果进行相应的流量控制,则可以使本发明实施例提供的方法表现出更好的性能,因此,在本发明的优选实施例中,可以包括流量控制的步骤,下面对此实施例进行详细的介绍。
实施例三:参照图3,实现本发明实施例所提供的方法包括以下步骤:
S301至S302与S101至S102相同;
S303:所述UDP终端判断所述数据流量是否可以发送,如果是,进入S304;如果否,退出;
S304:通过所述TCP连接将所述数据发送给中转服务器,并记录本次发送的速度,进入S305;
S305与S104相同。
其中,参照图4,本发明实施例三所述判断所述数据流量是否可以发送的具体过程是:
S401:所述UDP终端创建发送队列,并创建发送线程;
S402:将所述数据放入所述发送队列;
S403:判断当前发送队列的长度是否超过预先设定的长度,如果否,进入S404,如果是,退出;
S404:所述发送线程通过所述TCP连接向所述中转服务器发送所述数据;
当UDP终端发送完所有数据之后,将结束所述发送线程,销毁所述发送队列。
同样,为了在接收目的端的数据时也获得更好的性能,中转服务器在向所述UDP终端发送所述目的端发来的数据之前,需要对此数据进行流量控制,与本发明实施例三所述的方法类似,只需要由所述中转服务器判断所述数据流量是否可以发送,如果是,通过所述TCP连接将所述数据发送给所述UDP终端,并记录本次发送的速度,如果否,退出。其中判断所述数据是否可以发送的步骤与图4所示类似,不同之处只在于判断的主体为所述中转服务器,具体过程这里不再赘述。
与上述实施例所提供的方法相对应,参见图5,本发明还提供了一种实现UDP中转的系统,该系统包括:
终端装置U501,用于向中转服务器发送建立TCP连接的请求,并利用所述中转服务器分配的TCP连接将数据发送到中转服务器;
中转服务器U502,用于为所述UDP终端分配TCP连接,建立用于对外通讯的UDP连接,并利用所述用于对外通讯的UDP端口将数据发送到目的端。
在终端装置U501向目的端发送数据的过程中,首先由终端装置U501向中转服务器U502发送建立TCP连接的请求,中转服务器U502在收到所述请求后,为终端装置U501分配TCP连接,并建立用于对外通讯的UDP连接;然后,终端装置通过为其分配的TCP连接,将数据发送到中转服务器U502;再由中转服务器U502通过用于对外通讯的UDP连接,将数据发送到目的端。这样便完成了数据从终端装置向目的端转发的过程。
为了目的端也能向终端装置U501发送数据,中转服务器U502还用于将用于对外通讯的UDP连接的IP地址和端口发送到终端装置501;终端装置501还用于在接收到中转服务器发送的所述UDP连接的IP地址和端口后,建立用于本地通讯的UDP连接。
当目的端需要向终端装置U501发送数据时,中转服务器U502还用于:通过所述用于对外通讯的UDP连接,接收目的端发送的数据,确定与所述UDP连接对应的TCP连接,并通过该TCP连接将所述数据发送给所述TCP连接对应的终端装置;终端装置U501还用于:通过与所述TCP连接对应的用于本地通讯的UDP连接,将数据发送给上层调用。
在接收数据的过程中,中转服务器U502通过所述用于对外通讯的UDP连接,接收目的端发送的数据,确定与所述UDP连接对应的TCP连接,并通过该TCP连接将所述数据发送给所述TCP连接对应的终端装置U501;终端装置U501在收到中转服务器U501发来的数据后,通过与所述TCP连接对应的用于本地通讯的UDP连接,将数据发送给上层调用。
在本发明的优选实施例中,当终端装置发送数据、需要对数据进行流量控制时,则所述终端装置还用于:
创建发送队列,并创建发送线程;
将所述数据放入所述发送队列,并判断当前发送队列的长度是否超过预先设定的长度,如果否,所述发送线程通过所述TCP连接向所述中转服务器发送数据,如果是,退出;
判断所述TCP连接返回是否成功,如果是,记录所述发送的速度;如果否,保留所述数据等待下次发送;
在所有数据发送完毕之后,结束所述线程,销毁所述发送队列。
在本发明的优选实施例中,当中转服务器接收数据、需要对数据进行流量控制时,所述中转服务器还用于:
创建发送队列,并创建发送线程;
将所述数据放入所述发送队列,并判断当前发送队列的长度是否超过预先设定的长度,如果否,所述发送线程通过所述TCP连接向所述终端装置发送所述数据,如果是,退出;
判断所述TCP连接返回是否成功,如果是,记录所述发送的速度;如果否,保留所述数据等待下次发送;
在所有数据发送完毕之后,结束所述发送线程,销毁所述发送队列。
与本发明提供的UDP连接和TCP连接相互转化的方法和系统相对应,本发明还提供了一种实现UDP连接和TCP连接相互转化的中转服务器,参见图6,该中转服务器包括:
TCP连接分配单元U601,用于为终端装置分配TCP连接;
UDP连接建立单元U602,用于建立用于对外通讯的UDP连接;
TCP数据接收单元U603,用于接收所述终端装置利用所述TCP连接发送来的数据;
UDP数据发送单元U604,用于利用所述用于对外通讯的UDP端口将所述数据发送到目的端。
TCP连接分配单元U601在收到终端装置发送的建立TCP连接的请求之后,为终端装置分配TCP连接,同时UDP连接建立单元U602,建立用于对外通讯的UDP连接;当终端装置发送来数据时,TCP数据接收单元U603接收所述终端装置利用TCP连接发送来的数据,然后再由UDP数据发送单元U604利用用于对外通讯的UDP端口将所述数据发送到目的端。
当接收目的端发送来的数据时,该中转服务器还包括:
UDP数据接收单元U605,用于通过所述用于对外通讯的UDP连接,接收所述目的端发送的数据;
对应关系确定单元U606,用于确定与所述UDP连接对应的TCP连接;
TCP数据发送单元U607,用于通过所述TCP连接将所述数据发送给所述TCP连接对应的终端装置。
UDP数据接收单元U605通过用于对外通讯的UDP连接接收到所述目的端发送的数据后,由对应关系确定单元U606确定与所述UDP连接对应的TCP连接,然后由TCP数据发送单元U607通过所述TCP连接将所述数据发送给所述TCP连接对应的终端装置。
当需要对数据进行流量控制时,该中转服务器还包括:
流量控制单元U608,用于所述TCP数据发送单元U607发送数据之前,判断数据流量是否可以发送,如果是,则触发所述TCP数据发送单元U607;如果否,退出。
从以上实施例可见,通过本发明实施例,使得在严格限制的防火墙面前,支持UDP连接的客户端或服务器通过中转服务器就可以实现与外网进行通讯,不需要对客户端或服务器进行大的改造。另外,本发明实施例还对数据进行了流量控制,提高了整个系统的性能。
以上对本发明所提供的一种UDP连接与TCP连接相互转化的方法、系统及中转服务器,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
机译: TCP连接和UDP流的ip包识别方法及系统
机译: TCP连接和UDP流的ip包识别方法及系统
机译: 用于tcp连接和udp流的ip包识别方法和系统