Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD, DEVICE AND SYSTEM FOR REALIZING PRIVATE NETWORK TRAVERSAL
Document Type and Number:
WIPO Patent Application WO/2014/121514
Kind Code:
A1
Abstract:
Disclosed are a method, device and system for realizing private network traversal. An interactive message between a traversal using relay network address translation (TURN) server in a public network and a communication terminal in a local area network is transmitted via a pre-established first websocket connection. The method comprises: a TURN server receiving a resource allocation request sent by a communication terminal, and allocating a forwarding address and a resource port for the communication terminal; receiving a TURN data packet sent by the communication terminal, the TURN data packet comprising communication data and a multiplex identifier, and the multiplex identifier being used for identifying the forwarding address and a communication channel between the resource port and a remote node corresponding to the communication data; and sending the communication data to the remote node via the communication channel identified by the multiplex identifier. Thus, the problem in the existing TURN technology that communication between a communication terminal in a local area network and a remote node cannot be realized in the case of deploying a firewall with only an HTTP port being opened is solved, and the problem that simultaneous communication of the communication terminal in the local area network with a plurality of remote nodes cannot be realized, which is caused due to the limitation on ports by such a firewall, is solved.

Inventors:
CHEN XIN (CN)
YAN QIANG (CN)
Application Number:
PCT/CN2013/071564
Publication Date:
August 14, 2014
Filing Date:
February 08, 2013
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
H04L29/06
Domestic Patent References:
WO2009065996A12009-05-28
Foreign References:
CN1968194A2007-05-23
CN101848235A2010-09-29
CN101883056A2010-11-10
Other References:
See also references of EP 2782312A4
None
Download PDF:
Claims:
权利要求 书

1. 一种实现私网穿越的方法, 其特征在于, 公网中的转发网络地址转换穿 越 TURN服务器和局域网中的通信终端之间交互的消息是通过预先建立的第一网 络套接字 web s ocke t连接进行传输的, 所述方法包括:

所述 TURN服务器接收所述通信终端发送的资源分配请求, 并为所述通信终 端分配转发地址和资源端口, 所述转发地址和资源端口为所述 TURN服务器自身 的 IP地址和端口;

所述 TURN服务器接收所述通信终端发送的 TURN数据包, 所述 TURN数据包 包括通信数据和复用标识, 所述复用标识用于标识所述转发地址和资源端口与 所述通信数据对应的远端节点之间的通信通道;

所述 TURN服务器通过所述复用标识所标识的通信通道将所述通信数据发送 给所述远端节点。

2.如权利要求 1所述的方法, 其特征在于,

所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN服 务器与所述远端节点之间的通信协议为 TCP;

所述 TURN服务器接收所述通信终端发送的 TURN数据包之前, 还包括: 所 述 TURN服务器利用所述转发地址和资源端口建立与所述远端节点之间的 TCP连 接;

所述 TURN数据包包括的复用标识具体用于标识所述 TCP连接;

所述 TURN服务器通过所述复用标识所标识的通信通道将所述通信数据发送 给所述远端节点, 具体包括: 所述 TURN服务器通过所述复用标识所标识的 TCP 连接将所述通信数据发送给所述远端节点。

3. 如权利要求 2所述的方法, 其特征在于,

所述为所述通信终端分配转发地址和资源端口之后, 以及所述利用所述转 发地址和资源端口建立与所述远端节点之间的 TCP连接之前, 还包括: 在预先创建的配置信息对象中记录为所述配置信息对象分配的资源标识、 以及所述转发地址和资源端口, 并向所述通信终端发送所述资源标识;

接收所述通信终端发送的许可创建请求, 所述许可创建请求包括所述资源 标识、 以及所述远端节点的 IP地址和端口号; 获取记录所述资源标识的配置信 息对象, 在所述配置信息对象中记录许可信息, 所述许可信息包括所述远端节 点的 IP地址和端口号;

接收所述远端节点发送的用于建立 TCP连接的 TCP连接请求, 所述 TCP连 接请求的目的 IP地址和目的端口为所述转发地址和资源端口, 所述 TCP连接请 求的源 IP地址和源端口为所述远端节点的 IP地址和端口号;

获取记录了所述转发地址和资源端口的配置信息对象, 判断所述配置信息 对象的许可信息是否包括所述远端节点的 IP地址和端口号, 如果是则确定所述 通信终端许可所述远端节点利用所述转发地址和资源端口与所述通信终端通 信。

4. 如权利要求 2所述的方法, 其特征在于,

所述为所述通信终端分配转发地址和资源端口之后, 以及所述利用所述转 发地址和资源端口建立与所述远端节点之间的 TCP 连接之前, 还包括: 在预先 创建的配置信息对象中记录为所述配置信息对象分配的资源标识、 以及所述转 发地址和资源端口; 向所述通信终端发送所述资源标识; 接收所述通信终端发 送的连接请求, 所述连接请求包括所述资源标识、 以及所述远端节点的 IP地址 和端口号, 获取记录所述资源标识的配置信息对象, 从所述配置信息对象中读 取所述转发地址和资源端口;

所述利用所述转发地址和资源端口建立与所述远端节点之间的 TCP 连接, 具体包括: 利用读取的所述转发地址和资源端口、 以及所述连接请求中的所述 远端节点的 IP地址和端口号建立所述 TCP连接。

5.如权利要求 3或 4所述的方法, 其特征在于,

所述利用所述转发地址和资源端口建立与所述远端节点之间的 TCP 连接之 后, 还包括: 在所述配置信息对象中记录为所述 TCP连接分配的连接标识与所 述 TCP连接的对应关系, 并将所述连接标识发送给所述通信终端; 所述 TURN数 据包包括的复用标识具体为所述连接标识;所述通过所述复用标识所标识的 TCP 连接将所述通信数据发送给所述远端节点, 具体包括: 获取记录所述连接标识 的配置信息对象, 根据所述配置信息对象中记录的所述连接标识与所述 TCP连 接的对应关系确定所述 TCP连接, 并通过 TCP连接将所述通信数据发送给所述 远端节点; 或者,

在所述配置信息对象中记录所述资源标识与所述 TCP连接的对应关系; 所 述 TURN数据包包括的复用标识具体为所述资源标识; 所述通过所述复用标识所 标识的 TCP 连接将所述通信数据发送给所述远端节点, 具体包括: 获取记录所 述资源标识的配置信息对象, 根据所述配置信息对象中记录的所述资源标识与 所述 TCP连接的对应关系确定所述 TCP连接, 并通过 TCP连接将所述通信数据 发送给所述远端节点。

6. 如权利要求 2至 5任一所述的方法, 其特征在于, 所述建立与所述远端 节点之间的 TCP连接之后, 还包括: 接收所述远端节点通过所述 TCP连接发送 的通信数据, 将所述通信数据封装在 TURN数据包中发送给所述通信终端, 所述 TUR 数据包还包括所述复用标识。

7.如权利要求 1所述的方法, 其特征在于,

所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN服 务器与所述远端节点之间的通信协议为 UDP;

所述 TURN数据包包括的复用标识具体用于标识所述转发地址和资源端口与 所述远端节点之间的 UDP通道;

所述 TURN服务器通过所述复用标识所标识的通信通道将所述通信数据发送 给所述远端节点, 具体包括: 所述 TURN服务器根据所述复用标识获取所述转发 地址和资源端口、 以及所述远端节点的 IP地址和端口号, 将所述通信数据封装 到 UDP数据包中并将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的 源 IP地址和源端口号为所述转发地址和资源端口, 所述 UDP数据包的目的 IP 地址和目的端口号为所述远端节点的 IP地址和端口号。

8. 如权利要求 7所述的方法, 其特征在于,

所述为所述通信终端分配转发地址和资源端口之后, 以及接收所述通信终 端发送的 TURN数据包之前, 还包括: 在预先创建的配置信息对象中记录为所述 配置信息对象分配的资源标识、 以及所述转发地址和资源端口; 向所述通信终 端发送所述资源标识; 接收所述通信终端发送的通道绑定请求, 所述通道绑定 请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并获取记录所 述资源标识的配置信息对象; 在所述配置信息对象中记录为所述 UDP通道分配 的通道号和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP地址和端 口号; 并将所述通道号发送给所述通信终端;

所述 TURN数据包包括的复用标识具体为所述通道号;

所述 TURN服务器根据所述复用标识获取所述转发地址和所述资源端口、 以 及所述远端节点的 IP地址和端口号, 具体包括: 所述 TURN服务器获取记录所 述通道号的配置信息对象, 并获取所述配置信息对象中记录的所述转发地址和 资源端口、 以及所述 UDP通道信息中的所述远端节点的 IP地址和端口号。

9. 如权利要求 7所述的方法, 其特征在于,

所述为所述通信终端分配转发地址和资源端口之后, 以及接收所述通信终 端发送的 TURN数据包之前, 还包括: 在预先创建的配置信息对象中记录为所述 配置信息对象分配的资源标识、 以及所述转发地址和资源端口; 向所述通信终 端发送所述资源标识; 接收所述通信终端发送的通道绑定请求, 所述通道绑定 请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号; 获取记录所述 资源标识的配置信息对象; 在所述配置信息对象中记录 UDP通道信息, 所述 UDP 通道信息包括所述远端节点的 IP地址和端口号;

所述 TURN数据包包括的复用标识具体为所述资源标识; 所述 TURN服务器根据所述复用标识获取所述所述转发地址和所述资源端 口、 以及所述远端节点的 IP地址和端口号, 具体包括: 获取记录所述资源标识 的配置信息对象, 并获取所述配置信息对象中记录的所述转发地址和资源端口、 以及所述 UDP通道信息中的所述远端节点的 IP地址和端口号。

10.如权利要求 Ί所述的方法, 其特征在于,

所述为所述通信终端分配转发地址和资源端口之后, 以及所述 TURN服务器 接收所述通信终端发送的 TURN数据包之前, 还包括: 在预先创建的配置信息对 象中记录为所述配置信息对象分配的资源标识、 以及所述转发地址和资源端口; 向所述通信终端发送所述资源标识;

所述 TURN数据包包括的复用标识具体包括所述资源标识、 以及所述远端节 点的 IP地址和端口号;

根据所述复用标识获取所述转发地址和资源端口、 以及所述远端节点的 IP 地址和端口号, 具体包括: 获取记录所述资源标识的配置信息对象, 并获取所 述配置信息对象中记录的转发地址和资源端口, 并获取所述 TURN数据包中的所 述远端节点的 I P地址和端口号。

11.如权利要求 8至 10任一所述的方法, 其特征在于, 所述向所述通信终 端发送所述资源标识之后, 还包括:

所述 TURN服务器接收所述通信终端发送的许可创建请求, 所述许可创建请 求包括所述资源标识、 以及所述远端节点的 IP地址和端口号;

所述 TURN服务器获取记录所述资源标识的配置信息对象, 在所述配置信息 对象中记录许可信息, 所述许可信息包括所述远端节点的 IP地址和端口号; 所述 TURN服务器接收所述远端节点发送的封装了通信数据的 UDP数据包, 所述 UDP数据包的目的 IP地址和目的端口号为所述转发地址和资源端口, 所述 UDP数据包的源 I P地址和源端口号为所述远端节点的 I P地址和端口号;

所述 TURN服务器获取记录了所述转发地址和资源端口的配置信息对象, 判 断所述配置信息对象的许可信息是否包括所述远端节点的 IP地址和端口号, 如 果是则确定所述通信终端许可所述远端节点利用所述转发地址和资源端口与所 述通信终端通信,并将所述通信数据封装在 TURN数据包中发送给所述通信终端, 所述 TURN数据包还包括所述复用标识。

12.如权利要求 1所述的方法, 其特征在于;

所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN服 务器与所述远端节点之间的通信协议为 webs ocke t;

所述 TURN服务器接收所述通信终端发送的 TURN数据包之前, 还包括: 生 成连接标识, 并记录所述连接标识与所述第一 webs ocke t 连接的对应关系、 以 及所述连接标识与第二 webs ocke t 连接的对应关系, 并将所述连接标识发送给 所述通信终端, 所述第二 webs ocke t连接是所述 TURN服务器利用所述转发地址 和资源端口预先建立的与所述远端节点之间的 web s ocke t连接, 并且所述 TURN 服务器与所述远端节点之间交互的消息是通过所述第二 webs ocke t 连接进行传 输的;

所述 TURN数据包包括的复用标识具体为所述连接标识;

所述 TURN服务器通过所述复用标识所标识的通信通道将所述通信数据发送 给所述远端节点, 具体包括: 所述 TURN服务器通过所述连接标识所对应的所述 第二 webs ocke t连接将所述 TURN数据包发送给所述远端节点。

1 3.如权利要求 12 所述的方法, 其特征在于, 所述生成连接标识, 并记录 所述连接标识与所述第一 webs ocke t 连接的对应关系、 以及所述连接标识与第 二 webs ocke t连接的对应关系之后, 还包括:

向所述远端节点发送所述连接标识;

接收所述远端节点发送的 TURN数据包并将所述 TURN数据包发送给所述通 信终端, 所述 TURN数据包包括通信数据和所述连接标识。

14. 如权利要求 12或 1 3所述的方法, 其特征在于,

所述为所述通信终端分配转发地址和资源端口之后, 以及所述生成连接标 识并记录所述连接标识与所述第一 webs ocke t 连接的对应关系、 以及所述连接 标识与第二 websocket 连接的对应关系之前, 还包括: 在预先创建的配置信息 对象中记录为所述配置信息对象分配的资源标识、 以及所述转发地址和资源端 口; 向所述通信终端发送所述资源标识; 接收所述通信终端发送的连接请求, 所述连接请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并获 取记录所述资源标识的配置信息对象, 根据所述配置信息对象中记录的所述转 发地址和资源端口、 以及所述连接请求中的远端节点的 IP地址和端口号确定所 述第二 websocket连接;

所述记录所述连接标识与所述第一 websocket 连接的对应关系、 以及所述 连接标识与第二 websocket 连接的对应关系, 具体包括: 在所述配置信息对象 中记录所述连接标识与所述第一 websocket 连接的对应关系、 以及所述连接标 识与所述第二 w e b s 0 c k e t连接的对应关系;

所述 TURN 良务器通过所述连接标识所对应的所述第二 websocket连接将所 述 TURN数据包发送给所述远端节点, 具体包括: 获取记录所述连接标识的配置 信息对象,根据所述配置信息对象中记录的所述连接标识与所述第二 websocke t 连接的对应关系确定所述第二 websocke t连接, 并通过所述第二 websocket连 接将所述 TURN数据包发送给所述远端节点。

15. 如权利要求 12或 13所述的方法, 其特征在于,

所述为所述通信终端分配转发地址和资源端口之后, 以及所述生成连接标 识并记录所述连接标识与所述第一 webs ocke t 连接的对应关系、 以及所述连接 标识与第二 websocket 连接的对应关系之前, 还包括: 在预先创建的配置信息 对象中记录为所述配置信息对象分配的资源标识、 所述通信终端的 IP地址和端 口号、 以及所述转发地址和资源端口; 向所述通信终端发送所述资源标识; 接 收所述通信终端发送的许可创建请求, 所述许可创建请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号;获取记录所述资源标识的配置信息对象, 在所述配置信息对象中记录许可信息, 所述许可信息包括所述远端节点的 IP地 址和端口号; 接收所述远端节点发送的连接请求, 所述连接请求包括所述通信 终端的 IP地址和端口号, 获取记录了所述通信终端的 IP地址和端口号的配置 信息对象, 判断所述配置信息对象中的许可信息是否包括所述远端节点的 IP地 址和端口号, 如果是则确定所述通信终端许可所述远端节点利用所述转发地址 和资源端口与所述通信终端通信;

所述记录所述连接标识与所述第一 webs ocke t 连接的对应关系、 以及所述 连接标识与第二 websocke t 连接的对应关系, 具体包括: 在所述配置信息对象 中记录所述连接标识与所述第一 websocke t 连接的对应关系、 以及所述连接标 识与所述第二 w e b s 0 c k e t连接的对应关系;

所述 TURN 良务器通过所述连接标识所对应的所述第二 websocke t连接将所 述 TURN数据包发送给所述远端节点, 具体包括: 获取记录所述连接标识的配置 信息对象,根据所述配置信息对象中记录的所述连接标识与所述第二 webs ocke t 连接的对应关系确定所述第二 websocke t连接, 并通过所述第二 websocke t连 接将所述 TURN数据包发送给所述远端节点。

16. 一种实现私网穿越的方法, 其特征在于, 公网中的转发网络地址转换 穿越 TURN服务器和局域网中的通信终端之间交互的消息是通过预先建立的第一 网络套接字 websocke t连接进行传输的, 所述方法包括:

所述通信终端向所述 TURN服务器发送资源分配请求, 以使得所述 TURN服 务器为所述通信终端分配转发地址和资源端口, 所述转发地址和资源端口为所 述 TURN服务器自身的 IP地址和端口;

所述通信终端向所述 TURN服务器发送 TURN数据包, 所述 TURN数据包包括 通信数据和复用标识, 所述复用标识用于标识所述转发地址和资源端口与所述 通信数据对应的远端节点之间的通信通道, 以使得所述 TURN服务器通过所述复 用标识所标识的通信通道将所述通信数据发送给所述远端节点。

17.如权利要求 16所述的方法, 其特征在于, 所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN服 务器与所述远端节点之间的通信协议为 TCP;

所述 TURN数据包包括的复用标识具体用于标识所述 TURN服务器利用所述 转发地址和资源端口建立的与所述远端节点之间的 TCP连接, 以使得所述 TURN 服务器通过所述复用标识所标识的 TCP 连接将所述通信数据发送给所述远端节 点。

18.如权利要求 16所述的方法, 其特征在于,

所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN服 务器与所述远端节点之间的通信协议为 UDP;

所述 TURN数据包包括的复用标识具体用于标识所述转发地址和资源端口与 所述远端节点之间的 UDP通道, 以使得: 所述 TURN服务器根据所述复用标识获 取所述转发地址和资源端口、 以及所述远端节点的 IP地址和端口号, 将所述通 信数据封装到 UDP数据包中并将所述 UDP数据包发送给所述远端节点,所述 UDP 数据包的源 IP地址和源端口号为所述转发地址和资源端口, 所述 UDP数据包的 目的 IP地址和目的端口号为所述远端节点的 IP地址和端口号。

19.如权利要求 18所述的方法, 其特征在于,

所述通信终端向所述 TURN服务器发送 TURN数据包之前, 还包括: 所述通 信终端接收所述 TURN服务器在预先创建的配置信息对象中记录为所述配置信息 对象分配的资源标识、 以及所述转发地址和资源端口后发送的所述资源标识; 向所述 TURN服务器发送通道绑定请求, 所述通道绑定请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 以使得: 所述 TURN服务器在记录了所 述资源标识的配置信息对象中记录为所述 UDP通道分配的通道号和 UDP通道信 息, 所述 UDP通道信息包括所述远端节点的 IP地址和端口号; 并接收所述 TURN 服务器发送的所述通道号;

所述 TURN数据包包括的复用标识具体为所述通道号, 以使得: 所述 TURN 服务器从记录了所述通道号的配置信息对象中获取记录的所述转发地址和资源 端口、 以及所述 UDP通道信息中的所述远端节点的 I P地址和端口号, 将所述通 信数据封装到 UDP数据包中并将所述 UDP数据包发送给所述远端节点,所述 UDP 数据包的源 IP地址和源端口号为所述转发地址和资源端口, 所述 UDP数据包的 目的 IP地址和目的端口号为所述远端节点的 IP地址和端口号。

20.如权利要求 15所述的方法, 其特征在于,

所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN服 务器与所述远端节点之间的通信协议为 webs ocke t;

所述通信终端向所述 TURN服务器发送 TURN数据包之前, 还包括: 所述通 信终端接收所述 TURN服务器发送的连接标识, 其中, 所述 TURN服务器记录了 所述连接标识与所述第一 websocket 连接的对应关系、 以及所述连接标识与第 二 websocke t连接的对应关系, 所述第二 websocke t连接是所述 TUR 服务器利 用所述转发地址和资源端口预先建立的与所述远端节点之间的 websocke t连接, 并且所述 TURN 服务器与所述远端节点之间交互的消息是通过所述第二 websocke t连接进行传输的;

所述 TURN数据包包括的复用标识具体为所述连接标识, 以使得所述 TURN 服务器通过所述连接标识所对应的所述第二 websocke t连接将所述 TURN数据包 发送给所述远端节点。

21. 一种转发网络地址转换穿越 TURN服务器, 其特征在于, 所述 TURN服 务器位于公网中, 和局域网中的通信终端之间交互的消息是通过预先建立的第 一网络套接字 websocke t连接进行传输的, 所述 TURN服务器包括: 接收单元、 资源分配单元和发送单元;

所述接收单元, 用于接收所述通信终端发送的资源分配请求, 并将所述资 源分配请求传输至所述资源分配单元;

所述资源分配单元, 用于从所述接收单元接收所述资源分配请求, 并为所 述通信终端分配转发地址和资源端口, 所述转发地址和资源端口为所述 TURN服 务器自身的 IP地址和端口;

所述接收单元,还用于接收所述通信终端发送的 TURN数据包,并将所述 TURN 数据包传输至所述发送单元, 所述 TURN数据包包括通信数据和复用标识, 所述 复用标识用于标识所述转发地址和资源端口与所述通信数据对应的远端节点之 间的通信通道;

所述发送单元, 用于从所述接收单元接收所述 TURN数据包, 并通过所述复 用标识所标识的通信通道将所述通信数据发送给所述远端节点。

22.如权利要求 21所述的 TURN服务器, 其特征在于, 所述 TURN服务器还 包括 TCP连接建立单元;

所述接收单元接收的所述资源分配请求包括资源协议类型, 所述资源协议 类型指定所述 TURN服务器与所述远端节点之间的通信协议为 TCP;

TCP连接建立单元,用于利用所述转发地址和资源端口建立与所述远端节点 之间的 TCP连接;

所述接收单元接收的所述 TURN数据包包括的复用标识, 具体用于标识所述 TCP连接;

所述发送单元用于通过所述复用标识所标识的通信通道将所述通信数据发 送给所述远端节点, 具体包括: 所述发送单元用于通过所述复用标识所标识的

TCP连接将所述通信数据发送给所述远端节点。

2 3.如权利要求 21所述的 TURN服务器, 其特征在于,

所述接收单元接收的所述资源分配请求包括资源协议类型, 所述资源协议 类型指定所述 TURN服务器与所述远端节点之间的通信协议为 UDP;

所述接收单元接收的所述 TURN数据包包括的复用标识具体用于标识所述转 发地址和资源端口与所述远端节点之间的 UDP通道;

所述发送单元, 具体用于从所述接收单元接收所述 TURN数据包, 根据所述 复用标识获取所述转发地址和资源端口、以及所述远端节点的 I P地址和端口号, 将所述通信数据封装到 UDP数据包中并将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 I P地址和源端口号为所述转发地址和资源端口, 所述 UDP 数据包的目的 IP地址和目的端口号为所述远端节点的 IP地址和端口号。

24. 如权利要求 23所述的 TURN服务器, 其特征在于, 所述 TURN服务器还 包括绑定单元;

所述资源分配单元, 还用于在预先创建的配置信息对象中记录为所述配置 信息对象分配的资源标识、 以及所述转发地址和资源端口; 并将所述资源标识 传输至所述发送单元;

所述发送单元, 还用于从所述资源分配单元接收所述资源标识, 并向所述 通信终端发送所述资源标识; 从所述绑定单元接收所述绑定单元分配的通道号, 并将所述通道号发送给所述通信终端;

所述接收单元, 还用于接收所述通信终端发送的通道绑定请求, 所述通道 绑定请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并将所述 通道绑定请求传输至所述绑定单元;

所述绑定单元, 用于从所述接收单元接收所述通道绑定请求, 获取记录所 述资源标识的配置信息对象; 在所述配置信息对象中记录为所述 UDP通道分配 的通道号和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP地址和端 口号; 并将所述通道号传输至所述发送单元;

所述发送单元用于根据所述复用标识获取所述转发地址和所述资源端口、 以及所述远端节点的 IP地址和端口号, 具体包括: 所述发送单元用于获取记录 所述通道号的配置信息对象, 并获取所述配置信息对象中记录的所述转发地址 和资源端口、 以及所述 UDP通道信息中的所述远端节点的 IP地址和端口号。

25.如权利要求 21所述的 TURN服务器, 其特征在于, 所述 TURN服务器还 包括连接建立单元;

所述接收单元接收的所述资源分配请求包括资源协议类型, 所述资源协议 类型指定所述 TURN服务器与所述远端节点之间的通信协议为 websocke t ; 所述 接收单元接收的所述 TURN数据包包括的复用标识具体为所述连接建立单元生成 的连接标识;

所述连接建立单元, 用于生成连接标识, 并记录所述连接标识与所述第一 webs ocke t连接的对应关系、以及所述连接标识与第二 webs ocke t连接的对应关 系, 所述第二 webs ocke t连接是所述 TURN服务器利用所述转发地址和资源端口 预先建立的与所述远端节点之间的 webs ocke t连接, 并且所述 TURN服务器与所 述远端节点之间交互的消息是通过所述第二 webs ocke t 连接进行传输的; 并将 所述连接标识传输至所述发送单元;

所述发送单元, 还用于从所述连接建立单元接收所述连接标识, 并将所述 连接标识发送给所述通信终端;

所述发送单元用于通过所述复用标识所标识的通信通道将所述通信数据发 送给所述远端节点, 具体包括: 所述发送单元用于通过所述连接标识所对应的 所述第二 web s ocke t连接将所述 TURN数据包发送给所述远端节点。

26. —种通信终端, 其特征在于, 所述通信终端位于局域网中, 公网中的 转发网络地址转换穿越 TURN服务器和所述通信终端之间交互的消息是通过预先 建立的第一网络套接字 webs ocke t 连接进行传输的, 所述通信终端包括: 发送 单元和 TURN数据包生成单元;

所述发送单元,用于向所述 TURN服务器发送资源分配请求,以使得所述 TURN 服务器为所述通信终端分配转发地址和资源端口, 所述转发地址和资源端口为 所述 TURN服务器自身的 IP地址和端口;

所述 TURN数据包生成单元, 用于生成 TURN数据包, 所述 TURN数据包包括 通信数据和复用标识, 所述复用标识用于标识所述转发地址和资源端口与所述 通信数据对应的远端节点之间的通信通道; 并将所述 TURN数据包传输至所述发 送单元;

所述发送单元, 还用于从所述 TURN数据包生成单元接收所述 TURN数据包, 并向所述 TURN服务器发送所述 TURN数据包, 以使得所述 TURN服务器通过所述 复用标识所标识的通信通道将所述通信数据发送给所述远端节点。

27.如权利要求 26所述的通信终端, 其特征在于,

所述发送单元发送的所述资源分配请求包括资源协议类型, 所述资源协议 类型指定所述 TURN服务器与所述远端节点之间的通信协议为 TCP;

所述 TURN数据包生成单元生成的所述 TURN数据包包括的复用标识具体用 于标识所述 TURN服务器利用所述转发地址和资源端口建立的与所述远端节点之 间的 TCP连接, 以使得所述 TURN服务器通过所述复用标识所标识的 TCP连接将 所述通信数据发送给所述远端节点。

28.如权利要求 26所述的通信终端, 其特征在于,

所述发送单元发送的所述资源分配请求包括资源协议类型, 所述资源协议 类型指定所述 TURN服务器与所述远端节点之间的通信协议为 UDP;

所述 TURN数据包生成单元生成的所述 TURN数据包包括的复用标识具体用 于标识所述转发地址和资源端口与所述远端节点之间的 UDP通道, 以使得: 所 述 TURN服务器根据所述复用标识获取所述转发地址和资源端口、 以及所述远端 节点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包中并将所述 UDP数 据包发送给所述远端节点, 所述 UDP数据包的源 IP地址和源端口号为所述转发 地址和资源端口, 所述 UDP数据包的目的 I P地址和目的端口号为所述远端节点 的 IP地址和端口号。

29.如权利要求 28 所述的通信终端, 其特征在于, 所述通信终端还包括第 一接收单元;

所述第一接收单元, 还用于接收所述 TURN服务器在预先创建的配置信息对 象中记录为所述配置信息对象分配的资源标识、 以及所述转发地址和资源端口 后发送的所述资源标识, 并将所述资源标识传输至所述发送单元;

所述发送单元, 还用于向所述 TURN服务器发送通道绑定请求, 所述通道绑 定请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 以使得: 所 述 TURN服务器在记录了所述资源标识的配置信息对象中记录为所述 UDP通道分 配的通道号和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP地址和 端口号; 并接收所述 TURN服务器发送的所述通道号;

所述 TURN数据包生成单元生成的所述 TURN数据包包括的复用标识具体为 所述通道号, 以使得: 所述 TURN服务器从记录了所述通道号的配置信息对象中 获取记录的所述转发地址和资源端口、 以及所述 UDP通道信息中的所述远端节 点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包中并将所述 UDP数据 包发送给所述远端节点, 所述 UDP数据包的源 IP地址和源端口号为所述转发地 址和资源端口, 所述 UDP数据包的目的 IP地址和目的端口号为所述远端节点的 IP地址和端口号。

30.如权利要求 26 所述的通信终端, 其特征在于, 所述通信终端还包括第 二接收单元;

所述发送单元发送的所述资源分配请求包括资源协议类型, 所述资源协议 类型指定所述 TURN服务器与所述远端节点之间的通信协议为 websocke t ;

所述第二接收单元, 用于接收所述 TURN服务器发送的连接标识, 并用于将 所述连接标识传输至所述 TURN数据包生成单元, 其中, 所述 TURN服务器记录 了所述连接标识与所述第一 webs ocke t 连接的对应关系、 以及所述连接标识与 所述第二 websocke t连接的对应关系, 所述第二 websocke t连接是所述 TUR 服 务器利用所述转发地址和资源端口预先建立的与所述远端节点之间的 websocke t连接, 并且所述 TURN服务器与所述远端节点之间交互的消息是通过 所述第二 websocke t连接进行传输的;

所述 TURN数据包生成单元,还用于从所述第二接收单元接收所述连接标识; 所述 TURN数据包生成单元生成的所述 TURN数据包包括的复用标识具体为所述 连接标识, 以使得所述 TURN 服务器通过所述连接标识所对应的所述第二 websocke t连接将所述 TUR 数据包发送给所述远端节点。

31. 一种通信系统, 其特征在于, 所述通信系统包括公网中的转发网络地 址转换穿越 TUR 服务器和局域网中的通信终端, 所述 TURN服务器和所述通信 终端之间交互的消息是通过预先建立的第一网络套接字 webs ocke t 连接进行传 输的;

所述 TURN服务器, 用于接收所述通信终端发送的资源分配请求, 并为所述 通信终端分配转发地址和资源端口, 所述转发地址和资源端口为所述 TURN服务 器自身的 IP地址和端口; 还用于接收所述通信终端发送的 TURN数据包, 所述 TUR 数据包包括通信数据和复用标识, 所述复用标识用于标识所述转发地址和 资源端口与所述通信数据对应的远端节点之间的通信通道; 还用于通过所述复 用标识所标识的通信通道将所述通信数据发送给所述远端节点;

所述通信终端, 用于向所述 TURN服务器发送所述资源分配请求, 并用于向 所述 TURN服务器发送所述 TURN数据包。

32.如权利要求 31所述的通信系统, 其特征在于,

所述通信终端发送的所述资源分配请求包括资源协议类型, 所述资源协议 类型指定所述 TURN服务器与所述远端节点之间的通信协议为 TCP;

所述 TURN服务器, 还用于利用所述转发地址和资源端口、 以及所述远端节 点的 IP地址和端口号建立与所述远端节点之间的 TCP连接;

所述通信终端发送的所述 TURN数据包包括的复用标识具体用于标识所述 TCP连接;

所述 TURN服务器, 用于通过所述复用标识所标识的通信通道将所述通信数 据发送给所述远端节点, 具体包括: 所述 TURN服务器, 用于通过所述复用标识 所标识的 TCP连接将所述通信数据发送给所述远端节点。

33.如权利要求 31所述的通信系统, 其特征在于,

所述通信终端发送的所述资源分配请求包括资源协议类型, 所述资源协议 类型指定所述 TURN服务器与所述远端节点之间的通信协议为 UDP;

所述通信终端发送的所述 TURN数据包包括的复用标识具体用于标识所述转 发地址和资源端口与所述远端节点之间的 UDP通道; 所述 TURN服务器, 用于通过所述复用标识所标识的通信通道将所述通信数 据发送给所述远端节点, 具体包括: 所述 TURN服务器, 用于根据所述复用标识 获取所述转发地址和资源端口、 以及所述远端节点的 IP地址和端口号, 将所述 通信数据封装到 UDP数据包中并将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP地址和源端口号为所述转发地址和资源端口, 所述 UDP数据 包的目的 IP地址和目的端口号为所述远端节点的 IP地址和端口号。

34. 如权利要求 33所述的通信系统, 其特征在于,

所述 TURN服务器, 还用于在预先创建的配置信息对象中记录为所述配置信 息对象分配的资源标识、 以及所述转发地址和资源端口; 向所述通信终端发送 所述资源标识; 接收所述通信终端发送的通道绑定请求, 所述通道绑定请求包 括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并获取记录所述资源 标识的配置信息对象; 在所述配置信息对象中记录为所述 UDP通道分配的通道 号和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP地址和端口号; 并将所述通道号发送给所述通信终端;

所述通信终端发送的所述 TURN数据包包括的复用标识具体为所述通道号; 所述 TURN服务器, 用于根据所述复用标识获取所述转发地址和所述资源端 口、 以及所述远端节点的 IP地址和端口号, 具体包括: 所述 TURN服务器获取 记录所述通道号的配置信息对象, 并获取所述配置信息对象中记录的所述转发 地址和资源端口、以及所述 UDP通道信息中的所述远端节点的 IP地址和端口号; 所述通信终端, 还用于接收所述 TURN服务器发送的所述资源标识, 并用于 向所述 TURN服务器发送所述通道绑定请求。

35.如权利要求 31所述的通信系统, 其特征在于,

所述通信终端发送的所述资源分配请求包括资源协议类型, 所述资源协议 类型指定所述 TURN服务器与所述远端节点之间的通信协议为 websocket ;

所述 TURN服务器, 还用于生成连接标识, 并记录所述连接标识与所述第一 websocket连接的对应关系、以及所述连接标识与第二 websocket连接的对应关 系, 并将所述连接标识发送给所述通信终端; 所述第二 websocket 连接是所述 TUR 服务器利用所述转发地址和资源端口预先建立的与所述远端节点之间的 websocket连接, 并且所述 TURN服务器与所述远端节点之间交互的消息是通过 所述第二 websocket连接进行传输的;

所述通信终端发送的所述 TURN数据包包括的复用标识具体为所述连接标 识;

所述 TURN服务器, 用于通过所述复用标识所标识的通信通道将所述通信数 据发送给所述远端节点, 具体包括: 所述 TURN服务器, 用于通过所述连接标识 所对应的所述第二 websocket连接将所述 TURN数据包发送给所述远端节点。

Description:
一种实现私网穿越的方法、 装置和系统 技术领域

本发明实施例涉及通信领域, 并且更具体地, 涉及一种实现私网穿越的 方法、 装置和系统。

背景技术

随着网络技术的迅速发展, 电信网逐步向移动网络和固定网络互相融合 的方向发展, 使得各种电信业务均希望承载于 IP (互联网协议) 网络上。 但 是由于 IP网络中的 IP地址的严重缺乏, 使得无法每一个终端都分配一个公 网地址。 为此, 需要在 IP网络上实现相应的私网穿越功能, 使得利用较少的 公网 IP地址支持大量的局域网中的机器接入 IP网络。

TURN ( Traversa l Us ing Re lay NAT, 转发 NAT穿越)技术是一种实现私 网穿越的技术, 其中, NAT的全称为 Network Addres s Trans la t i on (网各地 址转换)。 在现有的 TURN技术中, 局域网中的通信终端通过 TCP协议或 UDP 协议向位于公网的 TURN服务器发送用于实现与远端节点通信的信 和通信数 据, 如: 通信终端通过 TCP协议(Transmi s s ion Cont rol Protocol , 传输控 制协议)或 UDP协议( User Da ta Protocol , 用户数据报协议) 向 TURN服务 器发送资源分配请求 Al loca te reques t 以请求该 TURN服务器分配用于与远 端节点进行通信的转发地址、 资源端口等通信资源, 并通过 TCP或 UDP协议 向该 TURN服务器发送用于与远端节点通信的数据包 并由该 TURN服务器利 用该转发地址和资源端口将该数据包转发给该 远端节点。 其中, 通信终端向 TUR 服务器的不同端口发送用于实现与不同的远端 节点通信的信令和通信数 据, 以通过 TURN服务器的不同端口实现与不同的远端节点 间的通信。

通常, 在局域网和公网之间还会部署防火墙或代理服 务器, 以使得局域 网免受非法用户的侵入。在酒店、机场、监狱 等环境下往往会部署仅开放 HTTP 端口 (如 HTTP默认端口 80/433端口)并且仅允许符合 HTTP格式的数据包通 过的防火墙, 则上述用于实现与远端节点通信的消息和通信 数据会被防火墙 或代理服务器所阻止, 从而导致无法实现局域网内的通信终端和远端 节点之 间的通信。

发明内容

本发明实施例提供一种实现私网穿越的方法、 装置和系统, 用于解决现 有技术中由于部署仅开放 HTTP端口并且仅允许符合 HTTP格式的数据包通过 的防火墙所导致的无法实现局域网内的通信终 端和远端节点之间的通信的问 题。

另外, 由于此类防火墙对端口的限制, 局域网内的通信终端无法通过向 TUR 服务器的不同端口发送用于实现与不同的远端 节点通信的信令和通信数 据以实现和不同的远端节点的通信。 本发明实施例提供的一种实现私网穿越 的方法、 装置和系统, 进一步用于解决由于此类防火墙对端口的限制 所导致 的无法实现局域网内的通信终端同时与多个远 端节点通信的问题。

第一方面, 提供了一种实现私网穿越的方法, 公网中的转发网络地址转 换穿越 TURN服务器和局域网中的通信终端之间交互的 息是通过预先建立的 第一网络套接字 webs ocke t连接进行传输的, 所述方法包括:

所述 TURN服务器接收所述通信终端发送的资源分配 求, 并为所述通信 终端分配转发地址和资源端口, 所述转发地址和资源端口为所述 TURN服务器 自身的 IP地址和端口;

所述 TURN服务器接收所述通信终端发送的 TURN数据包, 所述 TURN数据 包包括通信数据和复用标识, 所述复用标识用于标识所述转发地址和资源端 口与所述通信数据对应的远端节点之间的通信 通道;

所述 TURN服务器通过所述复用标识所标识的通信通 将所述通信数据发 送给所述远端节点。

在第一方面的第一种可能的实现方式中:

所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议为 TCP;

所述 TURN服务器接收所述通信终端发送的 TURN数据包之前, 还包括: 所述 TURN服务器利用所述转发地址和资源端口建立 所述远端节点之间的 TCP连接;

所述 TURN数据包包括的复用标识具体用于标识所述 TCP连接;

所述 TURN服务器通过所述复用标识所标识的通信通 将所述通信数据发 送给所述远端节点, 具体包括: 所述 TURN服务器通过所述复用标识所标识的

TCP连接将所述通信数据发送给所述远端节点 。

结合第一方面的第一种可能的实现方式, 在第二种可能的实现方式中: 所述为所述通信终端分配转发地址和资源端口 之后, 以及所述利用所述 转发地址和资源端口建立与所述远端节点之间 的 TCP连接之前, 还包括: 在预先创建的配置信息对象中记录为所述配置 信息对象分配的资源标 识、 以及所述转发地址和资源端口, 并向所述通信终端发送所述资源标识; 接收所述通信终端发送的许可创建请求, 所述许可创建请求包括所述资 源标识、 以及所述远端节点的 IP地址和端口号; 获取记录所述资源标识的配 置信息对象, 在所述配置信息对象中记录许可信息, 所述许可信息包括所述 远端节点的 IP地址和端口号;

接收所述远端节点发送的用于建立 TCP连接的 TCP连接请求, 所述 TCP 连接请求的目的 IP地址和目的端口为所述转发地址和资源端口 所述 TCP连 接请求的源 I P地址和源端口为所述远端节点的 I P地址和端口号;

获取记录了所述转发地址和资源端口的配置信 息对象, 判断所述配置信 息对象的许可信息是否包括所述远端节点的 IP地址和端口号, 如果是则确定 所述通信终端许可所述远端节点利用所述转发 地址和资源端口与所述通信终 端通信。

结合第一方面的第一种可能的实现方式, 在第三种可能的实现方式中: 所述为所述通信终端分配转发地址和资源端口 之后, 以及所述利用所述 转发地址和资源端口建立与所述远端节点之间 的 TCP连接之前, 还包括: 在 预先创建的配置信息对象中记录为所述配置信 息对象分配的资源标识、 以及 所述转发地址和资源端口; 向所述通信终端发送所述资源标识; 接收所述通 信终端发送的连接请求, 所述连接请求包括所述资源标识、 以及所述远端节 点的 IP地址和端口号, 获取记录所述资源标识的配置信息对象, 从所述配置 信息对象中读取所述转发地址和资源端口;

所述利用所述转发地址和资源端口建立与所述 远端节点之间的 TCP连接, 具体包括: 利用读取的所述转发地址和资源端口、 以及所述连接请求中的所 述远端节点的 IP地址和端口号建立所述 TCP连接。

结合第一方面的第二种或第三种可能的实现方 式, 在第四种可能的实现 方式中:

所述利用所述转发地址和资源端口建立与所述 远端节点之间的 TCP连接 之后, 还包括: 在所述配置信息对象中记录为所述 TCP连接分配的连接标识 与所述 TCP连接的对应关系, 并将所述连接标识发送给所述通信终端; 所述 TUR 数据包包括的复用标识具体为所述连接标识; 所述通过所述复用标识所 标识的 TCP连接将所述通信数据发送给所述远端节点, 具体包括: 获取记录 所述连接标识的配置信息对象, 根据所述配置信息对象中记录的所述连接标 识与所述 TCP连接的对应关系确定所述 TCP连接, 并通过 TCP连接将所述通 信数据发送给所述远端节点; 或者,

在所述配置信息对象中记录所述资源标识与所 述 TCP连接的对应关系; 所述 TURN数据包包括的复用标识具体为所述资源标 ; 所述通过所述复用标 识所标识的 TCP连接将所述通信数据发送给所述远端节点, 具体包括: 获取 记录所述资源标识的配置信息对象, 根据所述配置信息对象中记录的所述资 源标识与所述 TCP连接的对应关系确定所述 TCP连接, 并通过 TCP连接将所 述通信数据发送给所述远端节点。

结合第一方面的第一种至第四种任一可能的实 现方式, 在第五种可能的 实现方式中: 所述建立与所述远端节点之间的 TCP连接之后, 还包括: 接收 所述远端节点通过所述 TCP连接发送的通信数据,将所述通信数据封装 在 TURN 数据包中发送给所述通信终端, 所述 TURN数据包还包括所述复用标识。

在第一方面的第六种可能的实现方式中:

所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议为 UDP;

所述 TURN数据包包括的复用标识具体用于标识所述 发地址和资源端口 与所述远端节点之间的 UDP通道;

所述 TURN服务器通过所述复用标识所标识的通信通 将所述通信数据发 送给所述远端节点, 具体包括: 所述 TURN服务器根据所述复用标识获取所述 转发地址和资源端口、 以及所述远端节点的 IP地址和端口号, 将所述通信数 据封装到 UDP数据包中并将所述 UDP数据包发送给所述远端节点, 所述 UDP 数据包的源 IP地址和源端口号为所述转发地址和资源端口 所述 UDP数据包 的目的 IP地址和目的端口号为所述远端节点的 IP地址和端口号。

结合第一方面的第六种可能的实现方式, 在第七种可能的实现方式中: 所述为所述通信终端分配转发地址和资源端口 之后, 以及接收所述通信 终端发送的 TURN数据包之前, 还包括: 在预先创建的配置信息对象中记录为 所述配置信息对象分配的资源标识、 以及所述转发地址和资源端口; 向所述 通信终端发送所述资源标识; 接收所述通信终端发送的通道绑定请求, 所述 通道绑定请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并 获取记录所述资源标识的配置信息对象; 在所述配置信息对象中记录为所述 UDP通道分配的通道号和 UDP通道信息,所述 UDP通道信息包括所述远端节点 的 IP地址和端口号; 并将所述通道号发送给所述通信终端;

所述 TURN数据包包括的复用标识具体为所述通道号

所述 TURN服务器根据所述复用标识获取所述转发地 和所述资源端口、 以及所述远端节点的 IP地址和端口号, 具体包括: 所述 TURN服务器获取记 录所述通道号的配置信息对象, 并获取所述配置信息对象中记录的所述转发 地址和资源端口、 以及所述 UDP通道信息中的所述远端节点的 IP地址和端口 号。

结合第一方面的第六种可能的实现方式, 在第八种可能的实现方式中: 所述为所述通信终端分配转发地址和资源端口 之后, 以及接收所述通信 终端发送的 TURN数据包之前, 还包括: 在预先创建的配置信息对象中记录为 所述配置信息对象分配的资源标识、 以及所述转发地址和资源端口; 向所述 通信终端发送所述资源标识; 接收所述通信终端发送的通道绑定请求, 所述 通道绑定请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号; 获 取记录所述资源标识的配置信息对象; 在所述配置信息对象中记录 UDP通道 信息, 所述 UDP通道信息包括所述远端节点的 I P地址和端口号;

所述 TURN数据包包括的复用标识具体为所述资源标 ;

所述 TURN服务器根据所述复用标识获取所述所述转 地址和所述资源端 口、 以及所述远端节点的 IP地址和端口号, 具体包括: 获取记录所述资源标 识的配置信息对象, 并获取所述配置信息对象中记录的所述转发地 址和资源 端口、 以及所述 UDP通道信息中的所述远端节点的 I P地址和端口号。

结合第一方面的第六种可能的实现方式, 在第九种可能的实现方式中: 所述为所述通信终端分配转发地址和资源端口 之后, 以及所述 TURN服务 器接收所述通信终端发送的 TURN数据包之前, 还包括: 在预先创建的配置信 息对象中记录为所述配置信息对象分配的资源 标识、 以及所述转发地址和资 源端口; 向所述通信终端发送所述资源标识;

所述 TURN数据包包括的复用标识具体包括所述资源 识、 以及所述远端 节点的 IP地址和端口号;

根据所述复用标识获取所述转发地址和资源端 口、 以及所述远端节点的 IP地址和端口号, 具体包括: 获取记录所述资源标识的配置信息对象, 并获 取所述配置信息对象中记录的转发地址和资源 端口, 并获取所述 TURN数据包 中的所述远端节点的 IP地址和端口号。

结合第一方面的第七种至第九种任一可能的实 现方式, 在第十种可能的 实现方式中: 所述向所述通信终端发送所述资源标识之后, 还包括:

所述 TURN服务器接收所述通信终端发送的许可创建 求, 所述许可创建 请求包括所述资源标识、 以及所述远端节点的 I P地址和端口号;

所述 TURN服务器获取记录所述资源标识的配置信息 象, 在所述配置信 息对象中记录许可信息,所述许可信息包括所 述远端节点的 IP地址和端口号; 所述 TURN服务器接收所述远端节点发送的封装了通 数据的 UDP数据 包,所述 UDP数据包的目的 IP地址和目的端口号为所述转发地址和资源端 , 所述 UDP数据包的源 IP地址和源端口号为所述远端节点的 IP地址和端口号; 所述 TURN服务器获取记录了所述转发地址和资源端 的配置信息对象, 判断所述配置信息对象的许可信息是否包括所 述远端节点的 IP 地址和端口 号, 如果是则确定所述通信终端许可所述远端节点 利用所述转发地址和资源 端口与所述通信终端通信, 并将所述通信数据封装在 TURN数据包中发送给所 述通信终端, 所述 TURN数据包还包括所述复用标识。

在第一方面的第十一种可能的实现方式中:

所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议为 websocket ;

所述 TURN服务器接收所述通信终端发送的 TURN数据包之前, 还包括: 生成连接标识, 并记录所述连接标识与所述第一 websocket连接的对应关系、 以及所述连接标识与第二 websocket 连接的对应关系, 并将所述连接标识发 送给所述通信终端, 所述第二 websocke t连接是所述 TURN服务器利用所述转 发地址和资源端口预先建立的与所述远端节点 之间的 websocket 连接, 并且 所述 TURN服务器与所述远端节点之间交互的消息是 过所述第二 websocket 连接进行传输的;

所述 TURN数据包包括的复用标识具体为所述连接标 ; 所述 TURN服务器通过所述复用标识所标识的通信通 将所述通信数据发 送给所述远端节点, 具体包括: 所述 TURN服务器通过所述连接标识所对应的 所述第二 websocke t连接将所述 TURN数据包发送给所述远端节点。

结合第一方面的第十一种可能的实现方式, 在第十二种可能的实现方式 中: 所述生成连接标识, 并记录所述连接标识与所述第一 websocke t 连接的 对应关系、 以及所述连接标识与第二 websocke t 连接的对应关系之后, 还包 括:

向所述远端节点发送所述连接标识;

接收所述远端节点发送的 TURN数据包并将所述 TURN数据包发送给所述 通信终端, 所述 TURN数据包包括通信数据和所述连接标识。

结合第一方面的第十一种或第十二种可能的实 现方式, 在第十三种可能 的实现方式中:

所述为所述通信终端分配转发地址和资源端口 之后, 以及所述生成连接 标识并记录所述连接标识与所述第一 websocke t 连接的对应关系、 以及所述 连接标识与第二 webs ocke t 连接的对应关系之前, 还包括: 在预先创建的配 置信息对象中记录为所述配置信息对象分配的 资源标识、 以及所述转发地址 和资源端口; 向所述通信终端发送所述资源标识; 接收所述通信终端发送的 连接请求, 所述连接请求包括所述资源标识、 以及所述远端节点的 IP地址和 端口号, 并获取记录所述资源标识的配置信息对象, 根据所述配置信息对象 中记录的所述转发地址和资源端口、 以及所述连接请求中的远端节点的 IP地 址和端口号确定所述第二 websocke t连接;

所述记录所述连接标识与所述第一 webs ocke t 连接的对应关系、 以及所 述连接标识与第二 websocke t 连接的对应关系, 具体包括: 在所述配置信息 对象中记录所述连接标识与所述第一 websocke t 连接的对应关系、 以及所述 连接标识与所述第二 websocke t连接的对应关系;

所述 TURN 良务器通过所述连接标识所对应的所述第二 websocke t连接将 所述 TURN数据包发送给所述远端节点, 具体包括: 获取记录所述连接标识的 配置信息对象, 根据所述配置信息对象中记录的所述连接标识 与所述第二 websocke t 连接的对应关系确定所述第二 websocke t 连接, 并通过所述第二 websocket连接将所述 TUR 数据包发送给所述远端节点。

结合第一方面的第十一种或第十二种可能的实 现方式, 在第十四种可能 的实现方式中:

所述为所述通信终端分配转发地址和资源端口 之后, 以及所述生成连接 标识并记录所述连接标识与所述第一 websocket 连接的对应关系、 以及所述 连接标识与第二 websocket 连接的对应关系之前, 还包括: 在预先创建的配 置信息对象中记录为所述配置信息对象分配的 资源标识、 所述通信终端的 IP 地址和端口号、 以及所述转发地址和资源端口; 向所述通信终端发送所述资 源标识; 接收所述通信终端发送的许可创建请求, 所述许可创建请求包括所 述资源标识、 以及所述远端节点的 IP地址和端口号; 获取记录所述资源标识 的配置信息对象, 在所述配置信息对象中记录许可信息, 所述许可信息包括 所述远端节点的 I P地址和端口号; 接收所述远端节点发送的连接请求, 所述 连接请求包括所述通信终端的 IP地址和端口号, 获取记录了所述通信终端的 IP地址和端口号的配置信息对象, 判断所述配置信息对象中的许可信息是否 包括所述远端节点的 IP地址和端口号, 如果是则确定所述通信终端许可所述 远端节点利用所述转发地址和资源端口与所述 通信终端通信;

所述记录所述连接标识与所述第一 websocket 连接的对应关系、 以及所 述连接标识与第二 websocket 连接的对应关系, 具体包括: 在所述配置信息 对象中记录所述连接标识与所述第一 websocket 连接的对应关系、 以及所述 连接标识与所述第二 websocket连接的对应关系;

所述 TURN 良务器通过所述连接标识所对应的所述第二 websocket连接将 所述 TURN数据包发送给所述远端节点, 具体包括: 获取记录所述连接标识的 配置信息对象, 根据所述配置信息对象中记录的所述连接标识 与所述第二 webs ocke t 连接的对应关系确定所述第二 webs ocke t 连接, 并通过所述第二 webs ocke t连接将所述 TUR 数据包发送给所述远端节点。 第二方面, 提供了一种实现私网穿越的方法, 公网中的转发网络地址转 换穿越 TURN服务器和局域网中的通信终端之间交互的 息是通过预先建立的 第一网络套接字 webs ocke t连接进行传输的, 所述方法包括:

所述通信终端向所述 TURN服务器发送资源分配请求, 以使得所述 TURN 服务器为所述通信终端分配转发地址和资源端 口, 所述转发地址和资源端口 为所述 TURN服务器自身的 IP地址和端口;

所述通信终端向所述 TURN服务器发送 TURN数据包, 所述 TURN数据包包 括通信数据和复用标识, 所述复用标识用于标识所述转发地址和资源端 口与 所述通信数据对应的远端节点之间的通信通道 , 以使得所述 TURN服务器通过 所述复用标识所标识的通信通道将所述通信数 据发送给所述远端节点。

在第二方面的第一种可能的实现方式中:

所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议为 TCP;

所述 TURN数据包包括的复用标识具体用于标识所述 TURN服务器利用所 述转发地址和资源端口建立的与所述远端节点 之间的 TCP连接, 以使得所述 TUR 服务器通过所述复用标识所标识的 TCP连接将所述通信数据发送给所述 远端节点。

在第二方面的第二种可能的实现方式中:

所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议为 UDP;

所述 TURN数据包包括的复用标识具体用于标识所述 发地址和资源端口 与所述远端节点之间的 UDP通道, 以使得: 所述 TURN服务器根据所述复用标 识获取所述转发地址和资源端口、 以及所述远端节点的 IP地址和端口号, 将 所述通信数据封装到 UDP数据包中并将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP地址和源端口号为所述转发地址和资源端口 所述 UDP 数据包的目的 IP地址和目的端口号为所述远端节点的 IP地址和端口号。

结合第二方面的第二种可能的实现方式, 在第三种可能的实现方式中, 所述通信终端向所述 TURN服务器发送 TURN数据包之前, 还包括: 所述 通信终端接收所述 TURN服务器在预先创建的配置信息对象中记录 所述配置 信息对象分配的资源标识、 以及所述转发地址和资源端口后发送的所述资 源 标识; 向所述 TURN服务器发送通道绑定请求, 所述通道绑定请求包括所述资 源标识、 以及所述远端节点的 IP地址和端口号, 以使得: 所述 TURN服务器 在记录了所述资源标识的配置信息对象中记录 为所述 UDP通道分配的通道号 和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP地址和端口号; 并接收所述 TURN服务器发送的所述通道号;

所述 TURN数据包包括的复用标识具体为所述通道号 以使得: 所述 TURN 服务器从记录了所述通道号的配置信息对象中 获取记录的所述转发地址和资 源端口、 以及所述 UDP通道信息中的所述远端节点的 IP地址和端口号, 将所 述通信数据封装到 UDP数据包中并将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP地址和源端口号为所述转发地址和资源端口 所述 UDP 数据包的目的 IP地址和目的端口号为所述远端节点的 IP地址和端口号。

在第二方面的第四种可能的实现方式中:

所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议为 websocket ;

所述通信终端向所述 TURN服务器发送 TURN数据包之前, 还包括: 所述 通信终端接收所述 TURN服务器发送的连接标识, 其中, 所述 TURN服务器记 录了所述连接标识与所述第一 webs ocke t 连接的对应关系、 以及所述连接标 识与第二 websocke t连接的对应关系, 所述第二 websocke t连接是所述 TURN 服务器利用所述转发地址和资源端口预先建立 的与所述远端节点之间的 webs ocke t连接, 并且所述 TURN服务器与所述远端节点之间交互的消息是 过所述第二 websocke t连接进行传输的;

所述 TURN数据包包括的复用标识具体为所述连接标 ,以使得所述 TURN 服务器通过所述连接标识所对应的所述第二 web s ocke t连接将所述 TURN数据 包发送给所述远端节点。 第三方面, 提供了一种转发网络地址转换穿越 TURN服务器, 所述 TURN 服务器位于公网中, 和局域网中的通信终端之间交互的消息是通过 预先建立 的第一网络套接字 webs ocke t连接进行传输的, 所述 TURN服务器包括: 接收 单元、 资源分配单元和发送单元;

所述接收单元, 用于接收所述通信终端发送的资源分配请求, 并将所述 资源分配请求传输至所述资源分配单元;

所述资源分配单元, 用于从所述接收单元接收所述资源分配请求, 并为 所述通信终端分配转发地址和资源端口, 所述转发地址和资源端口为所述 TUR 服务器自身的 IP地址和端口;

所述接收单元, 还用于接收所述通信终端发送的 TURN数据包, 并将所述 TUR 数据包传输至所述发送单元,所述 TURN数据包包括通信数据和复用标识, 所述复用标识用于标识所述转发地址和资源端 口与所述通信数据对应的远端 节点之间的通信通道;

所述发送单元, 用于从所述接收单元接收所述 TURN数据包, 并通过所述 复用标识所标识的通信通道将所述通信数据发 送给所述远端节点。

在第三方面的第一种可能的实现方式中, 所述 TURN服务器还包括 TCP连 接建立单元;

所述接收单元接收的所述资源分配请求包括资 源协议类型, 所述资源协 议类型指定所述 TURN服务器与所述远端节点之间的通信协议为 TCP ;

TCP连接建立单元,用于利用所述转发地址和资 源端口建立与所述远端节 点之间的 TCP连接;

所述接收单元接收的所述 TURN数据包包括的复用标识, 具体用于标识所 述 TCP连接;

所述发送单元用于通过所述复用标识所标识的 通信通道将所述通信数据 发送给所述远端节点, 具体包括: 所述发送单元用于通过所述复用标识所标 识的 TCP连接将所述通信数据发送给所述远端节点。

在第三方面的第二种可能的实现方式中:

所述接收单元接收的所述资源分配请求包括资 源协议类型, 所述资源协 议类型指定所述 TURN服务器与所述远端节点之间的通信协议为 UDP;

所述接收单元接收的所述 TURN数据包包括的复用标识具体用于标识所述 转发地址和资源端口与所述远端节点之间的 UDP通道;

所述发送单元, 具体用于从所述接收单元接收所述 TURN数据包, 根据所 述复用标识获取所述转发地址和资源端口、 以及所述远端节点的 IP地址和端 口号, 将所述通信数据封装到 UDP数据包中并将所述 UDP数据包发送给所述 远端节点, 所述 UDP数据包的源 IP地址和源端口号为所述转发地址和资源端 口, 所述 UDP数据包的目的 IP地址和目的端口号为所述远端节点的 IP地址 和端口号。

结合第三方面的第二种可能的实现方式, 在第三种可能的实现方式中: 所述 TURN服务器还包括绑定单元;

所述资源分配单元, 还用于在预先创建的配置信息对象中记录为所 述配 置信息对象分配的资源标识、 以及所述转发地址和资源端口; 并将所述资源 标识传输至所述发送单元;

所述发送单元, 还用于从所述资源分配单元接收所述资源标识 , 并向所 述通信终端发送所述资源标识; 从所述绑定单元接收所述绑定单元分配的通 道号, 并将所述通道号发送给所述通信终端;

所述接收单元, 还用于接收所述通信终端发送的通道绑定请求 , 所述通 道绑定请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并将 所述通道绑定请求传输至所述绑定单元;

所述绑定单元, 用于从所述接收单元接收所述通道绑定请求, 获取记录 所述资源标识的配置信息对象; 在所述配置信息对象中记录为所述 UDP通道 分配的通道号和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP地 址和端口号; 并将所述通道号传输至所述发送单元;

所述发送单元用于根据所述复用标识获取所述 转发地址和所述资源端 口、 以及所述远端节点的 IP地址和端口号, 具体包括: 所述发送单元用于获 取记录所述通道号的配置信息对象, 并获取所述配置信息对象中记录的所述 转发地址和资源端口、 以及所述 UDP通道信息中的所述远端节点的 I P地址和 端口号。

在第三方面的第四种可能的实现方式中, 所述 TURN服务器还包括连接建 立单元;

所述接收单元接收的所述资源分配请求包括资 源协议类型, 所述资源协 议类型指定所述 TURN服务器与所述远端节点之间的通信协议为 websocke t ; 所述接收单元接收的所述 TURN数据包包括的复用标识具体为所述连接建 单 元生成的连接标识;

所述连接建立单元, 用于生成连接标识, 并记录所述连接标识与所述第 一 websocke t连接的对应关系、 以及所述连接标识与第二 websocke t连接的 对应关系, 所述第二 websocke t连接是所述 TURN服务器利用所述转发地址和 资源端口预先建立的与所述远端节点之间的 websocket连接, 并且所述 TURN 服务器与所述远端节点之间交互的消息是通过 所述第二 webs ocke t 连接进行 传输的; 并将所述连接标识传输至所述发送单元;

所述发送单元, 还用于从所述连接建立单元接收所述连接标识 , 并将所 述连接标识发送给所述通信终端;

所述发送单元用于通过所述复用标识所标识的 通信通道将所述通信数据 发送给所述远端节点, 具体包括: 所述发送单元用于通过所述连接标识所对 应的所述第二 webs ocke t连接将所述 TURN数据包发送给所述远端节点。 第四方面, 提供了一种通信终端, 所述通信终端位于局域网中, 公网中 的转发网络地址转换穿越 TUR 服务器和所述通信终端之间交互的消息是通过 预先建立的第一网络套接字 webs ocke t连接进行传输的, 所述通信终端包括: 发送单元和 TURN数据包生成单元;

所述发送单元, 用于向所述 TURN服务器发送资源分配请求, 以使得所述 TUR 服务器为所述通信终端分配转发地址和资源端 口, 所述转发地址和资源 端口为所述 TURN服务器自身的 IP地址和端口;

所述 TURN数据包生成单元, 用于生成 TURN数据包, 所述 TURN数据包包 括通信数据和复用标识, 所述复用标识用于标识所述转发地址和资源端 口与 所述通信数据对应的远端节点之间的通信通道 ; 并将所述 TURN数据包传输至 所述发送单元;

所述发送单元, 还用于从所述 TURN数据包生成单元接收所述 TURN数据 包, 并向所述 TURN服务器发送所述 TURN数据包, 以使得所述 TURN服务器通 过所述复用标识所标识的通信通道将所述通信 数据发送给所述远端节点。

在第四方面的第一种可能的实现方式中, 所述发送单元发送的所述资源 分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN服务器与所述 远端节点之间的通信协议为 TCP;

所述 TURN数据包生成单元生成的所述 TURN数据包包括的复用标识具体 用于标识所述 TURN服务器利用所述转发地址和资源端口建立 与所述远端节 点之间的 TCP连接, 以使得所述 TURN服务器通过所述复用标识所标识的 TCP 连接将所述通信数据发送给所述远端节点。

在第四方面的第二种可能的实现方式中, 所述发送单元发送的所述资源 分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN服务器与所述 远端节点之间的通信协议为 UDP;

所述 TURN数据包生成单元生成的所述 TURN数据包包括的复用标识具体 用于标识所述转发地址和资源端口与所述远端 节点之间的 UDP通道, 以使得: 所述 TURN服务器根据所述复用标识获取所述转发地 和资源端口、 以及所述 远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包中并将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP地址和源端口号为 所述转发地址和资源端口, 所述 UDP数据包的目的 IP地址和目的端口号为所 述远端节点的 I P地址和端口号。

结合第四方面的第二种可能的实现方式, 在第三种可能的实现方式中, 所述通信终端还包括第一接收单元;

所述第一接收单元, 还用于接收所述 TURN服务器在预先创建的配置信息 对象中记录为所述配置信息对象分配的资源标 识、 以及所述转发地址和资源 端口后发送的所述资源标识, 并将所述资源标识传输至所述发送单元;

所述发送单元, 还用于向所述 TURN服务器发送通道绑定请求, 所述通道 绑定请求包括所述资源标识、以及所述远端节 点的 IP地址和端口号,以使得: 所述 TURN服务器在记录了所述资源标识的配置信息 象中记录为所述 UDP通 道分配的通道号和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP 地址和端口号; 并接收所述 TURN服务器发送的所述通道号;

所述 TURN数据包生成单元生成的所述 TURN数据包包括的复用标识具体 为所述通道号, 以使得: 所述 TURN服务器从记录了所述通道号的配置信息对 象中获取记录的所述转发地址和资源端口、 以及所述 UDP通道信息中的所述 远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包中并将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP地址和源端口号为 所述转发地址和资源端口, 所述 UDP数据包的目的 IP地址和目的端口号为所 述远端节点的 I P地址和端口号。

在第四方面的第四种可能的实现方式中, 所述通信终端还包括第二接收 单元;

所述发送单元发送的所述资源分配请求包括资 源协议类型, 所述资源协 议类型指定所述 TURN服务器与所述远端节点之间的通信协议为 webs ocke t ; 所述第二接收单元, 用于接收所述 TURN服务器发送的连接标识, 并用于 将所述连接标识传输至所述 TURN数据包生成单元, 其中, 所述 TURN服务器 记录了所述连接标识与所述第一 webs ocke t 连接的对应关系、 以及所述连接 标识与所述第二 webs ocke t连接的对应关系, 所述第二 webs ocke t连接是所 述 TURN服务器利用所述转发地址和资源端口预先 立的与所述远端节点之间 的 webs ocke t连接, 并且所述 TURN服务器与所述远端节点之间交互的消息是 通过所述第二 webs ocke t连接进行传输的;

所述 TURN数据包生成单元, 还用于从所述第二接收单元接收所述连接标 识; 所述 TURN数据包生成单元生成的所述 TURN数据包包括的复用标识具体 为所述连接标识, 以使得所述 TURN服务器通过所述连接标识所对应的所述第 二 webs ocke t连接将所述 TUR 数据包发送给所述远端节点。 第五方面, 提供了一种通信系统, 所述通信系统包括公网中的转发网络 地址转换穿越 TURN服务器和局域网中的通信终端, 所述 TURN服务器和所述 通信终端之间交互的消息是通过预先建立的第 一网络套接字 webs ocke t 连接 进行传输的;

所述 TURN服务器, 用于接收所述通信终端发送的资源分配请求, 并为所 述通信终端分配转发地址和资源端口, 所述转发地址和资源端口为所述 TURN 服务器自身的 IP地址和端口; 还用于接收所述通信终端发送的 TURN数据包, 所述 TURN数据包包括通信数据和复用标识, 所述复用标识用于标识所述转发 地址和资源端口与所述通信数据对应的远端节 点之间的通信通道; 还用于通 过所述复用标识所标识的通信通道将所述通信 数据发送给所述远端节点; 所述通信终端, 用于向所述 TURN服务器发送所述资源分配请求, 并用于 向所述 TURN服务器发送所述 TURN数据包。

在第五方面的第一种可能的实现方式中, 所述通信终端发送的所述资源 分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN服务器与所述 远端节点之间的通信协议为 TCP;

所述 TURN服务器, 还用于利用所述转发地址和资源端口、 以及所述远端 节点的 IP地址和端口号建立与所述远端节点之间的 TCP连接;

所述通信终端发送的所述 TURN数据包包括的复用标识具体用于标识所述 TCP连接;

所述 TURN服务器, 用于通过所述复用标识所标识的通信通道将所 述通信 数据发送给所述远端节点, 具体包括: 所述 TURN服务器, 用于通过所述复用 标识所标识的 TCP连接将所述通信数据发送给所述远端节点。

在第五方面的第二种可能的实现方式中, 所述通信终端发送的所述资源 分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN服务器与所述 远端节点之间的通信协议为 UDP;

所述通信终端发送的所述 TURN数据包包括的复用标识具体用于标识所述 转发地址和资源端口与所述远端节点之间的 UDP通道;

所述 TURN服务器, 用于通过所述复用标识所标识的通信通道将所 述通信 数据发送给所述远端节点, 具体包括: 所述 TURN服务器, 用于根据所述复用 标识获取所述转发地址和资源端口、 以及所述远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包中并将所述 UDP数据包发送给所述远端节 点, 所述 UDP数据包的源 IP地址和源端口号为所述转发地址和资源端口 所 述 UDP数据包的目的 IP地址和目的端口号为所述远端节点的 IP地址和端口 号。

结合第五方面的第二种可能的实现方式, 在第三种可能的实现方式中: 所述 TURN服务器, 还用于在预先创建的配置信息对象中记录为所 述配置 信息对象分配的资源标识、 以及所述转发地址和资源端口; 向所述通信终端 发送所述资源标识; 接收所述通信终端发送的通道绑定请求, 所述通道绑定 请求包括所述资源标识、 以及所述远端节点的 I P地址和端口号, 并获取记录 所述资源标识的配置信息对象; 在所述配置信息对象中记录为所述 UDP通道 分配的通道号和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP地 址和端口号; 并将所述通道号发送给所述通信终端;

所述通信终端发送的所述 TURN数据包包括的复用标识具体为所述通道 号;

所述 TURN服务器, 用于根据所述复用标识获取所述转发地址和所 述资源 端口、 以及所述远端节点的 IP地址和端口号, 具体包括: 所述 TURN服务器 获取记录所述通道号的配置信息对象, 并获取所述配置信息对象中记录的所 述转发地址和资源端口、 以及所述 UDP通道信息中的所述远端节点的 I P地址 和端口号;

所述通信终端, 还用于接收所述 TURN服务器发送的所述资源标识, 并用 于向所述 TURN服务器发送所述通道绑定请求。

在第五方面的第四种可能的实现方式中,

所述通信终端发送的所述资源分配请求包括资 源协议类型, 所述资源协 议类型指定所述 TURN服务器与所述远端节点之间的通信协议为 webs ocke t ; 所述 TURN服务器, 还用于生成连接标识, 并记录所述连接标识与所述第 一 websocke t连接的对应关系、 以及所述连接标识与第二 websocke t连接的 对应关系, 并将所述连接标识发送给所述通信终端; 所述第二 webs ocke t 连 接是所述 TURN服务器利用所述转发地址和资源端口预先 立的与所述远端节 点之间的 websocke t连接, 并且所述 TURN服务器与所述远端节点之间交互的 消息是通过所述第二 websocke t连接进行传输的;

所述通信终端发送的所述 TURN数据包包括的复用标识具体为所述连接标 识;

所述 TURN服务器, 用于通过所述复用标识所标识的通信通道将所 述通信 数据发送给所述远端节点, 具体包括: 所述 TURN服务器, 用于通过所述连接 标识所对应的所述第二 webs ocke t连接将所述 TUR 数据包发送给所述远端节 点。 根据本发明实施例, 由于所述通信终端与所述 TURN服务器之间交互的消 息是通过利用 TURN服务器的 HTTP端口建立的 webs ocke t连接进行传输的, 因此, 该通信终端向 TURN服务器发送的消息(如上述资源分配请求 TURN数 据包) 均可以通过仅开放 HTTP端口并且仅允许符合 HTTP格式的数据包通过 的防火墙, 从而解决了现有的 TURN技术中由于此类防火墙的上述限制所导致 的无法实现局域网内的通信终端和远端节点之 间的通信的问题。

进一步地, 由于通信终端向 TURN服务器发送的包括通信数据的 TURN数 据包中还携带了用于标识所述转发地址和资源 端口与所述通信数据对应的远 端节点之间的通信通道的复用标识, 以使得该 TURN服务器可以通过所述复用 标识所标识的通信通道将所述通信数据发送给 所述远端节点, 因此, 可以通 过利用该 HTTP端口建立的 webs ocke t连接发送与多个远端节点通信的通信数 据, 从而解决了由于此类防火墙对端口的限制所导 致的无法实现局域网内的 通信终端同时与多个远端节点通信的问题。 附图说明

为了更清楚地说明本发明实施例的技术方案, 下面将对实施例或现有技 术描述中所需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图 仅仅是本发明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造 性劳动的前提下, 还可以根据这些附图获得其他的附图。

图 1是本发明实施例的实施环境的结构示意图;

图 2是本发明实施例 1提供的方法流程示意图;

图 3-1至 3-3是本发明实施例 1提供的实施方式 1的方法流程示意图; 图 3-4是本发明实施例 1提供的实施方式 1的 TURN数据包格式示例; 图 4-1、 4-2是本发明实施例 1提供的实施方式 2的第一种可选实现方式 的方法流程示意图;

图 4-3是本发明实施例 1提供的实施方式 2的 TURN数据包格式示例; 图 4-4、 4-5是本发明实施例 1提供的实施方式 2的第二种可选实现方式 的方法流程示意图;

图 5-1至 5-3是本发明实施例 1提供的实施方式 3的方法流程示意图; 图 6-1至 6-4是本发明实施例 2提供的 TURN服务器的装置结构示意图; 图 7-1至 7-4是本发明实施例 3提供的通信终端的装置结构示意图; 图 8是本发明实施例 4提供的 TURN服务器的另一种装置结构示意图; 图 9是本发明实施例 5提供的通信终端的另一种装置结构示意图; 图 10-1、 10-2是本发明实施例 6提供的系统结构示意图。

具体实施方式

下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行 清楚、 完整地描述, 显然, 所描述的实施例是本发明一部分实施例, 而不是 全部的实施例。 基于本发明中的实施例, 本领域普通技术人员在没有作出创 造性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。

图 1 为本发明实施例所涉及的一种实施环境的结构 示意图。 该实施环境 包括 TURN服务器 110、 通信终端 120、 远端节点(如图所示的远端节点 1 30-1 和远端节点 1 30-2 ) 。

其中, TURN服务器 110位于公网, 通信终端 120位于局域网, 远端节点 可以位于公网或另一局域网。

该实施环境还包括在局域网和公网之间部署的 NAT网关和防火墙 140。所 述 AT 网关和所述防火墙, 可以部署在同一个物理设备上, 也可以部署在不 同的物理设备上。 其中, 所述防火墙, 可以是仅开放 HTTP端口并且仅允许符 合 HTTP格式的数据包通过的防火墙。 需要说明的是, 在具体部署时, 所述防 火墙也可以替换为代理服务器, 其中, 所述代理服务器, 可以是仅开放 HTTP 端口并且仅允许符合 HTTP格式的数据包通过的代理服务器。

所述远端节点, 具体可以是另一通信终端, 也可以是服务器 (如会议服 务器、 即时消息服务器、 另一 TURN服务器等)。

通信终端 120通过 TURN服务器 110实现与远端节点之间的通信, 其中, 通信终端 120与 TURN月良务器 110之间交互的消息通过预先建立的 websocket 连接进行传输。具体地, TURN服务器 110接收通信终端 120通过所述 websocket 连接发送的资源分配请求, 并为通信终端 120 分配转发地址、 资源端口等通 信资源; 接收通信终端 120通过所述 websocket连接发送的包括通信数据和 复用标识的 TURN数据包, 所述复用标识用于标识所述转发地址和资源端 口与 所述通信数据对应的远端节点之间的通信通道 ; 并通过所述复用标识所标识 的所述通信通道将所述通信数据发送给所述远 端节点。

以上述实施环境为例, 通信终端 120通过该 websocket连接向 TURN服务 器 110发送两个资源分配请求以分别申请通信资源 1(包括转发地址 1和资源 端口 1 )和通信资源 2 (包括转发地址 2和资源端口 2 ), 并后续分别利用通信 资源 1和通信资源 2与远端节点 130-1和远端节点 130-2进行通信。 后续将 转发地址 1和资源端口 1与远端节点 130-1之间的通信通道称为通信通道 1, 并将所述通信终端发送的用于与远端节点 130-1 通信的通信数据称为通信数 据 1;将转发地址 2和资源端口 2与远端节点 130-2之间的通信通道称为通信 通道 2,并将所述通信终端发送的用于与远端节点 130-2通信的通信数据称为 通信数据 2。 在与远端节点 130-1通信时, 通信终端 120在发送给 TURN服务 器 110的包括通信数据 1的 TURN数据包中携带用于标识通信通道 1的复用标 识, TURN服务器 110收到该 TURN数据包时, 通过通信通道 1将该通信数据 1 发送给远端节点 13Q-1; 类似地, 在与远端节点 13Q-2通信时, 通信终端 120 在发送给 TURN服务器 110的包括通信数据 2的 TURN数据包中携带用于标识 通信通道 2的复用标识, TURN服务器 110收到该 TURN数据包时, 通过通信通 道 2将通信数据 2发送给远端节点 1 30-2。

根据本发明实施例, 由于所述通信终端与所述 TURN服务器之间交互的消 息是通过利用 TURN服务器的 HTTP端口建立的 webs ocke t连接进行传输的, 因此, 该通信终端向 TURN服务器发送的消息(如上述资源分配请求 TURN数 据包) 均可以通过仅开放 HTTP端口并且仅允许符合 HTTP格式的数据包通过 的防火墙, 从而解决了现有的 TURN技术中由于此类防火墙的上述限制所导致 的无法实现局域网内的通信终端和远端节点之 间的通信的问题。

进一步地, 由于通信终端向 TURN服务器发送的包括通信数据的 TURN数 据包中还携带了用于标识所述转发地址和资源 端口与所述通信数据对应的远 端节点之间的通信通道的复用标识, 以使得该 TURN服务器可以通过所述复用 标识所标识的通信通道将所述通信数据发送给 所述远端节点, 因此, 可以通 过利用该 HTTP端口建立的 webs ocke t连接发送与多个远端节点通信的通信数 据, 从而解决了由于此类防火墙对端口的限制所导 致的无法实现局域网内的 通信终端同时与多个远端节点通信的问题。 图 2是本发明实施例 1提供的实现私网穿越的方法流程示意图。

局域网中的通信终端与公网中的 TURN服务器之间预先建立 web s ocke t连 接, 所述通信终端和所述 TURN服务器之间交互的消息是通过所述 webs ocke t 连接进行传输的。

步骤 21 0 : 所述通信终端向所述 TURN服务器发送资源分配请求; 步骤 220 : 所述 TURN服务器收到所述资源分配请求后为所述通 终端分 配转发地址和资源端口, 所述转发地址和资源端口为所述 TURN服务器自身的

IP地址和端口;

步骤 2 30 : 所述通信终端向所述 TURN服务器发送 TURN数据包;

所述 TURN数据包包括通信数据和复用标识, 所述复用标识用于标识所述 转发地址和资源端口与所述通信数据对应的远 端节点之间的通信通道; 在所述 TURN数据包中包括所述复用标识, 可以支持单个 webs oke t连接 上的 TURN数据复用, 即, 支持在同一个 webs ocke t连接上传输用于与不同的 远端节点通信的通信数据。

步骤 240 : 所述 TURN服务器通过所述复用标识所标识的通信通 将所述 通信数据发送给所述远端节点。

在本发明实施例 1中, 所述通信终端和所述 TURN服务器之间交互的消息 (如步骤 21 0 的资源分配请求、 步骤 2 30 的 TURN数据包)都是通过所述 webs ocke t连接进行传输的。 所述资源分配请求包括资源协议类型, 所述资源协议类型用于指定所述 TUR 服务器与所述远端节点之间的通信协议, 具体可以是 TCP 、 UDP 或 webs ocke t。

下面分别描述本发明实施例 1的 3种实施方式。 其中, 在实施方式 1中, 所述 TURN服务器与所述远端节点之间的通信协议为 TCP; 在实施方式 2中, 所述 TURN服务器与所述远端节点之间的通信协议为 UDP; 在实施方式 3中, 所述 TURN服务器与所述远端节点之间的通信协议为 webs ocke t。 下面结合图 3-1、 3-2、 3-3、 3-4详细描述本发明实施例 1的实施方式 1 (所述 TURN服务器与所述远端节点之间的通信协议为 TCP )。

在实施方式 1中, 在步骤 220和 2 30之间还包括: 所述 TURN服务器利用 所述转发地址和资源端口建立与所述远端节点 之间的 TCP连接; 步骤 2 30 中 的所述 TURN数据包包括的复用标识具体用于标识所述 TCP连接; 相应地, 在 步骤 240中, 所述 TURN服务器通过所述复用标识所标识的 TCP连接将所述通 信数据发送给所述远端节点。

具体地, 可以是所述 TURN服务器根据通信终端的连接请求主动发起 立 所述 TCP连接, 也可以是所述远端节点主动发起建立所述 TCP连接。 下面分 别结合图 3-1和图 3-2描述这两种实现方式。 如图 3-1所示, 对于所述 TURN服务器根据通信终端的连接请求主动发起 建立所述 TCP连接的实现方式, 在分配转发地址和资源端口之后、 以及建立 所述 TCP连接之前, 还包括: 所述 TURN服务器在预先创建的配置信息对象中 记录为所述配置信息对象分配的资源标识、 以及所述转发地址和资源端口; 并向所述通信终端发送所述资源标识; 接收所述通信终端发送的连接请求, 所述连接请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号; 获 取记录所述资源标识的配置信息对象, 从所述配置信息对象中读取所述转发 地址和资源端口; 相应地, 所述利用所述转发地址和资源端口建立与所述 远 端节点之间的 TCP连接, 具体包括: 利用读取的所述转发地址和资源端口、 以及所述连接请求中的所述远端节点的 IP地址和端口号建立所述 TCP连接。

下面结合图 3-1详细描述其实现步骤:

步骤 3-101 : 与步骤 210类似, 不再赞述;

步骤 3-102 : 所述 TURN服务器收到所述资源分配请求后为所述通 终端 分配转发地址和资源端口, 所述转发地址和资源端口为所述 TURN服务器自身 的 IP地址和端口;

所述 TURN服务器在接收所述资源分配请求后创建配 信息对象, 并在所 述配置信息对象中记录为所述配置信息对象分 配的资源标识、 以及所述转发 地址和资源端口。

所述配置信息对象可以以文件、 数据库表单等形式存储, 也可以直接存 储在内存中。

步骤 3-103: 所述 TUR 服务器通过所述 webs ocke t连接向所述通信终端 发送所述资源标识;

具体可以是通过向所述通信终端返回的所述资 源分配请求的响应消息携 带所述资源标识。 步骤 3-1 04: 所述通信终端通过所述 webs ocke t连接向所述 TUR 服务器 发送连接请求, 所述连接请求包括所述资源标识、 以及所述远端节点的 IP地 址和端口号;

步骤 3-1 05 : 所述 TURN服务器建立与所述远端节点之间的 TCP连接; 具体地, 所述 TURN服务器获取记录所述资源标识的配置信息 象, 从所 述配置信息对象中读取所述转发地址和资源端 口, 并利用读取的所述转发地 址和资源端口、 以及所述连接请求中的所述远端节点的 IP地址和端口号建立 所述 TCP连接。

建立所述 TCP连接后, 所述 TURN服务器在所述配置信息对象中记录为所 述 TCP连接分配的连接标识与所述 TCP连接的对应关系, 具体可以是在所述 配置信息对象中记录所述连接标识和所述 TCP连接的信息。 所述 TCP连接的 信息具体可以是所述 TCP连接的句柄, 通过该句柄可以调用所述 TCP连接的 TCP对象中的发送函数以通过所述 TCP连接发送数据;也可以是所述 TCP连接 对应的转发地址和资源端口, 通过该转发地址和资源端口可以获取所述 TCP 连接的句柄,并进而通过上述方式发送数据, 需要说明的是,由于在步骤 3-1 02 中已经记录该转发地址和资源端口, 此时可以仅记录所述连接标识; 还可以 是所述 TCP连接对应的五元组(该五元组包括所述转发 地址和资源端口、 TCP 协议类型、 所述远端节点的 IP地址和端口号)。

步骤 3-1 06: 所述 TUR 服务器通过所述 webs ocke t连接向所述通信终端 发送所述连接标识;

具体可以是通过向所述通信终端返回的所述连 接请求的响应消息携带所 述连接标识。

步骤 3-1 07: 所述通信终端通过所述 webs ocke t连接向所述 TUR 服务器 发送 TURN数据包, 所述 TURN数据包包括通信数据和所述连接标识;

步骤 3-1 Q8 : 所述 TURN服务器通过所述连接标识所标识的 TCP连接将所 述通信数据发送给所述远端节点。 具体地, 所述 TURN服务器获取记录所述连接标识的配置信息 象, 根据 所述配置信息对象中记录的所述连接标识与所 述 TCP连接的对应关系确定所 述 TCP连接, 并通过 TCP连接将所述通信数据发送给所述远端节点。

步骤 3-1 09 : 所述远端节点通过所述 TCP连接向所述 TURN服务器发送通 信数据;

步骤 3-1 1 0 : 所述 TURN服务器将接收自所述远端节点的通信数据 装在 TUR 数据包中并通过所述 webs ocke t连接将所述 TUR 数据包发送给所述通信 终端, 所述 TURN数据包还包括所述连接标识。

具体地, 所述 TURN服务器通过所述 TCP连接接收到所述通信数据后, 确 定所述 TCP连接所对应的本端的 IP地址和端口号(即所述转发地址和资源端 口), 获取记录所述转发地址和资源端口的配置信息 对象, 获取所述配置信息 对象中记录的所述连接标识, 并将所述通信数据和所述连接标识封装到 TURN 数据包中发送给所述通信终端。

优选地, 所述远端节点可以在步骤 3-1 Q 5建立所述 TCP连接后, 记录所 述 TCP连接的连接标识与所述通信终端之间的对应 关系 (具体可以是记录所 述 TCP连接的连接标识与所述通信终端的 IP地址和端口号之间的对应关系), 并在步骤 3-1 08通过所述 TCP连接接收到所述通信数据时, 根据记录的所述 连接标识与所述通信终端之间的对应关系识别 出所述通信数据来自于所述通 信终端。 另外, 所述远端节点在步骤 3-1 09通过所述 TCP连接发送通信数据 之前, 还可以根据所述对应关系获取所述通信终端对 应的 TCP 连接的连接标 识以确定所述 TCP连接。

优选地, 所述通信终端可以在步骤 3-1 06接收到所述连接标识后, 记录 所述连接标识与所述远端节点之间的对应关系 (具体可以是记录所述 TCP连 接的连接标识与所述远端节点的 IP地址和端口号之间的对应关系), 并在步 骤 3-1 1 0接收到所述 TURN数据包时, 根据记录的所述连接标识与所述远端节 点之间的对应关系确定所述 TURN数据包中的连接标识所对应的远端节点, 并 进而识别出所述 TURN数据包中的通信数据来自于所述远端节点 另外, 所述 通信终端在步骤 3-107 中向所述 TURN服务器发送包括所述连接标识的 TURN 数据包之前, 还可以根据所述对应关系获取所述远端节点对 应的所述连接标 识, 并将所述连接标识添加到所述 TURN数据包中。

需要说明的是, 步骤 3-107和 3-108 实现的是所述通信终端向所述远端 节点发送通信数据, 步骤 3-109和 3-1 10实现的是所述远端节点向通信终端 所述发送通信数据, 两者之间没有特定的先后顺序。 如图 3-2所示, 对于所述远端节点主动发起建立所述 TCP连接的实现方 式, 在分配转发地址和资源端口之后、 以及建立所述 TCP连接之前, 还包括: 所述 TURN服务器在预先创建的配置信息对象中记录 所述配置信息对象分配 的资源标识、 以及所述转发地址和资源端口, 并向所述通信终端发送所述资 源标识; 接收所述通信终端发送的许可创建请求, 所述许可创建请求包括所 述资源标识、 以及所述远端节点的 IP地址和端口号; 获取记录所述资源标识 的配置信息对象, 在所述配置信息对象中记录许可信息, 所述许可信息包括 所述远端节点的 IP地址和端口号; 接收所述远端节点发送的用于建立 TCP连 接的 TCP连接请求, 所述 TCP连接请求的目的 IP地址和目的端口为所述转发 地址和资源端口, 所述 TCP连接请求的源 IP地址和源端口为所述远端节点的 IP地址和端口号; 获取记录了所述转发地址和资源端口的配置信 息对象, 判 断所述配置信息对象的许可信息是否包括所述 远端节点的 IP地址和端口号, 如果是则确定所述通信终端许可所述远端节点 利用所述转发地址和资源端口 与所述通信终端通信。

下面结合图 3-2详细描述其实现步骤:

步骤 3-201至步骤 3-203: 与步骤 3-1 01至步骤 3-103类似, 不再赞述; 步骤 3-204: 所述通信终端通过所述 websocke t连接向所述 TUR 服务器 发送许可创建请求, 所述许可创建请求包括所述资源标识、 以及至少一个远 端节点的 IP地址和端口号;

所述 TURN服务器接收所述许可创建请求后, 获取记录所述资源标识的配 置信息对象, 在所述配置信息对象中记录许可信息, 所述许可信息包括所述 远端节点的 IP地址和端口号。

步骤 3-205: 所述 TUR 服务器通过所述 webs ocke t连接向所述通信终端 返回许可创建成功响应;

步骤 3-206 : 所述 TURN服务器接收所述远端节点发送的用于建立 TCP连 接的 TCP连接请求, 所述 TCP连接请求的目的 IP地址和目的端口为所述转发 地址和资源端口, 所述 TCP连接请求的源 IP地址和源端口为所述远端节点的 IP地址和端口号;

步骤 3-207 : 所述 TURN服务器获取记录了所述转发地址和资源端 的配 置信息对象, 判断所述配置信息对象的许可信息是否包括所 述远端节点的 IP 地址和端口号, 如果是则确定所述通信终端许可所述远端节点 利用所述转发 地址和资源端口与所述通信终端通信;

步骤 3-208 : 所述 TURN服务器接受所述远端节点发送的 TCP连接请求以 建立与所述远端节点之间的 TCP连接。

建立所述 TCP连接后, 所述 TURN服务器在所述配置信息对象中记录为所 述 TCP连接分配的连接标识与所述 TCP连接的对应关系, 具体可以是在所述 配置信息对象中记录所述连接标识和所述 TCP连接的信息, 具体实现方式与 步骤 3-105中描述的实现方式类似, 不再赘述。

步骤 3-209: 所述 TUR 服务器通过所述 webs ocke t连接向所述通信终端 发送所述连接标识、 以及所述远端节点的 I P地址和端口号;

具体可以是通过向所述通信终端发送的连接尝 试请求携带所述连接标 识、 以及所述远端节点的 I P地址和端口号。

步骤 3-210: 所述通信终端通过所述 websocke t连接向所述 TUR 服务器 返回连接尝试成功响应; 步骤 3-211至 3-214 : 与步骤 3-107至 3-110类似, 不再赞述。

优选地, 所述远端节点可以在步骤 3-2 Q8建立所述 TCP连接后, 记录所 述 TCP连接的连接标识与所述通信终端之间的对应 关系 (具体可以是记录所 述 TCP连接的连接标识与所述通信终端的 IP地址和端口号),并在步骤 3-212 通过所述 TCP连接接收到所述通信数据时, 根据记录的所述连接标识与所述 通信终端之间的对应关系识别出所述通信数据 来自于所述通信终端。 另外, 所述远端节点在步骤 3-21 3通过所述 TCP连接发送通信数据之前, 还可以根 据所述对应关系获取所述通信终端对应的 TCP连接的连接标识以确定所述 TCP 连接。

优选地, 所述通信终端可以在步骤 3-209接收到所述连接标识、 以及所 述远端节点的 IP地址和端口号后, 记录所述 TCP连接的连接标识与所述远端 节点之间的对应关系 (具体可以是记录所述 TCP连接的连接标识与所述远端 节点的 IP地址和端口号之间的对应关系), 并在步骤 3-214接收到所述 TURN 数据包时, 根据记录的所述连接标识与所述远端节点之间 的对应关系确定所 述 TURN数据包中的连接标识所对应的所述远端节 ,并进而识别出所述 TURN 数据包中的通信数据来自于所述远端节点。 另外, 所述通信终端在步骤 3-211 中向所述 TURN服务器发送包括所述连接标识的 TURN数据包之前, 还可以根 据所述对应关系获取所述远端节点对应的所述 连接标识, 并将所述连接标识 添加到所述 TUR 数据包中。

需要说明的是, 步骤 3-111和 3-112 实现的是所述通信终端向所述远端 节点发送通信数据, 步骤 3-11 3和 3-1 14 实现的是所述远端节点向通信终端 所述发送通信数据, 两者之间没有特定的先后顺序。 下面结合图 3-3详细阐述实施方式 1的一种示例实现方式。

步骤 3-301: 所述通信终端通过所述 websocke t连接向所述 TUR 服务器 酉己 H Al l oca te reques t ; Allocate request包括资源协议类型,具体可以是 TCP、UDP或 websocket, 在实施方式 1 中所述资源协议类型为 TCP。 Allocate request 中包括的相应 字段示例如下:

REQUESTED- TRANSP0RT=TCP

SUB-PROTOCOL = NULL

需要说明的是, 如果申请的是 UDP或 TCP资源, REQUESTED-TRANSPORT字 段的值为 UDP或 TCP, SUB-PROTOCOL字段的值为 NULL;如果申请的是 websocket 资源, REQUESTED-TRANSPORT字段的值为 TCP( websocket协议基于 TCP协议), SUB-PROTOCOL字段的值为 websocket。

所述 TUR 服务器收到 Allocate request后为所述通信终端分配转发地 址和资源端口, 所述转发地址和资源端口为所述 TURN服务器自身的 IP地址 和端口;

所述 TURN服务器在接收所述资源分配请求后创建配 信息对象, 并在所 述配置信息对象中记录为所述配置信息对象分 配的资源标识、 以及所述转发 地址和资源端口, 还可以记录所述通信终端与所述 TURN服务器之间的传输层 信息、 所述通信终端与所述 TURN服务器之间的连接方式、 以及所述远端节点 与所述 TURN 良务器之间的连接方式, 示例如下:

传输地址 the relayed transport address;

五元组 the 5-tuple: (client's IP address, client's port, server's IP address, server's port, transport protocol);

客户端连接 Client Connection;

远端节点连接 Peer Connect ion;

资源标识 Allocation-ID;

其中, 传输地址 the relayed transport address i己录々是分酉己 ό々转发 地址和资源端口。

五元组 the 5-tuple记录的是所述通信终端与所述 TURN服务器之间的传 输层信息, 包括所述通信终端的 IP 地址 client's IP address 和端口号 client's port, 所述 TURN月良务器的 IP地址 server's IP address和端口号 server's port (如 80端口) , 以及所述通信终端与所述 TURN服务器之间采 用的传输协议 transport protocol。 在本发明实施例中, 所述通信终端与所 述 TRUN服务器之间建立的是 web socket连接, 且 web socket是基于 TCP的, 所以传输协议 transport protocol字段记录的是 TCP。

客户端连接 Client Connection用于记录所述通信终端与所述 TURN服务 器之间的连接方式, 在本发明实施例中具体为 Websocket。 因为 websocket是 基于 TCP连接的, 所以无法通过五元组 5-tuple在传输层来区分 TCP连接和 websoket连接, 因此需要通过 Client Connect ion属性的值区分这两种连接 方式。

远端节点连接 Peer Connection用于记录所述远端节点与所述 TUR 服务 器之间的连接方式, 具体可以是 UDP、 TCP或 Websocket。 在实施方式 1中, Peer Connection 的值为 TCP, 即为步骤 3-301 的资源分配请求 Allocate request包括的资源协议类型对应的连接方式。

资源标识 Allocation-ID记录的是为所述配置信息对象分配 资源标识。 步骤 3-302: 所述 TUR 服务器通过所述 websocket连接向所述通信终端 返回成功响应 Al locate success response, Allocate success response中 包括所述资源标识。

Al locate success response;¾可以包^"分酉己 ό々转 ϋ也址和资源、端口, 包 括的相应字段示例如下:

Allocation-ID = 0x0001

XOR-RELAYED-ADDRESS=222.16.2.15: 80

其中, Allocation-ID 字段的值为所述资源标识 ( 0x0001 ) , XOR-RELAYED-ADDRESS字段的值为所述转发地址( 222.16.2.15 )和资源端口 (80) 。 需要说明的是, 如果所述资源分配请求包括的资源协议类型为 websocket, 则分配的资源端口为 HTTP端口 (如 80端口), 否则, 分配的资 源端口可以不是 HTTP端口。

步骤 3-303: 所述通信终端通过所述 websocket连接向所述 TUR 服务器 发送许可创建清求 CreatePermission request , 所述许可创建清求 CreatePermission request中包括所述资源标识和至少一个远端节 的 IP地 址和端口号。

CreatePermission request中包括的相应字段示例如下:

Allocation- ID= 0x0001

XOR-PEER-ADDRESS=221.18.2.1: 1260

其中, Allocation-ID 字段的值为所述资源标识 ( 0x0001 ) , XOR-PEER-ADDRESS的值为远端节点的 IP地址( 221.18.2.1 )和端口号( 1260 ) c 所述 TUR 月良务器接 ^jt CreatePermission request 后 , 在 CreatePermission request 包括 ό Al locat ion_ID对应 ό々酉己置信息、对象中 i己 录记录许可信息, 所述许可信息包括所述远端节点的 IP地址和端口号, 示例 如下: 在配置信息对象的 "许可列表 a list of permissions; " 字段记录 CreatePermission request中包括的远端节点的 IP地址和端口号。

当所述 TURN服务器后续接收到远端节点向该转发地址 资源端口发送的 TCP连接请求时,可以根据该配置信息对象判断 该通信终端是否许可所述远端 节点利用所述转发地址和资源端口与所述通信 终端通信, 即, 查询所述配置 信息对象以判断所述配置信息对象中的许可列 表 a list of permissions 字 段是否记录了发送所述连接请求的远端节点的 IP地址和端口号, 并在判断为 是时接受所述连接请求以建立与所述远端节点 之间的 TCP连接。

步骤 3-304: 所述 TUR 服务器通过所述 websocket连接向所述通信终端 返回成功响应 CreatePermi s s ion success response。

需要说明的是, 在实施方式 1中, 步骤 3-303、 3-304为可选步骤, 如果 不需要验证远端节点的有效性, 如, 不存在远端节点向该转发地址和资源端 口发送 TCP连接请求的场景, 则可以不需要步骤 3-303、 3-304。 后续步骤 3-305A1至 3-305A3, 是所述 TURN服务器根据所述通信终端的 连接请求主动发起建立 TCP连接的示例实现方式。

步骤 3-305A1: 所述通信终端通过所述 websocket连接向所述 TUR 服务 器发送连接清求 Connect ion request, Connect ion request 中包括在步骤 3-302接收到的所述资源标识、 以及远端节点的 IP地址和端口号。

Connection request中包括的相应字段示例如下:

Allocation-ID = 0x0001

XOR-PEER-ADDRESS=221.18.2.1: 1260

其中, Allocation-ID的值为所述资源标识( 0x0001 ), XOR-PEER-ADDRESS 的值为所述远端节点的 IP地址( 221.18.2.1 )和端口号 ( 1260 ) 。

需要说明的是, 步骤 3-305A1 中的远端节点可以是步骤 3-303 中的至少 一个远端节点中的一个, 也可以不同于步骤 3-303中的远端节点。

步骤 3-3Q5A2: 所述 TURN服务器接收到所述连接请求后, 获取记录所述 资源标识的配置信息对象, 从所述配置信息对象中读取所述转发地址和资 源 端口, 并利用读取的所述转发地址和资源端口、 以及所述连接请求中的所述 远端节点的 IP地址和端口号建立所述 TCP连接。

建立所述 TCP连接后, 所述 TURN服务器在所述配置信息对象中记录为所 述 TCP连接分配的连接标识与所述 TCP连接的对应关系, 具体可以是在所述 配置信息对象中记录所述连接标识和所述 TCP连接的信息, 具体实现方式与 步骤 3-105中描述的实现方式类似, 不再赘述。

需要说明的是, 步骤 3-305A2 建立的连接的类型为所述预留资源对应的 类型, 即所述配置信息对象中的远端节点连接 Peer Connection所记录的连 接方式。 步骤 3-305A3: 连接建立成功后, 所述 TUR 服务器通过所述 websocke t 连接向所述通信终端返回连接成功响应 Connect ion Succes s res ponse , Connect ion Succes s response包括所述连接标识。

Connect ion Succes s response中包括的相应字段示例如下:

Connect- ID = OxOOAl

其中, Connect-ID 的值为所述连接标识 (OxOOAl ) 。

后续步骤 3-305B1至 3-305B4 ,为所述远端节点主动发起建立所述 TCP连 接的示例实现方式。

步骤 3-305B1 : 所述远端节点发送用于建立 TCP连接的 TCP连接请求, 所 述 TCP连接请求的目的 IP地址和目的端口为所述转发地址和资源端口 所述 TCP连接请求的源 IP地址和源端口为所述远端节点的 IP地址和端口号;

所述 TURN服务器判断所述通信终端是否许可所述远 节点利用所述转发 地址和资源端口与所述通信终端进行通信, 具体地, 查询记录了所述转发地 址和资源端口的配置信息对象以判断所述配置 信息对象中的许可列表 a l i s t of permi s s ions字段是否记录了所述远端节点的 IP地址和端口号, 并在判断 为是时, 执行后续步骤, 否则拒绝所述远端节点的连接请求。

所述远端节点在发送 Connec t ion reques t之前可以从所述通信终端获取 所述转发地址和资源端口, 如, 在步骤 3-302的 TURN服务器发送给通信终端 的成功响应中包括所述转发地址和资源端口, 所述通信终端通过所述成功响 应获取所述转发地址和资源端口后, 将所述转发地址和资源端口传输给所述 远端节点。 所述通信终端将所述转发地址和资源端口传输 给所述远端节点的 具体实现方式属于现有技术, 本发明实施例对此不作限制。

步骤 3-305B2 : 所述 TURN服务器接受所述远端节点发送的 TCP连接请求 以建立与所述远端节点之间的 TCP连接。

建立所述 TCP连接后, 所述 TURN服务器在所述配置信息对象中记录为所 述 TCP连接分配的连接标识与所述 TCP连接的对应关系, 具体可以是在所述 配置信息对象中记录所述连接标识和所述 TCP连接的信息, 具体实现方式与 步骤 3-105中描述的实现方式类似, 不再赘述。

步骤 3-305B3: 所述 TUR 服务器通过所述 websocket连接向所述通信终 端发送连接尝试清求 Connect ionAt tem t request , Connect ionAt tem t request包括所述连接标识、 以及所述远端节点的 IP地址和端口号。

Connection Attempt中包括的相应字段示例如下:

Connect- ID = OxOOAl

XOR-PEER-ADDRESS=221.18.2.1: 1260

其中, Connect-ID的值为所述连接标识 (OxOOAl ) , XOR-PEER-ADDRESS 的值为所述远端节点的 IP地址( 221.18.2.1 )和端口号 ( 1260 ) 。

步骤 3-305B4: 所述通信终端通过所述 websocket连接向所述 TUR 服务 器返回连接尝试成功响应 Connect ionAt tempt success response。 通过步骤 3-305A1至 3-3Q5A3或步骤 3-305B1至 3-3Q5B4建立了所述 TCP 连接后, 所述通信终端和所述远端节点之间可以通过所 述 TURN服务器相互传 输通信数据, 如后续步骤 3-306至 3-309所述。

步骤 3-306: 所述通信终端通过所述 websocket连接向所述 TUR 服务器 发送 TURN数据包 ( TURN data ) , 所述 TURN数据包包括通信数据 ( Appdata ) 和所述连接标识;

具体地, 所述 TURN 数据包的头域中包括复用标识字段, 以支持单个 websoket连接上的 TURN数据复用, 即, 支持在同一个 websocket连接上传输 用于与不同的远端节点通信的通信数据。

另外, 还可以在封装所述 TUR 数据包的 websocket数据包的头域中, 或 者在所述 TURN数据包的头域中, 携带用于表明所述 websocket数据包中封装 的为 TURN数据包的信息; 也可以在建立所述 websocket连接时在用于建立所 述 websocket连接的消息中指定所述 websocket连接用于传输 TURN消息(如 本发明实施例所述的 Allocate request, Connection request 等)和 TURN 数据包。

实施方式 1中的 TURN数据包格式示例如图 3-4所示, 其中, 前四个字节 (4 bytes ) 的 "TURN" 用于表示该数据包为 TURN数据包; 后续四个字节 (4 bytes )的复用标识字段记录的为所述连接标识 connect-ID; Application Data 为具体的通信数据。

步骤 3-307: 所述 TURN服务器接收所述 TURN数据包( TURN data ) 以后, 将所述 TURN数据包中的通信数据 ( Appdata )通过所述 TCP连接发送给所述 远端节点。

具体地, 所述 TURN服务器获取记录所述连接标识的配置信息 象, 根据 所述配置信息对象中记录的所述连接标识与所 述 TCP连接的对应关系确定所 述 TCP连接, 并通过 TCP连接将所述通信数据发送给所述远端节点。

步骤 3-308: 所述 TURN服务器接收所述远端节点通过所述 TCP连接发送 的通信数据 (Appdata) ;

步骤 3-309: 所述 TURN服务器将所述通信数据封装到 TURN数据包( TURN data ) 中并通过所述 web socket连接发送给所述通信终端, 所述 TUR 数据包 还包括所述连接标识。

具体地, 所述 TURN服务器通过所述 TCP连接接收到所述通信数据后, 确 定所述 TCP连接所对应的本端的 IP地址和端口号(即所述转发地址和资源端 口), 获取记录所述转发地址和资源端口的配置信息 对象, 获取所述配置信息 对象中记录的所述连接标识, 并将所述通信数据和所述连接标识封装到 TURN 数据包中发送给所述通信终端。

所述 TURN数据包的格式同步骤 3-306中的 TURN数据包的格式。 在如图 3-1、 3-2、 3-3、 3-4所示的实施方式中, 所述复用标识为为所述 TCP连接分配的连接标识, 作为一种替代方案, 所述复用标识也可以是所述资 源标识。 具体地, 在步骤 3-105、 3-208、 3-305A2 中, 在所述配置信息对象 中记录所述资源标识与所述 TCP连接的对应关系;在步骤 3-108、 3-212、 3-307 中, 所述 TURN服务器获取记录所述资源标识的配置信息 象, 根据所述配置 信息对象中记录的所述资源标识与所述 TCP连接的对应关系确定所述 TCP连 接, 并通过 TCP连接将所述通信数据发送给所述远端节点; 相应地, 在步骤 3-110、 3-214、 3-309中, 所述 TURN服务器通过所述 TCP连接接收到所述远 端节点发送的通信数据后, 确定所述 TCP连接所对应的本端的 IP地址和端口 号(即所述转发地址和资源端口), 获取记录所述转发地址和资源端口的配置 信息对象, 获取所述配置信息对象中记录的所述资源标识 , 并将所述通信数 据和所述资源标识封装到 TURN数据包中发送给所述通信终端。 下面结合图 4-1至 4-5详细描述本发明实施例 1的实施方式 2(所述 TURN 服务器与所述远端节点之间的通信协议为 UDP )。

在实施方式 2中, 步骤 230中的所述 TURN数据包包括的复用标识具体用 于标识所述转发地址和资源端口与所述远端节 点之间的 UDP通道; 步骤 240 具体为: 所述 TURN服务器根据所述复用标识获取所述转发地 和资源端口、 以及所述远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包中 并将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP地址和源 端口号为所述转发地址和资源端口, 所述 UDP数据包的目的 IP地址和目的端 口号为所述远端节点的 IP地址和端口号。

进一步地, 存在如下两种可选实现方式。

下面结合图 4-1至 4-3详细描述实施方式 2的第一种可选实现方式。 如图 4-1所示:

步骤 4-101至 4-105 : 与步骤 3-201至 3-205类似, 不再赞述;

需要说明的是, 在实施方式 2中, 步骤 4-104、 4-105为可选步骤, 如果 不需要验证远端节点的有效性, 如, 不存在远端节点向该转发地址和资源端 口发送包含通信数据的 UDP数据包的场景, 则可以不需要步骤 4-104、 4-105。

步骤 4-106: 所述通信终端通过所述 websocke t连接向所述 TUR 服务器 发送通道绑定请求, 所述通道绑定请求包括所述资源标识、 以及远端节点的 IP地址和端口号;

需要说明的是, 步骤 4-106 中的远端节点可以是步骤 4-104 中的至少一 个远端节点中的一个, 也可以不同于步骤 4-104中的远端节点。

步骤 4-107 : 所述 TURN服务器获取记录所述资源标识的配置信息 象; 在所述配置信息对象中记录为所述 UDP通道分配的通道号和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP地址和端口号; 并将所述通道号发 送给所述通信终端, 具体可以是通过向所述通信终端返回的所述通 道绑定请 求的响应消息携带所述通道号。 步骤 4-108: 所述通信终端通过所述 websocke t连接向所述 TUR 服务器 发送 TURN数据包, 所述 TURN数据包包括通信数据和所述通道号;

步骤 4-109: 所述 TURN服务器获取记录所述通道号的配置信息对 , 并 获取所述配置信息对象中记录的所述转发地址 和资源端口、 以及所述 UDP通 道信息中的所述远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数 据包中并将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP地 址和源端口号为所述转发地址和所述资源端口 , 所述 UDP数据包的目的 IP地 址和目的端口号为所述远端节点的 I P地址和端口号。

步骤 4-110: 所述 TURN服务器接收所述远端节点发送的封装了通 数据 的 UDP数据包, 所述 UDP数据包的目的 I P地址和目的端口号为所述转发地址 和所述资源端口, 所述 UDP数据包的源 I P地址和源端口号为所述远端节点的 IP地址和端口号;

步骤 4-111 : 所述 TURN服务器获取记录了所述转发地址和资源端 的配 置信息对象, 判断所述配置信息对象的许可信息是否包括所 述远端节点的 IP 地址和端口号, 如果是则执行后续步骤以向所述通信终端发送 所述通信数据, 否则不向所述通信终端发送所述通信数据。

步骤 4-112 :所述 TURN服务器将所述通信数据封装在 TURN数据包中并通 过所述 websocke t连接发送给所述通信终端, 所述 TURN数据包还包括复用标 识, 所述复用标识具体为所述通道号。 具体地, 所述 TURN数据包包括的通道 号获取自所述配置信息对象。

优选地, 所述通信终端可以在步骤 4-107接收到所述通道号后, 记录所 述通道号与所述远端节点之间的对应关系 (具体可以是记录所述通道号与所 述远端节点的 IP地址和端口号之间的对应关系 ) , 并在步骤 4-112接收到所 述 TURN数据包时, 根据记录的所述通道号与所述远端节点之间的 对应关系确 定所述 TURN数据包中的通道号所对应的所述远端节点 并进而可以识别出所 述 TURN数据包中的通信数据来自于所述远端节点 另外, 所述通信终端在步 骤 4-108 中向所述 TURN服务器发送包括所述通道号的 TURN数据包之前, 还 可以根据所述对应关系获取所述远端节点对应 的所述通道号, 并将所述通道 号添加到所述 TURN数据包中。

需要说明的是, 步骤 4-108和 4-109 实现的是所述通信终端向所述远端 节点发送通信数据, 步骤 4-111至 4-1 12 实现的是所述远端节点向通信终端 所述发送通信数据, 两者之间没有特定的先后顺序。 在实施方式 2 的第一种可选实现方式中, 所述复用标识为通道号, 作为 一种替代实现方案, 所述复用标识还可以是所述资源标识, 具体地, 在步骤 4-107接收到所述通道绑定请求后, 获取记录所述资源标识的配置信息对象; 在所述配置信息对象中记录 UDP通道信息, 所述 UDP通道信息包括所述远端 节点的 IP地址和端口号; 在步骤 4-108 中, 所述 TURN数据包包括的复用标 识具体可以为所述资源标识; 相应地, 在步骤 4-109中, 所述 TURN服务器获 取记录所述资源标识的配置信息对象, 并获取所述配置信息对象中记录的所 述转发地址和资源端口、 以及所述 UDP通道信息中的所述远端节点的 IP地址 和端口号。 下面结合图 4-2进一步详细描述实施方式 2的第一种可选实现方式。 步骤 4-201: 所述通信终端通过所述 websocket连接向所述 TUR 服务器 酉己 H Al locate request;

Allocate request 包括资源协议类型, 在实施方式 2中所述资源协议类 型为 UDP。 Allocate reques t中包括的相应字段示例如下:

REQUESTED- TRANSP0RT=UDP

SUB-PROTOCOL = NULL

所述 TUR 服务器收到 Allocate request后为所述通信终端分配转发地 址和资源端口, 所述转发地址和资源端口为所述 TURN服务器自身的 IP地址 和端口;

所述 TURN服务器在接收所述资源分配请求后创建配 信息对象, 在所述 配置信息对象中记录的信息类似于步骤 3-301 记录的信息, 不同点仅在于, 在实施方式 2中远端节点连接 Peer Connect ion的值为 UDP。

步骤 4-202至 4-204: 与步骤 3-302至 3-304类似, 不再赞述;

需要说明的是, 在实施方式 2中, 步骤 4-203、 4-204为可选步骤, 如果 不需要验证远端节点的有效性, 如, 不存在远端节点向该转发地址和资源端 口发送包含通信数据的 UDP数据包的场景, 则可以不需要步骤 4-203、 4-204。

步骤 4-205: 所述通信终端通过所述 websocket连接向所述 TUR 服务器 发送通道绑定" i青求 channelBinding request, channelBinding request中包 括所述资源标识和远端节点的 IP地址和端口号。 channelBinding request中 包括的相应字段示例如下:

Allocation-ID = 0x0001 XOR-PEER-ADDRESS=221.18.2.1: 1260

其中, Allocation-ID的值为所述资源标识( 0x0001 ), XOR-PEER-ADDRESS 的值为所述远端节点的 IP地址( 221.18.2.1 )和端口号 ( 1260 ) 。

步骤 4-206: 所述 TURN服务器收到 channelBinding request后, 获取记 录所述资源标识的配置信息对象; 在所述配置信息对象中记录为所述 UDP通 道分配的通道号和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP 地址和端口号,并向所述通信终端返回通道绑 定响应 channelBinding success response, channelBinding success response包括所述通道号。

步骤 4-207: 所述通信终端通过所述 websocket连接向所述 TUR 服务器 发送 TURN数据包 ( TURN data ) , 所述 TURN数据包包括通信数据 ( Appdata ) 和所述通道号 ( Channel number ) ;

具体地, 所述 TURN 数据包的头域中包括复用标识字段, 以支持单个 websoket连接上的 TURN数据复用, 即, 支持在同一个 websocket连接上传输 用于与不同的远端节点通信的通信数据。

另外, 还可以在封装所述 TURN数据包的 websocket数据包的头域中, 或 者在所述 TURN数据包的头域中, 携带用于表明所述 websocket数据包中封装 的为 TURN数据包的信息; 也可以在建立所述 websocket连接时在用于建立所 述 websocket连接的消息中指定所述 websocket连接用于传输 TURN消息(如 本发明实施例所述的 Allocate request, Connection request 等)和 TURN 数据包。

实施方式 2的第一种可选实现方式中的 TURN数据包格式示例如图 4-3所 示, 其中, 前四个字节 (4 bytes ) 的 "TURN" 用于表示该数据包为 TURN数 据包,后续两个字节( 2 bytes )的复用标识字段记录的为所述通道号 channel numbs r。

步骤 4-208: 所述 TURN服务器获取记录所述通道号的配置信息对 , 并 获取所述配置信息对象中记录的所述转发地址 和资源端口、 以及所述 UDP通 道信息中的所述远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数 据包中并将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP地 址和源端口号为所述转发地址和所述资源端口 , 所述 UDP数据包的目的 IP地 址和目的端口号为所述远端节点的 I P地址和端口号。

步骤 4-209: 所述 TURN服务器接收所述远端节点发送的封装了通 数据 ( Appda ta ) 的 UDP数据包, 所述 UDP数据包的目的 IP地址和目的端口号为 所述转发地址和所述资源端口, 所述 UDP数据包的源 I P地址和源端口号为所 述远端节点的 I P地址和端口号;

步骤 4-210: 所述 TURN服务器获取记录了所述转发地址和资源端 的配 置信息对象, 判断所述配置信息对象的许可信息是否包括所 述远端节点的 IP 地址和端口号,如果是则将所述通信数据( Appda ta )封装在 TURN数据包( TURN da ta ) 中并通过所述 web socket连接发送给所述通信终端, 所述 TUR 数据包 还包括所述通道号 ( Channe l number ) 。

具体地, 所述 TURN服务器查询记录了所述转发地址和资源端 的配置信 息对象以判断所述配置信息对象中的许可列表 a l i s t of permi s s ions 字段 是否记录了所述远端节点的 IP地址和端口号, 并在判断为是时, 将所述通信 数据封装在 TURN数据包中发送给所述通信终端, 否则不向所述通信终端发送 所述通信数据。

所述 TURN数据包的格式同步骤 4-207中的 TURN数据包的格式。

下面结合图 4-4和 4-5详细描述实施方式 2的第二种可选实现方式。 如图 4-4所示:

步骤 4-401至 4-405 : 与步骤 4-101至 4-105类似, 不再赞述;

需要说明的是, 在实施方式 2中, 步骤 4-404、 4-405为可选步骤, 如果 不需要验证远端节点的有效性, 如, 不存在远端节点向该转发地址和资源端 口发送包含通信数据的 UDP数据包的场景, 则可以不需要步骤 4-404、 4-405。

步骤 4-406: 所述通信终端通过所述 websocke t连接向所述 TUR 服务器 发送 TURN数据包, 所述 TURN数据包包括通信数据和复用标识; 所述复用标识具体包括所述资源标识、 以及所述远端节点的 IP地址和端 口号。

需要说明的是, 步骤 4-406 中的远端节点可以是步骤 4-404 中的至少一 个远端节点中的一个, 也可以不同于步骤 4-404中的远端节点。

步骤 4-407 : 所述 TURN服务器获取记录所述资源标识的配置信息 象, 获取所述配置信息对象中记录的转发地址和资 源端口, 并获取所述 TURN数据 包中的所述远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包 中并将所述 UDP数据包发送给所述远端节点;

所述 UDP数据包的源 IP地址和源端口号为所述转发地址和所述资源 口, 所述 UDP数据包的目的 IP地址和目的端口号为所述远端节点的 IP地址 和端口号。 所述 UDP数据包中还可以包括所述通信终端的 IP地址和端口号。

步骤 4-408、 4-409: 与步骤 4-11 Q至 4-111类似, 不再赞述;

步骤 4-410 :所述 TURN服务器将所述通信数据封装在 TURN数据包中并通 过所述 websocke t连接发送给所述通信终端, 所述 TURN数据包还包括所述复 用标识, 所述复用标识具体包括资源标识、 以及所述远端节点的 IP地址和端 口号。 具体地, 所述 TURN数据包包括的资源标识获取自所述配置信 对象; 所述 TURN数据包包括的所述远端节点的 IP地址和端口号获取自所述 UDP数 据包。

需要说明的是, 步骤 4-406和 4-407 实现的是所述通信终端向所述远端 节点发送通信数据, 步骤 4-408至 4-410实现的是所述远端节点向通信终端 所述发送通信数据, 两者之间没有特定的先后顺序。

作为实施方式 2的第二种可选实现方式的一种替代方案, 步骤 4-406 中 的复用标识可以包括所述转发地址和资源端口 、 以及所述远端节点的 IP地址 和端口号,在步骤 4-407获取所述 TURN数据包中的所述转发地址和资源端口、 以及所述远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包中 并将所述 UDP数据包发送给所述远端节点; 所述 UDP数据包的源 IP地址和源 端口号为所述转发地址和所述资源端口, 所述 UDP数据包的目的 IP地址和目 的端口号为所述远端节点的 I P地址和端口号。 下面结合图 4-5进一步详细描述实施方式 2的第二种可选实现方式。

步骤 4-501至 4-504 : 与步骤 4-201至 4-204类似, 不再赞述;

步骤 4-505: 所述通信终端通过所述 websocke t连接向所述 TUR 服务器 发送 TURN数据包 ( TURN da ta ) , 所述 TURN数据包包括通信数据 ( Appda t a ) 和复用标识;

所述复用标识具体包括所述资源标识、 以及所述远端节点的 IP地址和端 口号。

所述 TUR 数据包具体可以为 TURN协议的 SEND消息。

步骤 4-506 : 所述 TURN服务器获取记录所述资源标识的配置信息 象, 获取所述配置信息对象中记录的转发地址和资 源端口, 并获取所述 TURN数据 包中的所述远端节点的 IP地址和端口号, 将所述通信数据 ( Appda ta )封装 到 UDP数据包(UDP da tagram ) 中并将所述 UDP数据包发送给所述远端节点; 所述 UDP数据包的源 IP地址和源端口号为所述转发地址和所述资源 口, 所述 UDP数据包的目的 IP地址和目的端口号为所述远端节点的 IP地址 和端口号。 所述 UDP数据包中还可以包括所述通信终端的 IP地址和端口号。

步骤 4-507 : 与步骤 4-209类似, 不再赞述;

步骤 4-508 : 所述 TURN服务器获取所述配置信息对象中的资源标 , 将 所述通信数据封装在 TURN数据包中并通过所述 websocke t连接发送给所述通 信终端, 所述 TURN数据包还包括所述资源标识、 以及所述远端节点的 IP地 址和端口号。

所述 TUR 数据包具体可以为 TURN协议的 DATA消息。 下面结合图 5-1至 5-4详细描述本发明实施例 1的实施方式 3(所述 TURN 服务器与所述远端节点之间的通信协议为 websocket ) c

需要说明的是, 实施方式 3 比较适用于如下场景: 远端节点也位于局域 网中,并且该局域网和公网之间部署了仅开放 HTTP端口并且仅允许符合 HTTP 格式的数据包通过的防火墙。 在实施方式 3中, 所述 TURN服务器利用所述转发地址和资源端口建立 所述远端节点之间的 websocket连接, 所述 TURN服务器和所述远端节点之间 通过所述 websocket连接进行交互。 后续在对实施方式 3的描述中, 将所述 TUR 服务器与所述通信终端之间建立的所述 websocket 连接称为第一 websocket 连接, 将所述 TURN 服务器与所述远端节点之间建立的所述 websocket连接称为第二 websocket连接。

在实施方式 3中, 在步骤 230之前还包括: 生成连接标识, 并记录所述 连接标识与所述第一 websocket 连接的对应关系、 以及所述连接标识与所述 第二 websocket 连接的对应关系, 以建立所述通信终端与所述远端节点之间 的虚拟连接, 并将所述连接标识分别发送给所述通信终端和 所述远端节点; 步骤 230中的所述 TURN数据包包括的复用标识具体为所述连接标 ;相应地, 在步骤 240 中, 所述 TURN 服务器通过所述连接标识所对应的所述第二 websocket连接将所述 TUR 数据包发送给所述远端节点。

需要说明的是, 所述 TURN 服务器记录了所述连接标识与所述第一 websocket连接的对应关系、以及所述连接标识与 所述第二 websocket连接的 对应关系, 即建立了所述通信终端与所述远端节点之间的 虚拟连接。 所述连 接标识可以用于标识所述虚拟连接。

在建立所述虚拟连接之后, 所述通信终端还可以通过所述 TURN服务器接 收所述远端节点发送的通信数据, 具体地, 所述 TURN服务器接收所述远端节 点通过所述第二 websocket连接发送的 TURN数据包, 所述 TUR 数据包包括 通信数据和接收自所述 TURN服务器的所述连接标识; 并将所述 TURN数据包 通过所述第一 webs ocke t连接发送给所述通信终端。

进一步地, 实施方式 3存在如下两种可选实现方式, 其中, 在第一种可 选实现方式中, 所述 TURN服务器根据所述通信终端的连接请求建立 述通信 终端与所述远端节点之间的虚拟连接; 在第二种可选实现方式中, 所述 TURN 服务器根据所述远端节点的连接请求建立所述 通信终端与所述远端节点之间 的虚拟连接。 下面结合图 5-1描述实施方式 3的第一种可选实现方式。

步骤 5-101至 5-103 : 与步骤 3-101至 3-103类似, 不再赞述; 步骤 5-104: 所述通信终端通过所述第一 webs ocke t连接向所述 TUR 服 务器发送连接请求, 所述连接请求包括所述资源标识、 以及所述远端节点的

IP地址和端口号;

所述 TURN服务器收到所述连接请求后, 获取记录所述资源标识的配置信 息对象, 根据所述配置信息对象中记录的所述转发地址 和资源端口、 以及所 述连接请求中的远端节点的 IP地址和端口号确定所述第二 websocke t连接; 生成连接标识, 并在所述配置信息对象中记录所述连接标识与 所述第一 websocke t连接的对应关系、以及所述连接标识与所述 二 websocke t连接的 对应关系。

步骤 5-105: 所述 TUR 服务器通过所述第二 websocke t连接向所述远端 节点发送所述连接标识、 以及所述通信终端的 I P地址和端口号;

具体可以是通过向所述远端节点发送的连接尝 试请求携带所述连接标 识、 以及所述通信终端的 I P地址和端口号。

步骤 5-106 :所述远端节点记录所述连接标识与所述通信 端之间的对应 关系 (具体可以是记录所述连接标识与所述通信终 端的 IP地址和端口号之间 的对应关系) , 并通过所述第二 websocke t连接向所述 TURN E 务器返回成功 响应;

步骤 5-1Q7: 所述 TURN服务器在收到所述连接尝试请求的成功响 后通 过所述第一 websocket连接将所述连接标识发送给所述通信终 端;

具体可以是通过向所述通信终端返回的所述连 接请求的响应消息携带所 述连接标识。

所述通信终端可以记录所述连接标识与所述远 端节点之间的对应关系 (具体可以是记录所述连接标识与所述远端节 的 IP地址和端口号之间的对 应关系)。

步骤 5-108: 所述通信终端通过所述第一 websocket连接向所述 TUR 服 务器发送 TURN数据包, 所述 TURN数据包包括通信数据和所述连接标识; 具体地, 所述通信终端根据记录的所述连接标识与所述 远端节点之间的 对应关系获取所述远端节点对应的所述连接标 识, 并将所述连接标识添加到 所述 TURN数据包中。

步骤 5-109: 所述 TURN 服务器通过所述连接标识所对应的所述第二 websocket连接将所述 TUR 数据包发送给所述远端节点;

具体地, 所述 TURN服务器获取记录所述连接标识的配置信息 象, 根据 所述配置信息对象中记录的所述连接标识与所 述第二 websocket 连接的对应 关系确定所述第二 websocket连接, 并通过所述第二 websocket连接将所述 TUR 数据包发送给所述远端节点。

所述远端节点在接收到所述 TURN数据包后, 根据记录的所述连接标识与 所述通信终端之间的对应关系识别出所述通信 数据来自于所述通信终端。

步骤 5-110: 所述远端节点通过所述第二 websocket连接向所述 TUR 服 务器发送 TURN数据包, 所述 TURN数据包包括通信数据和所述连接标识; 具体地, 所述远端节点根据记录的所述连接标识与所述 通信终端之间的 对应关系获取所述通信终端对应的所述连接标 识, 并将所述连接标识添加到 所述 TURN数据包中。 步骤 5-111:所述 TURN服务器将所述接收自所述远端节点的 TURN数据包 通过所述第一 websocket连接发送给所述通信终端。

具体地, 所述 TURN服务器获取记录所述连接标识的配置信息 象, 根据 所述配置信息对象中记录的所述连接标识与所 述第一 websocket 连接的对应 关系确定所述第一 websocket连接, 并通过所述第一 websocket连接将所述 TUR 数据包发送给所述通信终端。

所述通信终端在接收到所述 TURN数据包后, 根据记录的所述连接标识与 所述远端节点之间的对应关系确定所述 TURN数据包中的连接标识所对应的远 端节点, 并进而识别出所述 TURN数据包中的通信数据来自于所述远端节点

需要说明的是, 步骤 5-108和 5-109 实现的是所述通信终端向所述远端 节点发送通信数据, 步骤 5-11Q和 5-111 实现的是所述远端节点向通信终端 所述发送通信数据, 两者之间没有特定的先后顺序。 下面结合图 5-2描述实施方式 3的第二种可选实现方式。

步骤 5-201: 与步骤 3-201类似, 不再赞述;

步骤 5-202: 所述 TURN服务器收到所述资源分配请求后为所述通 终端 分配转发地址和资源端口, 所述转发地址和资源端口为所述 TURN服务器自身 的 IP地址和端口;

所述 TURN服务器在接收所述资源分配请求后创建配 信息对象, 并在所 述配置信息对象中记录为所述配置信息对象分 配的资源标识、 所述通信终端 的 I P地址和端口号、 以及所述转发地址和资源端口。

所述配置信息对象可以以文件、 数据库表单等形式存储, 也可以直接存 储在内存中。

步骤 5-203至 5-205: 与步骤 3-203至 3-205类似, 不再赞述;

步骤 5-206:所述 TURN服务器接收所述远端节点通过所述第二 websocket 连接发送的连接请求, 所述连接请求包括所述通信终端的 IP地址和端口号; 步骤 5-207 :所述 TURN 务器获取记录了所述通信终端的 IP地址和端口 号的配置信息对象, 判断所述配置信息对象中的许可信息是否包括 所述远端 节点的 IP地址和端口号, 如果是则确定所述通信终端许可所述远端节点 利用 所述转发地址和资源端口与所述通信终端通信 , 生成连接标识, 并在所述配 置信息对象中记录所述连接标识与所述第一 websocket 连接的对应关系、 以 及所述连接标识与所述第二 websocket连接的对应关系。

步骤 5-208: 所述 TUR 服务器通过所述第一 websocke t连接向所述通信 终端发送所述连接标识、 以及所述远端节点的 I P地址和端口号;

具体可以是通过向所述通信终端发送的连接尝 试请求携带所述连接标 识、 以及所述远端节点的 I P地址和端口号;

所述通信终端可以记录所述连接标识与所述远 端节点之间的对应关系 (具体可以是记录所述连接标识与所述远端节 的 IP地址和端口号之间的对 应关系)。

步骤 5-209: 所述通信终端通过所述第一 websocke t连接向所述 TUR 服 务器返回所述连接尝试请求的成功响应;

步骤 5-210: 所述 TUR 服务器通过所述第二 websocke t连接向所述远端 节点发送所述连接标识;

具体可以是通过向所述远端节点返回的所述连 接请求的响应消息携带所 述连接标识。

所述远端节点接收到所述连接标识后, 可以记录所述连接标识与所述通 信终端之间的对应关系 (具体可以是记录所述连接标识与所述通信终 端的 IP 地址和端口号之间的对应关系;)。

步骤 5-211至 5-214 : 与步骤 5-108至 5-111类似, 不再赞述。 下面结合图 5-3进一步详细描述实施方式 3的上述两种可选实现方式。 步骤 5-301: 所述通信终端通过所述第一 websocket连接向所述 TUR 服 务器发送资源分配请求 Allocate request;

Allocate request 包括资源协议类型, 在实施方式 3中所述资源协议类 型为 websocket。 Allocate request中包括的相应字段示例如下:

REQUESTED- TRANSP0RT=TCP

SUB-PROTOCOL = websocket

所述 TUR 服务器收到 Allocate request后为所述通信终端分配转发地 址和资源端口, 所述转发地址和资源端口为所述 TURN服务器自身的 IP地址 和端口。

所述 TURN服务器在接收所述资源分配请求后创建配 信息对象, 在所述 配置信息对象中记录的信息类似于步骤 3-301 记录的信息, 不同点仅在于, 在实施方式 3中远端节点连接 Peer Connection的值为 websocket。

步骤 5-302至 5-304: 与步骤 3-302至 3-304类似, 不再赞述;

需要说明的是, 在实施方式 3中, 步骤 5-303、 5-304为可选步骤, 如果 不需要验证远端节点的有效性, 如, 不存在远端节点通过所述第二 websocket 连接向所述 TURN服务器发送连接请求的场景, 则可以不需要步骤 5-303、 5-304。 后续步骤 5-305A1至 5-305A4,是根据通信终端的连接请求建立所述通 终端与所述远端节点之间的虚拟连接的示例实 现方式。

步骤 5-305A1: 与步骤 3-305A1类似, 不再赞述;

需要说明的是, 步骤 5-305A1 中的远端节点可以是步骤 5-303 中的至少 一个远端节点中的一个, 也可以不同于步骤 5-303中的远端节点。

步骤 5-3Q5A2: 所述 TURN服务器接收到所述连接请求后, 获取记录所述 资源标识的配置信息对象, 根据所述配置信息对象中记录的所述转发地址 和 资源端口、 以及所述连接请求中的远端节点的 IP地址和端口号确定所述第二 websocket连接; 生成连接标识, 并在所述配置信息对象中记录所述连接标识 与所述第一 websocket 连接的对应关系、 以及所述连接标识与所述第二 websocket连接的对应关系。还通过所述第二 websocket连接向所述远端节点 发送连接尝试青求 Connect ionAt tem t request, Connect ionAt tempt request 包括所述连接标识、 所述通信终端的 IP地址和端口号。

Connect ionAt tempt request中包括的相应字段示例如下:

Connect- ID = OxOOAl

XOR-MAPPED-ADDRESS=223.5.2.8: 1340

其中, Connect-ID的值为所述连接标识( OxOOAl ), XOR-MAPPED-ADDRESS 的值为所述通信终端的 IP地址( 223.5.2.8 )和端口号( 1340 ) 。

步骤 5-305A3: 所述远端节点收到所述连接尝试请求 Connect ionAUempt request后, 记录所述连接标识与所述通信终端的 IP地址和端口号之间的对 应关系, 并通过所述第二 websocket连接向所述 TURNE 务器返回连接尝试成 功响应 Connect ionAt tempt success response。

步骤 5-305A4: 所述 TUR 服务器收到 Connect ionAUempt success response后, 通过所述第一 websocket连接向所述通信终端返回连接成功响 应 Connection success response, Connect ion success response包括所述 连接标识; 后续步骤 5-305B1至 5-305B4,是根据远端节点的连接请求建立所述通 终端与所述远端节点之间的虚拟连接的示例实 现方式。

步骤 5-305B1: 所述远端节点通过所述第二 websocket连接向所述 TURN 月良务器发送连接" i青求 Connect ion request, connect ion request包括所述通 信终端的 IP地址和端口号;

所述 TURN月良务器收到 Connection request后, 获取记录了所述通信终 端的 IP地址和端口号的配置信息对象, 判断所述配置信息对象中的许可信息 是否包括所述远端节点的 IP地址和端口号, 具体地, 查询所述通信终端的 IP 地址和端口号对应的配置信息对象以判断所述 配置信息对象中的许可列表 a l i s t of permi s s ions字段是否记录了所述远端节点的 IP地址和端口号, 并 在判断为是时执行后续步骤, 否则拒绝所述连接请求。

步骤 5-305B2 : 所述 TURN服务器生成连接标识, 在所述配置信息对象中 记录所述连接标识与所述第一 webs ocke t 连接的对应关系、 以及所述连接标 识与所述第二 websocket连接的对应关系, 并通过所述第一 websocket连接 向所述通信终端发送连接尝试清求 Connect ionAt tempt reques t , Connect ionAt tempt reques t 包括所述连接标识、 以及所述远端节点的 IP地 址和端口号。

Connect ion At tempt reques t中包括的相应字段示例如下:

Connect- ID = OxOOAl

XOR-PEER-ADDRESS= 221. 18. 2. 1: 1260

其中, Connect-ID的值为所述连接标识 (OxOOAl ) , XOR-PEER-ADDRESS 的值为所述远端节点的 IP地址( 221. 18. 2. 1 )和端口号 ( 1260 ) 。

步骤 5-305B3: 所述通信终端通过所述第一 websocket连接向所述 TURN 月良务器返回连接尝试成功响应 Connect i on At tempt succes s response。

所述通信终端收到 Connect i onAt tempt reques t 后记录所述连接标识与 所述远端节点的 IP地址和端口号之间的对应关系。

步骤 5-305B4: 所述 TURN服务器向所述远端节点发送所述连接标识 具体可以是通过向所述远端节点返回的所述连 接请求的响应消息 connect ion succes s response携带所述连接标识。

所述远端节点收到所述连接标识后, 记录所述连接标识与所述通信终端 的 IP地址和端口号之间的对应关系。

需要说明的是, 所述 TURN服务器可以在步骤 5-305B3之前记录所述连接 标识与所述第一 webs ocke t 连接的对应关系、 以及所述连接标识与所述第二 websocket连接的对应关系, 如果在步骤 5-305B3收到的是失败响应, 则可以 从配置信息对象中删除记录的上述对应关系; 所述 TURN服务器也可以在步骤 5-305B3收到成功响应之后再记录所述连接标识 所述第一 websocket连接的 对应关系、 以及所述连接标识与所述第二 websocket连接的对应关系。

步骤 5-306: 所述通信终端通过所述第一 websocket连接向所述 TUR 服 务器发送 TURN数据包( TURN data ),所述 TURN数据包包括通信数据( Appdata ) 和所述连接标识 (Connect-ID);

具体地, 所述 TURN 数据包的头域中包括复用标识字段, 以支持单个 websoket连接上的 TURN数据复用, 即, 支持在同一个 websocket连接上传输 用于与不同的远端节点通信的通信数据。

另外, 还可以在封装所述 TURN数据包的 websocket数据包的头域中, 或 者在所述 TURN数据包的头域中, 携带用于表明所述 websocket数据包中封装 的为 TURN数据包的信息; 也可以在建立所述第一 websocket连接时在用于建 立所述第一 websocket连接的消息中指定所述第一 websocket连接用于传输 TURN消息 (如本发明实施例所述的 Allocate request, Connection request 等)和 TURN数据包。

实施方式 3中的 TURN数据包格式与实施方式 1 中的 TURN数据包格式类 似, 格式示例如图 3-4所示。

步骤 5-307至 5-309: 与步骤 5-109至 5-111类似, 不再赞述。

其中,步骤 5-307至 5-309中的 TURN数据包的格式同步骤 5-306中的 TURN 数据包的格式。 需要说明的是, 对于所述远端节点也位于局域网中, 并且该局域网和公 网之间部署了仅开放 HTTP端口并且仅允许符合 HTTP格式的数据包通过的防 火墙的场景, 由于此类防火墙对端口的限制, 局域网内的远端节点无法通过 向 TURN服务器的不同端口发送用于实现与不同的 信终端通信的信令和通信 数据以实现和不同的通信终端的通信。

根据本发明实施例 1的实施方式 3, 所述远端节点向所述 TURN服务器发 送的包括通信数据的 TURN数据包中还携带了用于标识所述通信终端 所述远 端节点之间的虚拟连接的连接标识, 从而使得所述 TURN服务器可以区分所述 远端节点通过所述第二 webs ocke t 连接发送的用于与不同的通信终端通信的 TURN数据, 从而将接收自所述远端节点的 TURN数据转发给对应的通信终端。 因此, 远端节点可以通过所述第二 webs ocke t 连接发送与多个通信终端通信 的通信数据, 从而解决了由于此类防火墙对端口的限制所导 致的无法实现局 域网内的远端节点同时与多个位于局域网内的 通信终端通信的问题。 根据本发明实施例 1,本发明实施例 2提出了一种 TURN服务器 500, TURN 服务器 500位于公网中, 和局域网中的通信终端之间交互的消息是通过 预先 建立的第一网络套接字 web s ocke t连接进行传输的。

如图 6-1所示, TURN服务器 500包括: 接收单元 501、 资源分配单元 502 和发送单元 5 03 ;

接收单元 501, 用于接收所述通信终端发送的资源分配请求, 并将所述资 源分配请求传输至资源分配单元 502 ;

资源分配单元 502, 用于从接收单元 5 01接收所述资源分配请求, 并为所 述通信终端分配转发地址和资源端口, 所述转发地址和资源端口为所述 TURN 服务器自身的 IP地址和端口;

接收单元 501, 还用于接收所述通信终端发送的 TURN数据包, 并将所述 TUR 数据包传输至发送单元 503,所述 TURN数据包包括通信数据和复用标识, 所述复用标识用于标识所述转发地址和资源端 口与所述通信数据对应的远端 节点之间的通信通道;

发送单元 503, 用于从接收单元 501接收所述 TURN数据包, 并通过所述 复用标识所标识的通信通道将所述通信数据发 送给所述远端节点。 所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议,具体 可以是 TCP 、 UDP或 webs ocke t。

下面分别描述本发明实施例 2的 3种实施方式。 其中, 在实施例 2的实 施方式 1中, 所述 TURN服务器与所述远端节点之间的通信协议为 TCP; 在实 施例 2的实施方式 2中, 所述 TURN服务器与所述远端节点之间的通信协议为 UDP; 在实施例 2的实施方式 3中, 所述 TURN服务器与所述远端节点之间的 通信协议为 websocke t。 如图 6-2所示, 在本发明实施例 2的实施方式 1 中, 所述接收单元 501 接收的所述资源分配请求包括的资源协议类型 指定所述 TURN服务器与所述远 端节点之间的通信协议为 TCP;所述 TURN服务器还包括 TCP连接建立单元 504 ; 所述接收单元 501 接收的所述资源分配请求包括资源协议类型, 所述资 源协议类型指定所述 TURN服务器与所述远端节点之间的通信协议为 TCP;

TCP连接建立单元 504, 用于利用所述转发地址和资源端口建立与所述 远 端节点之间的 TCP连接;

所述接收单元 501接收的所述 TURN数据包包括的复用标识, 具体用于标 识所述 TCP连接;

所述发送单元 503 用于通过所述复用标识所标识的通信通道将所 述通信 数据发送给所述远端节点, 具体包括: 所述发送单元 503用于通过所述复用 标识所标识的 TCP连接将所述通信数据发送给所述远端节点。

在建立上述 TCP连接时, 具体可以是所述 TURN服务器根据通信终端的连 接请求主动发起建立所述 TCP连接, 也可以是所述远端节点主动发起建立所 述 TCP连接。

对于所述 TURN服务器根据通信终端的连接请求主动发起 立所述 TCP连 接的实现方式: 资源分配单元 502,还用于在预先创建的配置信息对象中记录 为所述配置 信息对象分配的资源标识、 以及所述转发地址和资源端口;

发送单元 503,还用于接收资源分配单元 502发送的所述资源标识, 并向 所述通信终端发送所述资源标识;

所述接收单元 501, 还用于接收所述通信终端发送的连接请求, 所述连接 请求包括所述资源标识、 以及所述远端节点的 I P地址和端口号;

所述 TCP连接建立单元 504,具体用于获取记录所述资源标识的配置信 息 对象, 从所述配置信息对象中读取所述转发地址和资 源端口, 并利用读取的 所述转发地址和资源端口、 以及所述连接请求中的所述远端节点的 IP地址和 端口号建立所述 TCP连接。

对于所述远端节点主动发起建立所述 TCP连接的实现方式:

所述 TURN服务器还包括第一许可单元 505 ;

资源分配单元 502,还用于在预先创建的配置信息对象中记录 为所述配置 信息对象分配的资源标识、 以及所述转发地址和资源端口, 并将所述资源标 识传输至发送单元 503;

发送单元 503,还用于接收资源分配单元 502发送的所述资源标识, 并向 所述通信终端发送所述资源标识;

所述接收单元 501, 还用于接收所述通信终端发送的许可创建请求 , 所述 许可创建请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并 将所述许可创建请求传输至所述第一许可单元 505 ;还用于接收所述远端节点 发送的用于建立 TCP连接的 TCP连接请求, 所述 TCP连接请求的目的 IP地址 和目的端口号为所述转发地址和所述资源端口 , 所述 TCP连接请求的源 IP地 址和源端口为所述远端节点的 IP地址和端口号;

所述第一许可单元 505,用于从所述接收单元 501接收所述许可创建请求, 获取记录所述资源标识的配置信息对象, 在所述配置信息对象中记录许可信 息, 所述许可信息包括所述远端节点的 IP地址和端口号; 还用于在所述接收 单元 501接收到所述 TCP连接请求时, 获取记录了所述转发地址和资源端口 的配置信息对象, 判断所述配置信息对象的许可信息是否包括所 述远端节点 的 IP地址和端口号, 如果是则确定所述通信终端许可所述远端节点 利用所述 转发地址和资源端口与所述通信终端通信;

所述 TCP连接建立单元 504,具体用于在所述第一许可单元 505确定所述 通信终端许可所述远端节点利用所述转发地址 和资源端口与所述通信终端通 信时, 建立所述 TCP连接。

基于上述两种建立 TCP连接的实现方式:

所述 TCP连接建立单元 504, 还用于在所述配置信息对象中记录为所述 TCP连接分配的连接标识与所述 TCP连接的对应关系,并将所述连接标识传输 至所述发送单元 503;

所述发送单元 503,还用于从所述 TCP连接建立单元 504接收所述连接标 识, 并将所述连接标识发送给所述通信终端;

所述接收单元 501接收的所述 TURN数据包包括的复用标识具体为所述连 接标识;

所述发送单元 503通过所述复用标识所标识的 TCP连接将所述通信数据 发送给所述远端节点, 具体包括: 所述发送单元 503 获取记录所述连接标识 的配置信息对象, 根据所述配置信息对象中记录的所述连接标识 与所述 TCP 连接的对应关系确定所述 TCP连接, 并通过 TCP连接将所述通信数据发送给 所述远端节点。

在实施例 2的实施方式 1中, 所述接收单元 501,还可以用于接收所述远 端节点通过所述 TCP连接发送的通信数据, 并将所述通信数据传输至所述发 送单元 503; 所述发送单元 503, 还可以用于从所述接收单元 501接收所述通 信数据, 并将所述通信数据封装在 TURN数据包中发送给所述通信终端, 所述 TUR 数据包还包括所述复用标识。 如图 6-3所示, 在本发明实施例 2的实施方式 2 中, 所述接收单元 501 接收的所述资源分配请求包括的资源协议类型 指定所述 TURN服务器与所述远 端节点之间的通信协议为 UDP;

所述接收单元 501接收的所述 TURN数据包包括的复用标识具体用于标识 所述转发地址和资源端口与所述远端节点之间 的 UDP通道;

所述发送单元 503,具体用于从所述接收单元 501接收所述 TURN数据包, 根据所述复用标识获取所述转发地址和资源端 口、 以及所述远端节点的 IP地 址和端口号, 将所述通信数据封装到 UDP数据包中并将所述 UDP数据包发送 给所述远端节点, 所述 UDP数据包的源 I P地址和源端口号为所述转发地址和 资源端口,所述 UDP数据包的目的 IP地址和目的端口号为所述远端节点的 IP 地址和端口号。

在实施例 2的实施方式 2的一种可选实现方式中, TURN服务器 500还包 括绑定单元 506 ;

所述资源分配单元 502,还用于在预先创建的配置信息对象中记录 为所述 配置信息对象分配的资源标识、 以及所述转发地址和资源端口; 并将所述资 源标识传输至所述发送单元 503;

所述发送单元 503, 还用于从所述资源分配单元 502接收所述资源标识, 并向所述通信终端发送所述资源标识; 从所述绑定单元 506接收所述绑定单 元 506分配的通道号, 并将所述通道号发送给所述通信终端;

所述接收单元 501, 还用于接收所述通信终端发送的通道绑定请求 , 所述 通道绑定请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并 将所述通道绑定请求传输至所述绑定单元 506 ;

所述绑定单元 506, 用于从所述接收单元 501接收所述通道绑定请求, 获 取记录所述资源标识的配置信息对象;在所述 配置信息对象中记录为所述 UDP 通道分配的通道号和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP地址和端口号; 并将所述通道号传输至所述发送单元 503 ; 所述发送单元 503 用于根据所述复用标识获取所述转发地址和所 述资源 端口、 以及所述远端节点的 IP地址和端口号, 具体包括: 所述发送单元 503 用于获取记录所述通道号的配置信息对象, 并获取所述配置信息对象中记录 的所述转发地址和资源端口、 以及所述 UDP通道信息中的所述远端节点的 IP 地址和端口号。

在实施例 2的实施方式 2的另一种可选实现方式中:

所述资源分配单元 502,还用于在预先创建的配置信息对象中记录 为所述 配置信息对象分配的资源标识、 以及所述转发地址和资源端口; 并将所述资 源标识传输至所述发送单元 503;

所述发送单元 503, 还用于从所述资源分配单元 502接收所述资源标识, 并向所述通信终端发送所述资源标识;

所述接收单元 501接收的所述 TURN数据包包括的复用标识具体包括所述 资源标识、 以及所述远端节点的 IP地址和端口号;

所述发送单元 503 用于根据所述复用标识获取所述转发地址和所 述资源 端口、 以及所述远端节点的 IP地址和端口号, 具体包括: 所述发送单元 503 用于获取记录所述资源标识的配置信息对象, 并获取所述配置信息对象中记 录的转发地址和资源端口, 并获取所述 TURN数据包中的所述远端节点的 IP 地址和端口号。

基于上述两种可选实现方式, 进一步地, 所述 TURN服务器 500还包括第 二许可单元 507 ;

所述接收单元 501, 还用于接收所述通信终端发送的许可创建请求 , 所述 许可创建请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并 将所述许可创建请求传输至所述第二许可单元 507 ;还用于接收所述远端节点 发送的封装了通信数据的 UDP数据包, 所述 UDP数据包的目的 IP地址和目的 端口号为所述转发地址和所述资源端口, 所述 UDP数据包的源 IP地址和源端 口号为所述远端节点的 IP地址和端口号; 所述第二许可单元 507,用于从所述接收单元 501接收所述许可创建请求, 获取记录所述资源标识的配置信息对象, 在所述配置信息对象中记录许可信 息, 所述许可信息包括所述远端节点的 IP地址和端口号; 还用于在所述接收 单元 501接收到所述 UDP数据包时, 获取记录了所述转发地址和资源端口的 配置信息对象, 判断所述配置信息对象的许可信息是否包括所 述远端节点的 IP地址和端口号, 如果是则确定所述通信终端许可所述远端节点 利用所述转 发地址和资源端口与所述通信终端通信;

所述发送单元 503,还用于在所述第二许可单元 507确定所述通信终端许 可所述远端节点利用所述转发地址和资源端口 与所述通信终端通信时, 将所 述通信数据封装在 TURN数据包中发送给所述通信终端, 所述 TURN数据包还 包括所述复用标识。 如图 6-4所示, 在本发明实施例 2的实施方式 3 中, 所述接收单元 501 接收的所述资源分配请求包括的资源协议类型 指定所述 TURN服务器与所述远 端节点之间的通信协议为 webs ocke t ; 所述 TURN服务器还包括连接建立单元 508 ;

所述接收单元 501 接收的所述资源分配请求包括资源协议类型, 所述资 源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议为 webs ocke t ; 所述接收单元 5 01接收的所述 TUR 数据包包括的复用标识具体 为所述连接建立单元 508生成的连接标识;

所述连接建立单元 508, 用于生成连接标识, 并记录所述连接标识与所述 第一 webs ocke t连接的对应关系、 以及所述连接标识与第二 webs ocke t连接 的对应关系, 所述第二 webs ocke t连接是所述 TURN服务器利用所述转发地址 和资源端口预先建立的与所述远端节点之间的 web s ocke t连接,并且所述 TURN 服务器与所述远端节点之间交互的消息是通过 所述第二 webs ocke t 连接进行 传输的; 并将所述连接标识传输至所述发送单元 503 ; 所述发送单元 503, 还用于从所述连接建立单元 508接收所述连接标识, 并将所述连接标识发送给所述通信终端;

所述发送单元 503 用于通过所述复用标识所标识的通信通道将所 述通信 数据发送给所述远端节点, 具体包括: 所述发送单元 503用于通过所述连接 标识所对应的所述第二 websocket连接将所述 TUR 数据包发送给所述远端节 点。

进一步地,所述接收单元 501,还用于向所述远端节点发送所述连接标识 ; 接收所述远端节点发送的 TURN数据包并将所述 TURN数据包传输至所述发送 单元 503,所述 TURN数据包包括通信数据和所述连接标识;所 发送单元 503, 还用于将所述连接标识发送给所述远端节点; 并用于从所述接收单元 501 接 收所述 TURN数据包, 并将所述 TURN数据包发送给所述通信终端。

本发明实施例 2的实施方式 3存在如下两种可选实现方式, 其中, 在第 一种可选实现方式中, 所述 TURN服务器根据所述通信终端的连接请求建立 述通信终端与所述远端节点之间的虚拟连接; 在第二种可选实现方式中, 所 述 TURN服务器根据所述远端节点的连接请求建立 述通信终端与所述远端节 点之间的虚拟连接。

在实施例 2的实施方式 3的第一种可选实现方式中:

资源分配单元 502,还用于在预先创建的配置信息对象中记录 为所述配置 信息对象分配的资源标识、 以及所述转发地址和资源端口, 并将所述资源标 识传输至发送单元 503;

发送单元 503,还用于接收资源分配单元 502发送的所述资源标识, 并向 所述通信终端发送所述资源标识;

所述接收单元 501, 还用于接收所述通信终端发送的连接请求, 所述连接 请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并将所述连 接请求传输至所述连接建立单元 508 ;

所述连接建立单元 508,具体用于从所述接收单元 501接收所述连接请求, 并获取记录所述资源标识的配置信息对象, 根据所述配置信息对象中记录的 所述转发地址和资源端口、 以及所述连接请求中的远端节点的 IP地址和端口 号确定所述第二 webs ocke t 连接, 在所述配置信息对象中记录所述连接标识 与所述第一 websocke t 连接的对应关系、 以及所述连接标识与所述第二 websocke t连接的对应关系, 并将所述连接标识传输至所述发送单元 503 ; 所述发送单元 503 用于通过所述连接标识所对应的所述第二 websocke t 连接将所述 TURN数据包发送给所述远端节点, 具体包括, 所述发送单元 503 用于获取记录所述连接标识的配置信息对象, 根据所述配置信息对象中记录 的所述连接标识与所述第二 websocke t 连接的对应关系确定所述第二 websocke t连接, 并通过所述第二 webs ocke t连接将所述 TUR 数据包发送给 所述远端节点。

在实施例 2的实施方式 3的第二种可选实现方式中:

所述 TURN服务器还包括第三许可单元 509 ;

资源分配单元 502,还用于在预先创建的配置信息对象中记录 为所述配置 信息对象分配的资源标识、 以及所述转发地址和资源端口, 并将所述资源标 识传输至发送单元 503;

发送单元 503,还用于接收资源分配单元 502发送的所述资源标识, 并向 所述通信终端发送所述资源标识;

所述接收单元 501, 还用于接收所述通信终端发送的许可创建请求 , 所述 许可创建请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并 将所述许可创建请求传输至所述第三许可单元 509 ;还用于接收所述远端节点 发送的连接请求, 所述连接请求包括所述通信终端的 IP地址和端口号;

所述第三许可单元 509,从接收单元 501接收所述许可创建请求, 并获取 记录所述资源标识的配置信息对象, 在所述配置信息对象中记录许可信息, 所述许可信息包括所述远端节点的 IP地址和端口号; 还用于在所述接收单元 501接收到所述连接请求时, 获取记录了所述通信终端的 IP地址和端口号的 配置信息对象, 判断所述配置信息对象中的许可信息是否包括 所述远端节点 的 IP地址和端口号, 如果是则确定所述通信终端许可所述远端节点 利用所述 转发地址和资源端口与所述通信终端通信;

所述连接建立单元 508,具体用于从所述接收单元 501接收所述连接请求, 并在所述第三许可单元 509 确定所述通信终端许可所述远端节点利用所述 转 发地址和资源端口与所述通信终端通信时, 获取记录所述资源标识的配置信 息对象, 根据所述配置信息对象中记录的所述转发地址 和资源端口、 以及所 述连接请求中的远端节点的 IP地址和端口号确定所述第二 websocke t连接, 生成所述连接标识, 并在所述配置信息对象中记录所述连接标识与 所述第一 websocke t连接的对应关系、以及所述连接标识与所述 二 websocke t连接的 对应关系, 并将所述连接标识传输至所述发送单元 503;

所述发送单元 503 用于通过所述连接标识所对应的所述第二 websocke t 连接将所述 TURN数据包发送给所述远端节点, 具体包括, 所述发送单元 503 用于获取记录所述连接标识的配置信息对象, 根据所述配置信息对象中记录 的所述连接标识与所述第二 websocke t 连接的对应关系确定所述第二 websocke t连接, 并通过所述第二 webs ocke t连接将所述 TUR 数据包发送给 所述远端节点。 本发明实施例 2 中描述的功能单元可以用来实施上述实施例 1所述的方 法。 根据本发明实施例 1, 本发明实施例 3提出了一种通信终端 600, 通信终 端 600位于局域网中, 公网中的 TURN服务器和通信终端 600之间交互的消息 是通过预先建立的第一网络套接字 webs ocke t连接进行传输的。

如图 7-1所示, 通信终端 600包括: 发送单元 601和 TURN数据包生成单 元 602 ; 所述发送单元 601, 用于向所述 TURN服务器发送资源分配请求, 以使得 所述 TURN服务器为所述通信终端分配转发地址和资 端口, 所述转发地址和 资源端口为所述 TURN服务器自身的 IP地址和端口;

所述 TURN数据包生成单元 602, 用于生成 TURN数据包, 所述 TURN数据 包包括通信数据和复用标识, 所述复用标识用于标识所述转发地址和资源端 口与所述通信数据对应的远端节点之间的通信 通道; 并将所述 TURN数据包传 输至所述发送单元 601 ;

所述发送单元 601,还用于从所述 TURN数据包生成单元 602接收所述 TURN 数据包, 并向所述 TURN服务器发送所述 TURN数据包, 以使得所述 TURN服务 器通过所述复用标识所标识的通信通道将所述 通信数据发送给所述远端节 点。

下面分别描述本发明实施例 3的 3种实施方式。 其中, 在实施例 3的实 施方式 1中, 所述 TURN服务器与所述远端节点之间的通信协议为 TCP; 在实 施例 3的实施方式 2中, 所述 TURN服务器与所述远端节点之间的通信协议为 UDP; 在实施例 3的实施方式 3中, 所述 TURN服务器与所述远端节点之间的 通信协议为 webs ocke t 0 如图 7-2所示, 在本发明实施例 3的实施方式 1 中, 所述发送单元 601 发送的所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TUR 服务器与所述远端节点之间的通信协议为 TCP;

所述 TURN数据包生成单元 602生成的所述 TURN数据包包括的复用标识 具体用于标识所述 TURN服务器利用所述转发地址和资源端口建立 与所述远 端节点之间的 TCP连接, 以使得所述 TURN服务器通过所述复用标识所标识的 TCP连接将所述通信数据发送给所述远端节点。

进一步地, 所述通信终端还包括第一接收单元 603 ;

在建立上述 TCP连接时, 具体可以是所述 TURN服务器根据通信终端的连 接请求主动发起建立所述 TCP连接, 也可以是所述远端节点主动发起建立所 述 TCP连接。

对于所述 TURN服务器根据通信终端的连接请求主动发起 立所述 TCP连 接的实现方式: 所述第一接收单元 603, 用于接收所述 TURN服务器在预先创 建的配置信息对象中记录为所述配置信息对象 分配的资源标识、 以及所述转 发地址和资源端口后发送的资源标识;所述发 送单元 601,还用于向所述 TURN 服务器发送连接请求, 所述连接请求包括所述资源标识、 以及所述远端节点 的 IP地址和端口号, 以使得: 所述 TURN服务器获取记录所述资源标识的配 置信息对象, 从所述配置信息对象中读取所述转发地址和资 源端口, 并利用 读取的所述转发地址和资源端口、 以及所述连接请求中的所述远端节点的 IP 地址和端口号建立所述 TCP连接。

在实施例 3的实施方式 1 中, 所述第一接收单元 603, 还用于接收所述 TUR 服务器发送的封装了通信数据的 TURN数据包, 所述 TURN数据包还包括 所述复用标识; 其中, 所述通信数据是所述 TURN服务器通过所述 TCP连接接 收自所述远端节点的。 如图 7-3所示, 在实施例 3的实施方式 2中, 所述发送单元 601发送的 所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN服务 器与所述远端节点之间的通信协议为 UDP;

所述 TURN数据包生成单元 602生成的所述 TURN数据包包括的复用标识 具体用于标识所述转发地址和资源端口与所述 远端节点之间的 UDP通道, 以 使得: 所述 TURN服务器根据所述复用标识获取所述转发地 和资源端口、 以 及所述远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包中并 将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP地址和源端 口号为所述转发地址和资源端口, 所述 UDP数据包的目的 IP地址和目的端口 号为所述远端节点的 IP地址和端口号。 在实施例 3的实施方式 2的一种可选实现方式中, 所述通信终端还包括 第二接收单元 604;

所述第二接收单元 604, 还用于接收所述 TURN服务器在预先创建的配置 信息对象中记录为所述配置信息对象分配的资 源标识、 以及所述转发地址和 资源端口后发送的所述资源标识, 并将所述资源标识传输至所述发送单元 601 ;

所述发送单元 601, 还用于向所述 TURN服务器发送通道绑定请求, 所述 通道绑定请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 以 使得: 所述 TURN服务器在记录了所述资源标识的配置信息 象中记录为所述 UDP通道分配的通道号和 UDP通道信息,所述 UDP通道信息包括所述远端节点 的 IP地址和端口号; 并接收所述 TURN服务器发送的所述通道号;

所述 TURN数据包生成单元 602生成的所述 TURN数据包包括的复用标识 具体为所述通道号, 以使得: 所述 TURN服务器从记录了所述通道号的配置信 息对象中获取记录的所述转发地址和资源端口 、 以及所述 UDP通道信息中的 所述远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包中并将 所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP地址和源端口 号为所述转发地址和资源端口, 所述 UDP数据包的目的 IP地址和目的端口号 为所述远端节点的 IP地址和端口号。

在实施例 3的实施方式 2的另一种可选实现方式中:

所述第二接收单元 604, 还用于接收所述 TURN服务器在预先创建的配置 信息对象中记录为所述配置信息对象分配的资 源标识、 以及所述转发地址和 资源端口后发送的所述资源标识, 并将所述资源标识传输至所述 TURN数据包 生成单元 602 ;

所述 TURN数据包生成单元 602, 还用于从所述第二接收单元 604接收所 述资源标识; 所述 TURN数据包生成单元 602生成的所述 TURN数据包包括的 复用标识具体包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 以 使得: 所述 TURN服务器获取记录所述资源标识的配置信息 象, 并获取所述 配置信息对象中记录的转发地址和资源端口, 并获取所述 TURN数据包中的所 述远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包中并将所 述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP地址和源端口号 为所述转发地址和资源端口, 所述 UDP数据包的目的 IP地址和目的端口号为 所述远端节点的 IP地址和端口号。

所述第二接收单元 604, 还用于接收所述 TURN服务器发送的封装了接收 自所述远端节点的通信数据的 TURN数据包, 所述 TURN数据包还包括所述复 用标识。 如图 7-4所示, 在本发明实施例 3的实施方式 3中, 所述通信终端还包 括第三接收单元 605 ;

所述发送单元 601 发送的所述资源分配请求包括资源协议类型, 所述资 源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议为 websocke t;

所述第三接收单元 605, 用于接收所述 TURN服务器发送的连接标识, 并 用于将所述连接标识传输至所述 TURN数据包生成单元 602, 其中, 所述 TURN 服务器记录了所述连接标识与所述第一 websocke t 连接的对应关系、 以及所 述连接标识与所述第二 webs ocke t连接的对应关系, 所述第二 webs ocke t连 接是所述 TURN服务器利用所述转发地址和资源端口预先 立的与所述远端节 点之间的 websocke t连接, 并且所述 TURN服务器与所述远端节点之间交互的 消息是通过所述第二 websocke t连接进行传输的;

所述 TURN数据包生成单元 602, 还用于从所述第三接收单元 605接收所 述连接标识; 所述 TURN数据包生成单元 602生成的所述 TURN数据包包括的 复用标识具体为所述连接标识, 以使得所述 TURN服务器通过所述连接标识所 对应的所述第二 webs ocke t连接将所述 TURN数据包发送给所述远端节点。 进一步地, 所述第三接收单元 605, 还用于接收所述 TURN服务器发送的 接收自所述远端节点的 TURN数据包, 所述 TURN数据包包括通信数据和所述 连接标识; 其中, 所述远端节点添加到所述 TURN数据包中的所述连接标识是 预先接收自所述 TURN服务器的。

本发明实施例 3 中描述的功能单元可以用来实施上述实施例 1所述的方 法。 如图 8所示, 本发明实施例 4提供了一种 TURN服务器 1000, TUR 服务 器 1000位于公网中, 和局域网中的通信终端之间交互的消息是通过 预先建立 的第一网络套接字 websocket连接进行传输的。 TURN服务器 1000包括:

处理器(processor) 1010、 发送器 ( transmitter ) 1020-1、 接收器 ( receiver )1020-2 、存储器(memory) 1030和总线 1040。其中,处理器 1010、 发送器 1020-1、接收器 1020-2和存储器 1030之间通过总线 1040完成相互间 的通信。

发送器 1020-1, 接收器 1020-2, 用于与网元通信。

存储器 1030, 用于存放程序 1031, 具体地, 程序 1031可以包括程序代 码, 所述程序代码包括计算机操作指令。 存储器 1030可能包含高速 RAM存储 器, 也可能还包括非易失性存储器 (non- volatile memory ), 例如至少一个 磁盘存储器。

处理器 1010,用于执行所述存储器 1030中存放的程序 1031。处理器 1010 具体可以是一个中央处理器(CPU, central processing unit ), 是计算机核 心单元。

具体地, 程序 1031可以包括: 资源分配单元 1031-1;

接收器 1020-2 , 用于接收所述通信终端发送的资源分配请求;

资源分配单元 1031-1, 用于为所述通信终端分配转发地址和资源端口 , 所述转发地址和资源端口为所述 TURN服务器自身的 IP地址和端口; 接收器 1 020-2,还用于接收所述通信终端发送的 TURN数据包,所述 TURN 数据包包括通信数据和复用标识, 所述复用标识用于标识所述转发地址和资 源端口与所述通信数据对应的远端节点之间的 通信通道;

发送器 1 02 0-1, 用于所述复用标识用于标识所述转发地址和资 源端口与 所述通信数据对应的远端节点之间的通信通道 。 所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议,具体 可以是 TCP 、 UDP或 webs ocke t。

下面分别描述本发明实施例 4的 3种实施方式。 其中, 在实施例 4的实 施方式 1中, 所述 TURN服务器与所述远端节点之间的通信协议为 TCP; 在实 施例 4的实施方式 2中, 所述 TURN服务器与所述远端节点之间的通信协议为 UDP; 在实施例 4的实施方式 3中, 所述 TURN服务器与所述远端节点之间的 通信协议为 websocke t。 在本发明实施例 4的实施方式 1中, 所述接收器 1 020-2接收的所述资源 分配请求包括的资源协议类型指定所述 TURN服务器与所述远端节点之间的通 信协议为 TCP ;

程序 1 031还包括 TCP连接建立单元;

所述接收器 1 020-2接收的所述资源分配请求包括资源协议类 , 所述资 源协议类型指定所述 TURN服务器与所述远端节点之间的通信协议为 TCP;

TCP连接建立单元,用于利用所述转发地址和资 源端口建立与所述远端节 点之间的 TCP连接;

所述接收器 1 020-2 接收的所述 TURN数据包包括的复用标识, 具体用于 标识所述 TCP连接;

所述发送器 1 020-1用于通过所述复用标识所标识的通信通道 所述通信 数据发送给所述远端节点, 具体包括: 所述发送器 1 020-1用于通过所述复用 标识所标识的 TCP连接将所述通信数据发送给所述远端节点。

在建立上述 TCP连接时, 具体可以是所述 TURN服务器根据通信终端的连 接请求主动发起建立所述 TCP连接, 也可以是所述远端节点主动发起建立所 述 TCP连接。

对于所述 TURN服务器根据通信终端的连接请求主动发起 立所述 TCP连 接的实现方式:

资源分配单元 1031-1, 还用于在预先创建的配置信息对象中记录为所 述 配置信息对象分配的资源标识、 以及所述转发地址和资源端口, 并将所述资 源标识传输至发送单元 503 ;

发送器 1020-1, 还用于向所述通信终端发送所述资源标识;

所述接收器 1020-2, 还用于接收所述通信终端发送的连接请求, 所述连 接请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号;

所述 TCP连接建立单元, 具体用于获取记录所述资源标识的配置信息对 象, 从所述配置信息对象中读取所述转发地址和资 源端口, 并利用读取的所 述转发地址和资源端口、 以及所述连接请求中的所述远端节点的 IP地址和端 口号建立所述 TCP连接。

对于所述远端节点主动发起建立所述 TCP连接的实现方式:

程序 1031还包括第一许可单元;

资源分配单元 1031-1, 还用于在预先创建的配置信息对象中记录为所 述 配置信息对象分配的资源标识、 以及所述转发地址和资源端口, 并将所述资 源标识传输至发送单元 503 ;

发送器 1020-1, 还用于向所述通信终端发送所述资源标识;

所述接收器 1020-2, 还用于接收所述通信终端发送的许可创建请求 , 所 述许可创建请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并将所述许可创建请求传输至所述第一许可单 元; 还用于接收所述远端节点 发送的用于建立 TCP连接的 TCP连接请求, 所述 TCP连接请求的目的 IP地址 和目的端口号为所述转发地址和所述资源端口 , 所述 TCP连接请求的源 IP地 址和源端口为所述远端节点的 IP地址和端口号;

所述第一许可单元, 用于从所述接收器 1020-2 接收所述许可创建请求, 获取记录所述资源标识的配置信息对象, 在所述配置信息对象中记录许可信 息, 所述许可信息包括所述远端节点的 IP地址和端口号; 还用于在所述接收 器 1020-2接收到所述 TCP连接请求时, 获取记录了所述转发地址和资源端口 的配置信息对象, 判断所述配置信息对象的许可信息是否包括所 述远端节点 的 IP地址和端口号, 如果是则确定所述通信终端许可所述远端节点 利用所述 转发地址和资源端口与所述通信终端通信;

所述 TCP连接建立单元, 具体用于在所述第一许可单元确定所述通信终 端许可所述远端节点利用所述转发地址和资源 端口与所述通信终端通信时, 建立所述 TCP连接。

基于上述两种建立 TCP连接的实现方式:

所述 TCP连接建立单元, 还用于在所述配置信息对象中记录为所述 TCP 连接分配的连接标识与所述 TCP连接的对应关系;

所述发送器 1020-1, 将所述连接标识发送给所述通信终端;

所述接收器 1020-2接收的所述 TURN数据包包括的复用标识具体为所述 连接标识;

所述发送器 1020-1通过所述复用标识所标识的 TCP连接将所述通信数据 发送给所述远端节点, 具体包括: 所述发送器 1020-1获取记录所述连接标识 的配置信息对象, 根据所述配置信息对象中记录的所述连接标识 与所述 TCP 连接的对应关系确定所述 TCP连接, 并通过 TCP连接将所述通信数据发送给 所述远端节点。

在实施例 4的实施方式 1中, 所述接收器 1020-2, 还可以用于接收所述 远端节点通过所述 TCP连接发送的通信数据; 所述发送器 1 020-1, 还可以用 于将所述通信数据封装在 TURN数据包中发送给所述通信终端, 所述 TURN数 据包还包括所述复用标识。 在本发明实施例 4的实施方式 2中, 所述接收器 1020-2接收的所述资源 分配请求包括的资源协议类型指定所述 TURN服务器与所述远端节点之间的通 信协议为 UDP;

所述接收器 1020-2 接收的所述 TURN数据包包括的复用标识具体用于标 识所述转发地址和资源端口与所述远端节点之 间的 UDP通道;

所述发送器 1020-1, 具体用于根据所述复用标识获取所述转发地址 和资 源端口、 以及所述远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP 数据包中并将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP 地址和源端口号为所述转发地址和资源端口, 所述 UDP数据包的目的 I P地址 和目的端口号为所述远端节点的 IP地址和端口号。

在实施例 4的实施方式 2的一种可选实现方式中, 程序 1031还包括绑定 单元;

资源分配单元 1031-1, 还用于在预先创建的配置信息对象中记录为所 述 配置信息对象分配的资源标识、 以及所述转发地址和资源端口; 并将所述资 源标识传输至发送器 1020-1 ;

所述发送器 1020-1, 还用于从所述资源分配单元 1031-1 接收所述资源 标识, 并向所述通信终端发送所述资源标识; 从所述绑定单元接收所述绑定 单元分配的通道号, 并将所述通道号发送给所述通信终端;

所述接收器 1020-2, 还用于接收所述通信终端发送的通道绑定请求 , 所 述通道绑定请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并将所述通道绑定请求传输至所述绑定单元;

所述绑定单元, 用于从所述接收器 1020-2接收所述通道绑定请求, 获取 记录所述资源标识的配置信息对象; 在所述配置信息对象中记录为所述 UDP 通道分配的通道号和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP地址和端口号; 并将所述通道号传输至所述发送器 1 Q20-1 ;

所述发送器 1020-1用于根据所述复用标识获取所述转发地址 和所述资源 端口、 以及所述远端节点的 IP地址和端口号, 具体包括: 所述发送器 1020-1 用于获取记录所述通道号的配置信息对象, 并获取所述配置信息对象中记录 的所述转发地址和资源端口、 以及所述 UDP通道信息中的所述远端节点的 IP 地址和端口号。

在实施例 4的实施方式 2的另一种可选实现方式中:

所述资源分配单元 1031-1, 还用于在预先创建的配置信息对象中记录为 所述配置信息对象分配的资源标识、 以及所述转发地址和资源端口; 并将所 述资源标识传输至所述发送器 1020-1 ;

所述发送器 1020-1,还用于从所述资源分配单元 1031-1接收所述资源标 识, 并向所述通信终端发送所述资源标识;

所述接收器 1020-2 接收的所述 TURN数据包包括的复用标识具体包括所 述资源标识、 以及所述远端节点的 IP地址和端口号;

所述发送器 1020-1用于根据所述复用标识获取所述转发地址 和所述资源 端口、 以及所述远端节点的 IP地址和端口号, 具体包括: 所述发送器 1020-1 用于获取记录所述资源标识的配置信息对象, 并获取所述配置信息对象中记 录的转发地址和资源端口, 并获取所述 TURN数据包中的所述远端节点的 IP 地址和端口号。

基于上述两种可选实现方式,进一步地,程序 1031还包括第二许可单元; 所述接收器 1020-2, 还用于接收所述通信终端发送的许可创建请求 , 所 述许可创建请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并将所述许可创建请求传输至所述第二许可单 元; 还用于接收所述远端节点 发送的封装了通信数据的 UDP数据包, 所述 UDP数据包的目的 IP地址和目的 端口号为所述转发地址和所述资源端口, 所述 UDP数据包的源 IP地址和源端 口号为所述远端节点的 IP地址和端口号; 所述第二许可单元, 用于从所述接收器 1020-2 接收所述许可创建请求, 获取记录所述资源标识的配置信息对象, 在所述配置信息对象中记录许可信 息, 所述许可信息包括所述远端节点的 IP地址和端口号; 还用于在所述接收 器 1020-2接收到所述 UDP数据包时, 获取记录了所述转发地址和资源端口的 配置信息对象, 判断所述配置信息对象的许可信息是否包括所 述远端节点的 IP地址和端口号, 如果是则确定所述通信终端许可所述远端节点 利用所述转 发地址和资源端口与所述通信终端通信;

所述发送器 1020-1, 还用于在所述第二许可单元确定所述通信终端 许可 所述远端节点利用所述转发地址和资源端口与 所述通信终端通信时, 将所述 通信数据封装在 TUR 数据包中发送给所述通信终端, 所述 TURN数据包还包 括所述复用标识。 在本发明实施例 4的实施方式 3中, 所述接收器 1020-2接收的所述资源 分配请求包括的资源协议类型指定所述 TURN服务器与所述远端节点之间的通 信协议为 websocke t;

程序 1031还包括连接建立单元;

所述接收器 1020-2接收的所述资源分配请求包括资源协议类 型, 所述资 源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议为 websocke t ; 所述接收器 1020-2接收的所述 TURN数据包包括的复用标识具体 为所述连接建立单元生成的连接标识;

所述连接建立单元, 用于生成连接标识, 并记录所述连接标识与所述第 一 websocke t连接的对应关系、 以及所述连接标识与第二 websocke t连接的 对应关系, 所述第二 websocke t连接是所述 TURN服务器利用所述转发地址和 资源端口预先建立的与所述远端节点之间的 websocket连接, 并且所述 TURN 服务器与所述远端节点之间交互的消息是通过 所述第二 webs ocke t 连接进行 传输的; 并将所述连接标识传输至所述发送器 1020-1 ; 所述发送器 1020-1, 还用于从所述连接建立单元接收所述连接标识 , 并 将所述连接标识发送给所述通信终端;

所述发送器 1020-1用于通过所述复用标识所标识的通信通道 将所述通信 数据发送给所述远端节点, 具体包括: 所述发送器 1 020-1用于通过所述连接 标识所对应的所述第二 websocke t连接将所述 TUR 数据包发送给所述远端节 点。

进一步地, 所述接收器 1 020-2, 还用于向所述远端节点发送所述连接标 识; 接收所述远端节点发送的 TURN数据包并将所述 TURN数据包传输至所述 发送器 1020-1, 所述 TURN数据包包括通信数据和所述连接标识; 所述发送器 1020-1 , 还用于将所述连接标识发送给所述远端节点; 并用于从所述接收器 1020-2 接收所述 TURN数据包, 并将所述 TURN数据包发送给所述通信终端。

本发明实施例 4的实施方式 3存在如下两种可选实现方式, 其中, 在第 一种可选实现方式中, 所述 TURN服务器根据所述通信终端的连接请求建立 述通信终端与所述远端节点之间的虚拟连接; 在第二种可选实现方式中, 所 述 TURN服务器根据所述远端节点的连接请求建立 述通信终端与所述远端节 点之间的虚拟连接。

在实施例 4的实施方式 3的第一种可选实现方式中:

资源分配单元 1031-1, 还用于在预先创建的配置信息对象中记录为所 述 配置信息对象分配的资源标识、 以及所述转发地址和资源端口;

所述发送器 1020-1, 还用于向所述通信终端发送所述资源标识; 所述接收器 1020-2, 还用于接收所述通信终端发送的连接请求, 所述连 接请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并将所述 连接请求传输至所述连接建立单元;

所述连接建立单元, 具体用于从所述接收器 1020-2 接收所述连接请求, 并获取记录所述资源标识的配置信息对象, 根据所述配置信息对象中记录的 所述转发地址和资源端口、 以及所述连接请求中的远端节点的 IP地址和端口 号确定所述第二 websocket 连接, 在所述配置信息对象中记录所述连接标识 与所述第一 websocket 连接的对应关系、 以及所述连接标识与所述第二 websocket连接的对应关系, 并将所述连接标识传输至所述发送器 1020-1 ; 发送器 1020-1用于通过所述连接标识所对应的所述第二 websocket连接 将所述 TURN数据包发送给所述远端节点, 具体包括, 发送器 1020-1用于获 取记录所述连接标识的配置信息对象, 根据所述配置信息对象中记录的所述 连接标识与所述第二 websocket连接的对应关系确定所述第二 websocket连 接,并通过所述第二 websocke t连接将所述 TURN数据包发送给所述远端节点。

在实施例 4的实施方式 3的第二种可选实现方式中:

程序 1031还包括第三许可单元;

资源分配单元 1031-1, 还用于在预先创建的配置信息对象中记录为所 述 配置信息对象分配的资源标识、 以及所述转发地址和资源端口;

所述发送器 1020-1, 还用于向所述通信终端发送所述资源标识; 所述接收器 1020-2, 还用于接收所述通信终端发送的许可创建请求 , 所 述许可创建请求包括所述资源标识、 以及所述远端节点的 IP地址和端口号, 并将所述许可创建请求传输至所述第三许可单 元; 还用于接收所述远端节点 发送的连接请求, 所述连接请求包括所述通信终端的 IP地址和端口号;

所述第三许可单元, 用于获取记录所述资源标识的配置信息对象, 在所 述配置信息对象中记录许可信息, 所述许可信息包括所述远端节点的 IP地址 和端口号; 还用于在所述接收器 1 Q2 Q-2接收到所述连接请求时, 获取记录了 所述通信终端的 IP地址和端口号的配置信息对象, 判断所述配置信息对象中 的许可信息是否包括所述远端节点的 IP地址和端口号, 如果是则确定所述通 信终端许可所述远端节点利用所述转发地址和 资源端口与所述通信终端通 信;

所述连接建立单元, 具体用于在所述第三许可单元确定所述通信终 端许 可所述远端节点利用所述转发地址和资源端口 与所述通信终端通信时, 获取 记录所述资源标识的配置信息对象, 根据所述配置信息对象中记录的所述转 发地址和资源端口、 以及所述连接请求中的远端节点的 IP地址和端口号确定 所述第二 websocket 连接, 生成所述连接标识, 并在所述配置信息对象中记 录所述连接标识与所述第一 websocket 连接的对应关系、 以及所述连接标识 与所述第二 websocket 连接的对应关系, 并将所述连接标识传输至所述发送 器 1020-1;

发送器 1020-1用于通过所述连接标识所对应的所述第二 websocket连接 将所述 TURN数据包发送给所述远端节点, 具体包括, 发送器 1020-1用于获 取记录所述连接标识的配置信息对象, 根据所述配置信息对象中记录的所述 连接标识与所述第二 websocket连接的对应关系确定所述第二 websocket连 接,并通过所述第二 websocket连接将所述 TURN数据包发送给所述远端节点。

程序 1031中各单元的具体实现参见本发明实施例 2中的相应单元, 在此 不赘述。

本发明实施例 4 中描述的功能单元可以用来实施上述实施例 1所述的方 法。 如图 9所示, 本发明实施例 5提供了一种通信终端 2000, 通信终端 2000 位于局域网中, 公网中的 TURN服务器和通信终端 600之间交互的消息是通过 预先建立的第一网络套接字 websocket连接进行传输的。通信终端 2000包括: 处理器(processor) 2010、 发送器 ( transmitter ) 2020-1、 接收器 ( receiver )2020-2 、存储器(memory) 2030和总线 2040。其中,处理器 2010、 发送器 2020-1、接收器 2020-2和存储器 2030之间通过总线 2040完成相互间 的通信。

发送器 2020-1, 接收器 2020-2, 用于与网元通信。

存储器 2030, 用于存放程序 2031, 具体地, 程序 2031可以包括程序代 码, 所述程序代码包括计算机操作指令。 存储器 2030可能包含高速 RAM存储 器, 也可能还包括非易失性存储器 (non- vo l a t i l e memory ), 例如至少一个 磁盘存储器。

处理器 2010,用于执行所述存储器 2030中存放的程序 2031。处理器 2010 具体可以是一个中央处理器(CPU, cent ra l proces s i ng uni t ), 是计算机核 心单元。

具体地, 程序 2031可以包括: TURN数据包生成单元 2031-1 ;

所述发送器 2020-1, 用于向所述 TURN服务器发送资源分配请求, 以使得 所述 TURN服务器为所述通信终端分配转发地址和资 端口, 所述转发地址和 资源端口为所述 TURN服务器自身的 IP地址和端口;

所述 TURN数据包生成单元 2031-1, 用于生成 TURN数据包, 所述 TURN数 据包包括通信数据和复用标识, 所述复用标识用于标识所述转发地址和资源 端口与所述通信数据对应的远端节点之间的通 信通道; 并将所述 TURN数据包 传输至所述发送器 2 Q20-1 ;

所述发送器 2020-1, 还用于从所述 TURN数据包生成单元 2031-1接收所 述 TURN数据包,并向所述 TURN服务器发送所述 TURN数据包,以使得所述 TURN 服务器通过所述复用标识所标识的通信通道将 所述通信数据发送给所述远端 节点。

下面分别描述本发明实施例 5的 3种实施方式。 其中, 在实施例 5的实 施方式 1中, 所述 TURN服务器与所述远端节点之间的通信协议为 TCP; 在实 施例 5的实施方式 2中, 所述 TURN服务器与所述远端节点之间的通信协议为 UDP; 在实施例 5的实施方式 3中, 所述 TURN服务器与所述远端节点之间的 通信协议为 websocke t。 在本发明实施例 5的实施方式 1中, 所述发送器 2020-1发送的所述资源 分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN服务器与所述 远端节点之间的通信协议为 TCP; 所述 TURN数据包生成单元 2031 -1生成的所述 TURN数据包包括的复用标 识具体用于标识所述 TURN服务器利用所述转发地址和资源端口建立 与所述 远端节点之间的 TCP连接, 以使得所述 TURN服务器通过所述复用标识所标识 的 TCP连接将所述通信数据发送给所述远端节点。

在建立上述 TCP连接时, 具体可以是所述 TURN服务器根据通信终端的连 接请求主动发起建立所述 TCP连接, 也可以是所述远端节点主动发起建立所 述 TCP连接。

对于所述 TURN服务器根据通信终端的连接请求主动发起 立所述 TCP连 接的实现方式: 接收器 202 0-2, 还用于接收所述 TURN服务器在预先创建的配 置信息对象中记录为所述配置信息对象分配的 资源标识、 以及所述转发地址 和资源端口后发送的资源标识; 所述发送器 2020-1,还用于向所述 TURN服务 器发送连接请求, 所述连接请求包括所述资源标识、 以及所述远端节点的 IP 地址和端口号, 以使得: 所述 TURN服务器获取记录所述资源标识的配置信息 对象, 从所述配置信息对象中读取所述转发地址和资 源端口, 并利用读取的 所述转发地址和资源端口、 以及所述连接请求中的所述远端节点的 IP地址和 端口号建立所述 TCP连接。

在实施例 5的实施方式 1中, 所述接收器 2020-2, 还用于接收所述 TURN 服务器发送的封装了通信数据的 TURN数据包, 所述 TURN数据包还包括所述 复用标识; 其中, 所述通信数据是所述 TURN服务器通过所述 TCP连接接收自 所述远端节点的。 在实施例 5的实施方式 2中, 所述发送器 2020-1发送的所述资源分配请 求包括资源协议类型, 所述资源协议类型指定所述 TURN服务器与所述远端节 点之间的通信协议为 UDP;

所述 TURN数据包生成单元 2031 -1生成的所述 TURN数据包包括的复用标 识具体用于标识所述转发地址和资源端口与所 述远端节点之间的 UDP通道, 以使得: 所述 TURN服务器根据所述复用标识获取所述转发地 和资源端口、 以及所述远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包中 并将所述 UDP数据包发送给所述远端节点, 所述 UDP数据包的源 IP地址和源 端口号为所述转发地址和资源端口, 所述 UDP数据包的目的 IP地址和目的端 口号为所述远端节点的 IP地址和端口号。

所述接收器 2020-2,还用于接收所述 TURN服务器发送的封装了接收自所 述远端节点的通信数据的 TURN数据包, 所述 TURN数据包还包括所述复用标 识。 在本发明实施例 5的实施方式 3中:

所述发送器 2020-1发送的所述资源分配请求包括资源协议类 型, 所述资 源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议为 websocke t;

所述接收器 2020-2, 用于接收所述 TURN服务器发送的连接标识, 其中, 所述 TURN服务器记录了所述连接标识与所述第一 websocke t 连接的对应关 系、 以及所述连接标识与所述第二 websocke t 连接的对应关系, 所述第二 websocke t连接是所述 TURN服务器利用所述转发地址和资源端口预先 立的 与所述远端节点之间的 webs ocke t连接, 并且所述 TURN服务器与所述远端节 点之间交互的消息是通过所述第二 webs ocke t连接进行传输的;

所述 TURN数据包生成单元 2031-1生成的所述 TURN数据包包括的复用标 识具体为所述连接标识, 以使得所述 TURN服务器通过所述连接标识所对应的 所述第二 websocke t连接将所述 TURN数据包发送给所述远端节点。

进一步地, 所述接收器 2020-2, 还用于接收所述 TURN服务器发送的接收 自所述远端节点的 TURN数据包, 所述 TURN数据包包括通信数据和所述连接 标识; 其中, 所述远端节点添加到所述 TURN数据包中的所述连接标识是预先 接收自所述 TURN服务器的。 程序 2031中各单元的具体实现参见本发明实施例 3中的相应单元, 在此 不赘述。

本发明实施例 5 中描述的功能单元可以用来实施上述实施例 1所述的方 法。 根据本发明实施例 1至 5, 本发明实施例 6提出了一种通信系统 4000。 如图 1 0-1所示, 所述通信系统包括公网中的 TURN服务器和局域网中的 通信终端, 所述 TURN服务器和所述通信终端之间交互的消息是 过预先建立 的第一网络套接字 webs ocke t连接进行传输的;

所述 TURN服务器, 用于接收所述通信终端发送的资源分配请求, 并为所 述通信终端分配转发地址和资源端口, 所述转发地址和资源端口为所述 TURN 服务器自身的 IP地址和端口; 还用于接收所述通信终端发送的 TURN数据包, 所述 TURN数据包包括通信数据和复用标识, 所述复用标识用于标识所述转发 地址和资源端口与所述通信数据对应的远端节 点之间的通信通道; 还用于通 过所述复用标识所标识的通信通道将所述通信 数据发送给所述远端节点; 所述通信终端, 用于向所述 TURN服务器发送所述资源分配请求, 并用于 向所述 TURN服务器发送所述 TURN数据包。

所述资源分配请求包括资源协议类型, 所述资源协议类型指定所述 TURN 服务器与所述远端节点之间的通信协议,具体 可以是 TCP 、 UDP或 webs ocke t。

下面分别描述本发明实施例 2的 3种实施方式。 其中, 在实施例 2的实 施方式 1中, 所述 TURN服务器与所述远端节点之间的通信协议为 TCP; 在实 施例 2的实施方式 2中, 所述 TURN服务器与所述远端节点之间的通信协议为 UDP; 在实施例 2的实施方式 3中, 所述 TURN服务器与所述远端节点之间的 通信协议为 websocke t。

在本发明实施例 6的实施方式 1 中, 所述通信终端发送的所述资源分配 请求包括资源协议类型, 所述资源协议类型指定所述 TURN服务器与所述远端 节点之间的通信协议为 TCP;

所述 TURN服务器, 还用于利用所述转发地址和资源端口、 以及所述远端 节点的 IP地址和端口号建立与所述远端节点之间的 TCP连接;

所述通信终端发送的所述 TURN数据包包括的复用标识具体用于标识所述 TCP连接;

所述 TURN服务器, 用于通过所述复用标识所标识的通信通道将所 述通信 数据发送给所述远端节点, 具体包括: 所述 TURN服务器, 用于通过所述复用 标识所标识的 TCP连接将所述通信数据发送给所述远端节点。 在本发明实施例 6的实施方式 2 中, 所述通信终端发送的所述资源分配 请求包括资源协议类型, 所述资源协议类型指定所述 TURN服务器与所述远端 节点之间的通信协议为 UDP;

所述通信终端发送的所述 TURN数据包包括的复用标识具体用于标识所述 转发地址和资源端口与所述远端节点之间的 UDP通道;

所述 TURN服务器, 用于通过所述复用标识所标识的通信通道将所 述通信 数据发送给所述远端节点, 具体包括: 所述 TURN服务器, 用于根据所述复用 标识获取所述转发地址和资源端口、 以及所述远端节点的 IP地址和端口号, 将所述通信数据封装到 UDP数据包中并将所述 UDP数据包发送给所述远端节 点, 所述 UDP数据包的源 IP地址和源端口号为所述转发地址和资源端口 所 述 UDP数据包的目的 IP地址和目的端口号为所述远端节点的 IP地址和端口 号。

在实施例 6的实施方式 2的一种可选实现方式中:

所述 TURN服务器, 还用于在预先创建的配置信息对象中记录为所 述配置 信息对象分配的资源标识、 以及所述转发地址和资源端口; 向所述通信终端 发送所述资源标识; 接收所述通信终端发送的通道绑定请求, 所述通道绑定 请求包括所述资源标识、 以及所述远端节点的 I P地址和端口号, 并获取记录 所述资源标识的配置信息对象; 在所述配置信息对象中记录为所述 UDP通道 分配的通道号和 UDP通道信息, 所述 UDP通道信息包括所述远端节点的 IP地 址和端口号; 并将所述通道号发送给所述通信终端;

所述通信终端发送的所述 TURN数据包包括的复用标识具体为所述通道 号;

所述 TURN服务器, 用于根据所述复用标识获取所述转发地址和所 述资源 端口、 以及所述远端节点的 IP地址和端口号, 具体包括: 所述 TURN服务器 获取记录所述通道号的配置信息对象, 并获取所述配置信息对象中记录的所 述转发地址和资源端口、 以及所述 UDP通道信息中的所述远端节点的 I P地址 和端口号;

所述通信终端, 还用于接收所述 TURN服务器发送的所述资源标识, 并用 于向所述 TURN服务器发送所述通道绑定请求。 在本发明实施例 2的实施方式 3中:

所述通信终端发送的所述资源分配请求包括资 源协议类型, 所述资源协 议类型指定所述 TURN服务器与所述远端节点之间的通信协议为 webs ocke t ; 所述 TURN服务器, 还用于生成连接标识, 并记录所述连接标识与所述第 一 websocke t连接的对应关系、 以及所述连接标识与第二 websocke t连接的 对应关系, 并将所述连接标识发送给所述通信终端; 所述第二 webs ocke t 连 接是所述 TURN服务器利用所述转发地址和资源端口预先 立的与所述远端节 点之间的 websocke t连接, 并且所述 TURN服务器与所述远端节点之间交互的 消息是通过所述第二 websocke t连接进行传输的;

所述通信终端发送的所述 TURN数据包包括的复用标识具体为所述连接标 识;

所述 TURN服务器, 用于通过所述复用标识所标识的通信通道将所 述通信 数据发送给所述远端节点, 具体包括: 所述 TURN服务器, 用于通过所述连接 标识所对应的所述第二 webs ocke t连接将所述 TUR 数据包发送给所述远端节 点。 如图 1 0-2所示, 基于实施例 6、 实施例 6的实施方式 1、 或者实施例 6 的实施方式 2, 进一步地, 所述通信系统还可以包括所述远端节点, 所述远端 节点具体为公网中的 TURN服务器 4030, TURN服务器 4030和另一局域网中的 通信设备之间交互的消息是通过预先建立的第 三 webs ocke t连接进行传输的; 所述远端节点的 IP地址和端口号, 具体为 TURN服务器 4030在接收到所 述通信设备的资源分配请求后为所述通信设备 分配的转发地址和资源端口;

TUR 服务器 4030, 还用于将接收自所述 TURN服务器的通信数据封装在 TUR 数据包中发送给所述通信设备, 所述 TURN数据包包括所述复用标识。

进一步地, 在实施方式 1中, 所述远端节点 (TURN服务器 4030 )通过所 述 TCP连接发送给所述 TURN服务器的通信数据接收自所述通信设备, 体地, TUR 服务器 4030还用于接收所述通信设备发送的 TURN数据,所述 TURN数据 包括所述通信数据和所述复用标识。

在具体实现时, TUR 服务器 4010和 TURN服务器 4030可以位于同一个物 理实体, 也可以位于不同的物理实体。

本发明实施例 6 中描述的通信系统可以用来实施上述实施例 1所述的方 法。 对于前述的各方法实施例, 为了简单描述, 故将其都表述为一系列的动 作组合, 但是本领域技术人员应该知悉, 本发明并不受所描述的动作顺序的 限制, 因为依据本发明, 某些步骤可以采用其他顺序或者同时进行。 其次, 本领域技术人员也应该知悉, 说明书中所描述的实施例均属于优选实施例, 所涉及的动作和模块并不一定是本发明所必须 的。 本领域普通技术人员可以意识到, 结合本文中所公开的实施例描述的各 示例的单元及算法步骤, 能够以电子硬件、 或者计算机软件和电子硬件的结 合来实现。 这些功能究竟以硬件还是软件方式来执行, 取决于技术方案的特 定应用和设计约束条件。 专业技术人员可以对每个特定的应用来使用不 同方 法来实现所描述的功能, 但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到, 为描述的方便和简洁, 上述描 述的系统、 装置和单元的具体工作过程, 可以参考前述方法实施例中的对应 过程, 在此不再赘述。

在本申请所提供的几个实施例中, 应该理解到, 所揭露的系统、 装置和 方法, 可以通过其它的方式实现。 例如, 以上所描述的装置实施例仅仅是示 意性的, 例如, 所述单元的划分, 仅仅为一种逻辑功能划分, 实际实现时可 以有另外的划分方式, 例如多个单元或组件可以结合或者可以集成到 另一个 系统, 或一些特征可以忽略, 或不执行。 另一点, 所显示或讨论的相互之间 的耦合或直接耦合或通信连接可以是通过一些 接口, 装置或单元的间接耦合 或通信连接, 可以是电性, 机械或其它的形式。 为单元显示的部件可以是或者也可以不是物理 单元, 即可以位于一个地方, 或者也可以分布到多个网络单元上。 可以根据实际的需要选择其中的部分或 者全部单元来实现本实施例方案的目的。

另外, 在本发明各个实施例中的各功能单元可以集成 在一个处理单元中, 也可以是各个单元单独物理存在, 也可以两个或两个以上单元集成在一个单 元中。

所述功能如果以软件功能单元的形式实现并作 为独立的产品销售或使用 时, 可以存储在一个计算机可读取存储介质中。 基于这样的理解, 本发明的 技术方案本质上或者说对现有技术做出贡献的 部分或者该技术方案的部分可 以以软件产品的形式体现出来, 该计算机软件产品存储在一个存储介质中, 包括若干指令用以使得一台计算机设备(可以 是个人计算机, 服务器, 或者 网络设备等)执行本发明各个实施例所述方法 的全部或部分步骤。 而前述的 存储介质包括: U盘、 移动硬盘、 只读存储器(ROM, Read-Onl y Memory ) 、 随机存取存储器 (RAM, Random Acces s Memory ) 、 磁碟或者光盘等各种可以 存储程序代码的介质。

以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限 于此, 任何熟悉本技术领域的技术人员在本发明揭露 的技术范围内, 可轻易 想到变化或替换, 都应涵盖在本发明的保护范围之内。 因此, 本发明的保护 范围应所述以权利要求的保护范围为准。