TURN中继场景下,Peer A能否通过TCP连接中继端口?
问题场景
- Client与Peer A无法直接连接,Client已通过自身
Turn server分配到一个中继端口 - 已知Client可通过TCP连接
Turn server,想了解Peer A能否通过TCP连接该中继端口
对应的拓扑图:
Peer A Server-Reflexive +---------+ Transport Address | | 192.0.2.150:32102 | | | /| | TURN | / ^| Peer A | Client's Server | / || | Host Transport Transport | // || | Address Address | // |+---------+ 198.51.100.2:49721 192.0.2.15:3478 |+-+ // Peer A | | ||N| / Host Transport | +-+ | ||A|/ Address | | | | v|T| 203.0.113.2:49582 | | | | /+-+ +---------+| | | |+---------+ / +---------+ | || |N| || | // | | | TURN |v | | v| TURN |/ | | | Client |----|A|-------| Server |------------------| Peer B | | | | |^ | |^ ^| | | | |T|| | || || | +---------+ | || +---------+| |+---------+ | || | | | || | | +-+| | | | | | | | | Client's | Peer B Server-Reflexive Relayed Transport Transport Address Transport Address Address 192.0.2.1:7000 192.0.2.15:50000 192.0.2.210:49191 Figure 1
解答
可以,但需要满足以下几个关键前提:
- TURN服务器支持TCP中继:所用的TURN服务器必须配置允许TCP类型的中继连接,主流TURN服务(如coturn)默认可开启该功能。
- 中继端口开启TCP监听:TURN服务器为Client分配的中继端口(如图中
192.0.2.15:50000)必须启用TCP监听,而非仅支持UDP。 - 网络路径可达:Peer A所在网络的防火墙、路由策略允许发起对该中继端口的TCP连接,没有拦截规则限制。
具体操作逻辑:
- Client通过TCP与TURN服务器建立控制连接,完成中继端口分配、权限申请等操作。
- Client需向TURN服务器发送权限请求(Permission Request),授权Peer A的目标地址(无论是Host地址
203.0.113.2:49582还是Server-Reflexive地址192.0.2.150:32102)访问该中继端口。 - 授权完成后,Peer A即可发起TCP连接到TURN服务器的中继端口,TURN服务器会将该连接的数据转发至Client的TCP控制连接,实现双方数据交互。
内容的提问来源于stack exchange,提问作者progquester
相关产品推荐
相关产品推荐

