为什么直接视频通话没有看上去那么简单
两个分别处于不同家庭网络、各自被NAT路由器隔开的人,不能直接用对方的局域网IP地址来连接,因为那个地址一旦离开各自的家庭网络就没有意义。STUN、TURN、ICE这一整套机制,正是为了解决这种地址和可达性的问题,好让WebRTC能够尽可能地尝试建立直接连接。
为什么大多数通话更倾向于直连而不是走TURN中继
通过STUN发现、再经ICE确认的直接点对点连接,延迟更低,也不依赖第三方中继服务器一直保持可用和高速。TURN的存在纯粹是为了应对那些确实无法建立直连路径的情况,比如限制较严的企业网络或移动网络环境。
常见问题
为什么有些视频通话会突然需要用到TURN服务器?
当双方所在的网络都有严格的防火墙或NAT设置,阻止了直接的点对点连接时,ICE就找不到可用的直连路径,只能退而求其次,把所有流量都通过TURN服务器中继,这可能会带来明显的延迟。
WebRTC是不是一定是完全的点对点通信?
不一定。只有在找到直连路径时,通话才是真正的点对点。三人以上的群组通话,以及退回TURN中继的通话,即便使用的是WebRTC标准,严格来说也不算点对点。