searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

中继服务介绍-turnserver

2023-10-24 09:29:59
166
0

1. 背景

目前很多电脑都在NAT之后,那么两个在nat之后的电脑可能无法正常的通信,即使进行了nat打洞。

为此可以实现一种机制,可以协助两客户端可以互相通信。

2. 主流程

stun协议说明:datatracker.ietf.org/doc/html/rfc3489

stun协议扩展:datatracker.ietf.org/doc/html/rfc5389

turn协议说明:datatracker.ietf.org/doc/html/rfc5766

c实现:github.com/coturn/coturn

go实现:github.com/pion

2.1. 主要的使用场景及现实的网络模型:

这里有三种角色,turnclient、turnserver、peer

turnclient:使用中继服务的客户端

turnserver:提供中继服务的服务端,需具备公网ip

peerA、peerB:对端客户端,无需安装相关软件,提供基本的udp发包和收包即可

目标:turnclient 与 peerA、peerB通知进行通信

2.2. turnclient与peerA通信建立的主要步骤

两个在NAT网络内的客户端基于turnserver想进行通信,主要有如下三步:

1.turnclient主动请求turnserver,发送allocate request请求,获取relay地址

2.peerA主动连接relay地址,获取出网ip&port

3.turnclient主动请求turnserver,将对端peerA的出网ip&port 添加进relay地址许可中

4.turnclient封装stun协议消息,将消息传给turnserver 3478端口,turnserver将消息从relay地址发送给对应的peerA

5.peerA与turnclient通信,则直接将消息发送给relay地址,turnclient内部进行中转,将消息从3478端口发送给turnclient

 

此时如果peerB想与turnclient通信

1.peerB主动连接relay地址,获取出网ip&port

2.重复上面3-5步即可

 

核心点:

turnclient的relay端口可以接受任何peer端的消息,进而收到消息,turnclient发送给peer端的消息会通过turnserver relay端口转发给对应的peer端

 

0条评论
0 / 1000
郑****辉
6文章数
0粉丝数
郑****辉
6 文章 | 0 粉丝
郑****辉
6文章数
0粉丝数
郑****辉
6 文章 | 0 粉丝
原创

中继服务介绍-turnserver

2023-10-24 09:29:59
166
0

1. 背景

目前很多电脑都在NAT之后,那么两个在nat之后的电脑可能无法正常的通信,即使进行了nat打洞。

为此可以实现一种机制,可以协助两客户端可以互相通信。

2. 主流程

stun协议说明:datatracker.ietf.org/doc/html/rfc3489

stun协议扩展:datatracker.ietf.org/doc/html/rfc5389

turn协议说明:datatracker.ietf.org/doc/html/rfc5766

c实现:github.com/coturn/coturn

go实现:github.com/pion

2.1. 主要的使用场景及现实的网络模型:

这里有三种角色,turnclient、turnserver、peer

turnclient:使用中继服务的客户端

turnserver:提供中继服务的服务端,需具备公网ip

peerA、peerB:对端客户端,无需安装相关软件,提供基本的udp发包和收包即可

目标:turnclient 与 peerA、peerB通知进行通信

2.2. turnclient与peerA通信建立的主要步骤

两个在NAT网络内的客户端基于turnserver想进行通信,主要有如下三步:

1.turnclient主动请求turnserver,发送allocate request请求,获取relay地址

2.peerA主动连接relay地址,获取出网ip&port

3.turnclient主动请求turnserver,将对端peerA的出网ip&port 添加进relay地址许可中

4.turnclient封装stun协议消息,将消息传给turnserver 3478端口,turnserver将消息从relay地址发送给对应的peerA

5.peerA与turnclient通信,则直接将消息发送给relay地址,turnclient内部进行中转,将消息从3478端口发送给turnclient

 

此时如果peerB想与turnclient通信

1.peerB主动连接relay地址,获取出网ip&port

2.重复上面3-5步即可

 

核心点:

turnclient的relay端口可以接受任何peer端的消息,进而收到消息,turnclient发送给peer端的消息会通过turnserver relay端口转发给对应的peer端

 

文章来自个人专栏
中继服务
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0