我理解STUN和TURN服务器的用途以及它们在WebRTC中的使用,但我不完全了解:
如果我作为WebRTC客户端已经登录使用WebRTC服务,那么这项服务是不是……
简短回答:因为代理和NAT。
很多原因:
Web服务器知道已建立的TCP连接的公共IP地址,但是对于通过UDP的后续P2P通信,它不知道本地NAT将如何映射端口(或其使用的端口)。
您可能位于所有HTTP / HTTPS流量通过代理的网络上。因此,WebRTC服务只知道您的代理的地址。
WebRTC服务本身可以有一个前端负载均衡器。因此,它只知道负载均衡器的IP地址。
尝试执行WebRTC会话的两个端点实际上可能位于同一NAT之后。因此,公共IP地址不那么有用。
但主要原因是如上文#1中所述的端口预测。通过ICE或WebRTC进行地址交换不仅涉及交换IP地址,还涉及UDP端口。即使Web服务器知道客户端的实际IP地址,Web服务器也无法推断它将用于媒体流量的UDP端口。