1

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

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

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

如果您能指出正确的方向并给我一些指示,我将不胜感激。

谢谢。

4

2 回答 2

0

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

假设对等点也在 NAT 后面。

于 2017-05-19T03:12:37.697 回答
0

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

转的工作原理

TURN 是必需的,因为它不可能绕过某些 NAT 过滤并与主机建立直接连接。由于 TURN 位于公共 IP 上,因此任何人都可以连接到它。

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

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

于 2015-09-01T12:48:47.760 回答