使用TURN服务器进行对等2对等通信

时间:2015-08-27 15:12:48

标签: c# sockets udp udpclient turn

我对TURN很新,我想创建一个实验性应用程序,需要TURN服务器进行udp通信。

我已经使用过UDP打孔了,我对这个主题很熟悉。我也知道NAT类型和端口映射的UPnP。

要使用没有UPnP功能的路由器解决对称和端口限制NAT中的端口映射,我必须与TURN服务器通信并通过它发送UDP数据包。但我不知道如何与TURN服务器通信以及如何工作在C# programming.

中使用它

如果你能指出我正确的方向并给我一些指示,我会很感激。

感谢。

2 个答案:

答案 0 :(得分:0)

我可以回答有关如何使用TURN完成中继呼叫的问题。但要知道如何为TURN形成消息,您需要阅读RFC。

TURN如何运作

需要TURN,因为它无法绕过某些NAT过滤并与主机建立直接连接。由于TURN位于公共IP上,任何人都可以与它连接。

因此,对称NAT下的主机可以向TURN服务器发送分配请求,TURN服务器将为主机分配端口。现在主机将拥有另一方的IP信息。它将向TURN发送另一个请求,指定其他主机的IP信息,来自分配端口中其他主机的数据包将被转发到对称NAT后面的主机。来自对称NAT后面的主机的数据包将被转发到另一台主机。这样他们就可以创建一个中继连接。

您真的需要阅读RFC for TURN以更详细地了解这一点。你需要的一切都在那里。

答案 1 :(得分:0)

@tahili我看到这是一个老帖子,但我想问你一个问题。 如果Turn服务器可以到达对等服务器自反地址,为什么客户端不能直接将包发送到对等的自反地址。如果客户端由于映射问题无法直接向对等方发送数据,那么转向服务器如何将udp发送到对等服务器自反地址。 请注意,您尚未联系转弯服务器"客户端的中继地址",因此转弯服务器(客户端的中继地址)与对等方之间没有映射。 仅仅了解同伴反身地址也是不够的。毕竟我们可以直接将数据发送给同伴。

假设同行也支持NAT。