我知道需要一个STUN / ICE / TURN服务器来查找WebRTC通信中涉及的对等体的IP地址。然而,即使在找到IP之后,如果没有打开任何端口,对等体如何实际上彼此独立地交谈?
如果您构建网站,则通常需要打开服务器上的端口以让其他人访问您的网站。我不理解WebRTC中发生的魔力是什么?
答案 0 :(得分:4)
有几种策略可以做到这一点:客户端可以通过UPnP显式打开端口。我不确定当前任何WebRTC客户端是否这样做,但在一般网络中这是可能的。
如果失败,STUN服务器就会启动。它可以尝试多种hole punching技术;阅读上述相关文章的血淋淋的细节。简而言之,防火墙通常会打开传出流量的端口(因为它需要接收响应),因此通过建立到已知目标的传出连接然后记下打开的端口可以打开一个端口。
即使失败,也需要TURN服务器。即使两个对等方都看不到对方,也可以从两个对等方公开访问此服务器。然后,TURN服务器将充当两者之间的中继。这在某种程度上否定了P2P协议的要点,但在一定比例的情况下是必要的(估计范围约为10%-20%)。
答案 1 :(得分:4)
原始问题是“什么/谁创建套接字?”
接下来的问题是“远程对等方如何知道哪些端口处于打开状态”。
最后一个问题是:“如果没有STUN服务器,它能真正起作用吗”