我有一个 WebRTC MCU ( kurento ) 在公共 IP 地址上运行,为一些只发送或只接收音频的客户端提供服务所以每个客户端都直接与具有公共 IP 地址的 MCU(而不是彼此)连接。
Q1:是否还需要使用 STUN 和 TURN 进行 NAT 穿越??如果是这样为什么?
Q2:浏览器中的 WebRTC 是否有任何 hack 可以消除 STUN 和 TURN 的需要?
在我看来:大多数客户端-服务器架构对 NAT 后面的客户端没有任何困难。与 webrtc 有什么区别?
我有一个 WebRTC MCU ( kurento ) 在公共 IP 地址上运行,为一些只发送或只接收音频的客户端提供服务所以每个客户端都直接与具有公共 IP 地址的 MCU(而不是彼此)连接。
Q1:是否还需要使用 STUN 和 TURN 进行 NAT 穿越??如果是这样为什么?
Q2:浏览器中的 WebRTC 是否有任何 hack 可以消除 STUN 和 TURN 的需要?
在我看来:大多数客户端-服务器架构对 NAT 后面的客户端没有任何困难。与 webrtc 有什么区别?
是的,对于 WebRTC,ICE 是绝对必须的。
Q1:是否还需要使用 STUN 和 TURN 进行 NAT 穿越??如果是这样为什么?
对于您的场景,您不需要使用 STUN 或 TURN。让我解释一下为什么。
私有网络中的每个客户端都处于某种具有公共 IP 地址的 NAT 之下。外界不知道该客户端的私有 IP 地址,即使他们知道在不知道该公共 IP 地址的情况下也无法与客户端连接。STUN 服务器用于收集此公共 IP 地址。
因此,如果您的服务器想要启动连接,那么它需要客户端发送其 NAT 的公共 IP。客户端将使用 STUN 服务器知道其公共 IP 并将其发送到服务器。但如果客户端发起连接,则无需知道 NAT 的公共 IP。客户端可以向公共服务器发送数据包以发起连接。服务器可以从客户端数据包中知道客户端的公共 IP,然后它们可以连接。所以不需要 STUN。
在这种情况下,您的服务器正在扮演 TURN 的角色。所以你不需要 TURN 服务器。
Q2:浏览器中的 WebRTC 是否有任何 hack 可以消除 STUN 和 TURN 的需要?
没有黑客。根据场景使用 TURN/STUN。对于您不需要的场景。如果您想建立客户端-客户端连接,那么您将需要 STUN 服务器。