3

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

 3 years ago
source link: https://my.oschina.net/tsingsee/blog/5080171
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

硬核讲解:编译webrtc协议为什么需要turn服务器? - TSINGSEE的个人空间 - OSCHINA - 中文开源技术交流社区

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

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

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

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK