使用 TURN 服务器进行点对点通信
Using TURN server for peer-2-peer communication
我是 TURN 的新手,我想创建一个需要 TURN 服务器进行 udp 通信的实验性应用程序。
我已经使用过 UDP 打孔并且我熟悉 subject.Also 我知道 NAT 类型和用于端口映射的 UPnP。
要使用不具备 UPnP 功能的路由器解决对称和端口受限 NAT 中的端口映射,我必须与 TURN 服务器通信并通过 it.But 发送 UDP 数据包我不知道如何与 TURN 服务器通信以及如何在 C# programming.
中使用它
如果你能指出正确的方向并给我一些指示,我将不胜感激。
谢谢。
我可以回答如何使用TURN 完成中继呼叫。但是要了解如何为 TURN 形成消息,您需要阅读 RFC。
TURN 的工作原理
需要 TURN,因为它不可能绕过某些 NAT 过滤并与主机建立直接连接。由于 TURN 位于 public IP 上,任何人都可以连接它。
所以对称NAT下的主机可以向TURN服务器发送分配请求,TURN服务器会为主机分配一个端口。现在主机就会有对方的IP信息。它将向 TURN 发送另一个请求,指定其他主机的 IP 信息,来自分配端口中其他主机的数据包将被转发到对称 NAT 后面的主机。来自对称 NAT 后面的主机的数据包将被转发到另一台主机。这样他们就创建了一个中继连接。
您确实需要阅读 TURN 的 RFC 才能更详细地了解这一点。应有尽有。
@tahili 我看到这是一个旧的 post 但我想问你一个问题。
如果 Turn 服务器可以到达对等方的服务器自反地址,为什么客户端不能直接将包发送到对等方的自反地址。如果客户端由于映射问题而无法直接向对等方发送数据,那么轮流服务器如何向对等方服务器反射地址发送 udp。
请注意,您的对等方尚未联系转弯服务器 "relay address of the client",因此转弯服务器(客户端的中继地址)与对等方之间没有映射。
仅了解对等点的反身地址是不够的。毕竟我们可以直接向对端发送数据。
假设 peer 也在 NAT 后面。
我是 TURN 的新手,我想创建一个需要 TURN 服务器进行 udp 通信的实验性应用程序。
我已经使用过 UDP 打孔并且我熟悉 subject.Also 我知道 NAT 类型和用于端口映射的 UPnP。
要使用不具备 UPnP 功能的路由器解决对称和端口受限 NAT 中的端口映射,我必须与 TURN 服务器通信并通过 it.But 发送 UDP 数据包我不知道如何与 TURN 服务器通信以及如何在 C# programming.
如果你能指出正确的方向并给我一些指示,我将不胜感激。
谢谢。
我可以回答如何使用TURN 完成中继呼叫。但是要了解如何为 TURN 形成消息,您需要阅读 RFC。
TURN 的工作原理
需要 TURN,因为它不可能绕过某些 NAT 过滤并与主机建立直接连接。由于 TURN 位于 public IP 上,任何人都可以连接它。
所以对称NAT下的主机可以向TURN服务器发送分配请求,TURN服务器会为主机分配一个端口。现在主机就会有对方的IP信息。它将向 TURN 发送另一个请求,指定其他主机的 IP 信息,来自分配端口中其他主机的数据包将被转发到对称 NAT 后面的主机。来自对称 NAT 后面的主机的数据包将被转发到另一台主机。这样他们就创建了一个中继连接。
您确实需要阅读 TURN 的 RFC 才能更详细地了解这一点。应有尽有。
@tahili 我看到这是一个旧的 post 但我想问你一个问题。 如果 Turn 服务器可以到达对等方的服务器自反地址,为什么客户端不能直接将包发送到对等方的自反地址。如果客户端由于映射问题而无法直接向对等方发送数据,那么轮流服务器如何向对等方服务器反射地址发送 udp。 请注意,您的对等方尚未联系转弯服务器 "relay address of the client",因此转弯服务器(客户端的中继地址)与对等方之间没有映射。 仅了解对等点的反身地址是不够的。毕竟我们可以直接向对端发送数据。
假设 peer 也在 NAT 后面。