硬核讲解:编译webrtc协议为什么需要turn服务器?

大家知道我们的WebRTC开发已经到达一个新的阶段了,目前EasyGBS国标视频云服务内已经支持WebRTC协议视频流的输出了,欢迎大家体验。

硬核讲解:编译webrtc协议为什么需要turn服务器?

搭建webrtc不得不提的就是turn服务器了,在webrtc中,每当两个设备之间无法直接连接时,就需要一个turn服务器来进行中转,同时,在点对点的服务中,也需要安装并运行turn服务器。

但是如果将设备连接到媒体服务器(无论是用于群呼的SFU还是其他类型的服务器),仍然需要一个turn服务器,这又是为什么?实际上,这主要是因为某些防火墙会阻止某些类型的流量。大多数只会阻止UDP,但是有些甚至可能会阻止TCP,这样webrtc就不会建立通信连接。

turn服务器是webrtc基础设施的重要组成部分,因为它们有助于NAT网络穿透。

硬核讲解:编译webrtc协议为什么需要turn服务器?

有一种称为ICE-TCP的机制,可以在webrtc中使用,本质上,它使媒体服务器能够使用TCP传输在sdp中提供ICE候选。这使着媒体服务器将在TCP端口上主动等待来自设备的传入连接。它是Chrome的一项功能,但是现在已在所有支持webrtc的网络浏览器中都可使用。这样是不是TURN/TCP变的不必要呢?这样显然不是,但我们仍然需要TURN/TLS服务。

原因是:先尝试直接UDP到服务器,然后直接ICE-TCP到服务器,最后才TURN/TLS服务器。如果最后TURN/TLS没有连接上,这样就说明webrtc设备与设备直接连接失败。如果使用的是本地网络连接,这意味着在这种情况下不需要使用TURN服务器在进行中继。

如果大家对我们的webrtc编译感兴趣,欢迎持续关注我们的更新。

上一篇:webRTC中语音降噪模块ANS细节详解(一)


下一篇:你会在你的WebRTC 应用程序中使用哪种视频编解码器呢?