TURN 服务器如何向 NAT 后面的对等方发送数据?

Kri*_*ris 3 stun webrtc turn

我知道 TURN 中有 a client、 aTURN serverpeer(s)。客户端本身在 TURN 服务器上创建一个分配,之后relayed transport address将 a 返回给客户端,以便将数据发送到一个或多个对等点。

我了解客户端如何绕过其 NAT,但是我在 RFC5766 中没有看到任何有关对等方本身如何能够通过其 NAT 从 TURN 服务器接受 UDP 的内容(否则无论是否通过 TURN,它都将是主动提供的) UDP)。对等点必须首先联系 TURN 服务器。

我缺少一个步骤吗?是否relayed transport address发送到对等方,以便在 TURN 服务器与其对等方之间进行通信之前可以开始 UDP 打洞?

Phi*_*cke 5

客户端在 TURN 服务器上创建分配,例如在 8.8.8.8 端口 3478 上运行。为此,它将 STUN 数据包从本地套接字发送到该地址。所有 NAT(忽略阻止 UDP 的网络)都将允许 TURN 服务器通过该连接发回 UDP 数据(有时称为 NAT 绑定)。TURN 服务器还可以通过该连接发送它想要的任何其他数据。

对等方不知道此分配。它只知道 TURN 服务器告诉客户端的中继地址,例如 8.8.8.8 端口 61468。客户端必须将此地址发送给对等方,例如作为 ICE 过程中信令的一部分(请参阅https://www.rfc -editor.org/rfc/rfc5245)。

然后,对等方可以发送 8.8.8.8 端口 61468(有时客户端还必须告诉 TURN 服务器对等方可以发送的 ip;请参阅https://www.rfc-editor.org/rfc/rfc5766中的权限)。然后,TURN 服务器将转发它在该端口上接收到的任何流量作为 STUN 数据指示(或通过通道绑定,请参阅 RFC 5766)。NAT 可以接受,因为它来自 8.8.8.8 端口 3478。

客户端还可以通过 STUN 发送指示向对等方发送数据。TURN 服务器将解开此数据并将其从中继地址(8.8.8.8 端口 61468)发送

就双方的 NAT 而言,它们只能看到与其客户端首先发送数据包的 ip 和端口进行通信。

  • 这是完全有道理的。我确实没有在 RFC 中看到任何有关对等方首先将数据发送到中继传输地址的内容。我想一定是这样。谢谢您的详细信息! (2认同)