使用TURN服务器进行对等通信
本文关键字:对等 通信 TURN 服务器 使用 | 更新日期: 2023-09-27 18:10:02
我是TURN的新手,我想创建一个需要TURN服务器进行udp通信的实验性应用程序。
我已经使用过UDP打孔,我熟悉这个主题。我也知道NAT类型和端口映射的UPnP。
为了解决没有UPnP能力的路由器的对称和端口限制nat中的端口映射,我必须与TURN服务器通信并通过它发送UDP数据包。但是我不知道如何与TURN服务器通信以及如何在C# programming.
如果您能给我指出正确的方向并给我一些指点,我将不胜感激。
谢谢。
我可以回答如何使用TURN来完成中继呼叫。但是要了解如何为TURN形成消息,您需要阅读RFC。
How TURN Works
需要使用TURN,因为不可能绕过某些nat过滤并与主机建立直接连接。当TURN位于公共IP上时,任何人都可以连接到它。
所以对称NAT下的主机可以向TURN服务器发送分配请求,TURN服务器会为主机分配一个端口。现在主机会有对方的IP信息。然后再向TURN发送另一个请求,指定另一个主机的IP信息,在分配的端口中,另一个主机的数据包将被转发到对称NAT后的主机,而对称NAT后的主机的数据包将被转发到另一个主机。这样他们就建立了一个中继连接。
您确实需要阅读TURN的RFC以了解更多细节。
@tahili我看到这是一个旧的帖子,但我想问你一个问题。如果Turn服务器可以到达对等体的服务器反射地址,为什么客户端不能直接将包发送到对等体的反射地址呢?如果客户端不能直接发送数据到对等端,因为映射问题,如何转服务器可以发送一个udp到对等端服务器的反射地址。请注意,对等端还没有联系到"客户端的中继地址",所以在对等端和中转服务器(客户端的中继地址)之间没有映射关系。仅仅知道对等体的自反地址是不够的。毕竟我们可以直接把数据发送给对等端。
假设它的对等体也在NAT后面。