WebRTC[27]-WebRTC candidates
目录
前言
ICE的全称是Interactive Connectivity Establishment(交互式连通建立方式),它是基于offer/answer模式解决NAT穿透的协议集合,它综合利用现有的STUN,TURN等协议获得更加有效的方式来建立会话连接。 其中,连接建立的依据就是本段和远端的candidates对儿,它们是ICE通讯的基础。
正文
WebRTC利用ICE的穿透能力,实现端到端的连接。但是连接的建立,就需要公网的IP地址,所以ICE建立过程中找到匹配本端和远端的IP地址对儿就显得非常关键。
一般情况下,WebRTC通过STUN遍历所有的会话session,就能够找到可用的连接地址。如果网络状态非常糟糕,STUN不能满足需要,就需要中继NAT服务器TURN寻找候选的备用地址,这种情况下,一般是可以成功的,媒体连接能够正常建立。
四种candidate类型
接下来,我们介绍一下ICE建立过程中的candidate候选备用地址。
WebRTC中定义了四种candidate类型,分别是host candidates(host)、server reflexive candidates(srflx)、peer reflexive candidates(prflx)、and relayed candidates(relay)。其中,srflx、prflx是通过STUN或者TURN获取的,relay是通过TURN获取的。
Candidate在列表中的位置越靠前越重要,接下来分别看一下四个candidate。
host:主候选项,表示一个真正的ip地址,可以直接用来和对端通讯。
srflx:一个服务器自反候选项,其中的ip表示由STUN服务器分配的一个中间地址,以匿名的方式与对端通讯。
prflx:一个peer自反候选项,其中的ip是一个由STUN服务器分配的中间地址,以匿名的方式与对端通讯。
relay:中继候选项,其中的ip是由TURN服务器获得的,可以用于在两个对等端之间转发媒体的地址。
也可以参考下图中的描述:
编辑
整个ICE建立流程的五个步骤
一、网络嗅探,收集candidate地址
candidate候选地址是用来建立媒体收发的对等的IP地址和端口
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
WebRTC 作为当下最热门的实时音视频通讯框架,涉及非常多的过程,比如采集、编码、组包、发包、传输、收包、丢包重传、解封装、解码、音视频同步、渲染等,同时还包括很多功能特性,比如ANS、AGC、AEC,REMB、GCC、CNG、FEC、PLI、SVC等,需要一点点深入理解其中的奥秘。