首页 > 解决方案 > WebRTC STUN 服务器用途

问题描述

我了解 STUN 和 TURN 服务器的目的以及它们在 WebRTC 中的使用,但我不完全明白:

如果我作为 WebRTC 客户端已经登录使用 WebRTC 服务,该服务不是已经有我的公网 IP 地址了吗?为什么 STUN 服务器需要第二次找到它?

标签: webrtcstun

解决方案


简短的回答:因为代理和 NAT。

很多原因:

  1. Web 服务器知道您已建立 TCP 连接的公共 IP 地址,但对于通过 UDP 进行的后续 P2P 通信,它不知道您的本地 NAT 将如何映射端口(或它使用的端口)。

  2. 您可能位于所有 HTTP/HTTPS 流量都通过代理的网络上。因此,WebRTC 服务只知道您代理的地址。

  3. WebRTC 服务本身可以有一个前端负载均衡器。因此,它只知道负载均衡器的 IP 地址。

  4. 尝试进行 WebRTC 会话的两个端点实际上可能位于同一个 NAT 后面。因此,公共 IP 地址没有那么有用。

但主要原因是上面#1中讨论的端口预测。通过 ICE 或 WebRTC 进行地址交换不仅涉及交换 IP 地址,还涉及 UDP 端口。即使 Web 服务器知道客户端的实际 IP 地址,Web 服务器也无法推断它将用于媒体流量的 UDP 端口。


推荐阅读