WebRTC直播技术(二)-ICE/STUN/TURN

2019-12-03 15:58:19 浏览数 (1)

本文作者:IMWeb jaychen 原文出处:IMWeb社区 未经同意,禁止转载 上一篇 WebRTC直播技术(一)-初探WebRTC(https://cloud.tencent.com/developer/article/1009489) 大概介绍了WebRTC的基础知识以及sdp交互的过程。这篇文章主要讲解WebRTC连接建立的过程。

首先要掌握WebRTC连接建立过程,需要掌握几个知识点: NAT, ICE, STUN, TURN, DTLS等。如果之前有接触过P2P相关技术的同学可能就会比较容易理解。WebRTC是一个基于浏览器与浏览器之间的实时音视频通话方案,那么有于公网ip地址有限的问题,用户的浏览器常常位于NAT后,那么建立连接就涉及到了打洞技术。

NAT

由于当前使用的IPV4地址的长度限制只有32位,大多数终端都没有一个可以在互联网上可见的唯一IPV4地址。NAT是作为一种解决IPv4地址短缺以避免保留IP地址困难的方案,在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址。

STUN

为了进行P2P通信,会话参与双方都需要知道其对等端的IP地址和指定的UDP端口。因此,在WebRTC通信建立之前,需要进行一定数量的信息交换。

每个对等端需要使用一个STUN服务器来探测他们的公共IP地址,这个IP在连接建立的时候会被ICE框架所引用。STUN服务器是通常是可公开访问的,WebRTC应用可以自由访问。

TURN

TURN服务指的是中继型NAT遍历服务器,其地址是一个公共ip地址,用于转发数据包给对端浏览器。当2个对等端因为NAT类型而无法建立连接时(当遇到对称型NAT会导致打洞失败),才需要使用中继服务器。

ICE: 交互式连接建立(Interactive Connectivity Establishment)

ICE是一种标准穿透协议,利用STUN和TURN服务器来帮助端点建立连接。WebRTC当通过信令server交换完sdp, candidate后,之后依靠ICE框架在2端之间建立一个通道。

ICE的过程主要分为5步:

  • 1, 收集候选传输地址
  • 2, 在信令通道中交换候选选项
  • 3, 执行连接检查
  • 4, 选择选定的对并启动媒体
  • 5, 心跳检测

候选传输地址

候选地址是后续可用于接收媒体以建立对等连接对ip地址和端口。地址是ICE自动通过在主机网卡,STUN服务或中继服务,对端STUN请求包获取。 ICE候选地址类型:

交换候选项

各端将手机到对候选地址通过信令通道交换,一旦交换后就会对他们进行排序,优先级排序依次是:主机候选地址>反射地址>中继后选项。接着对本地对候选项跟接收到的候选进行匹配成对。

STUN连接检查

当某一端的ICE代理接收到了候选项并排序匹配成对后,就开始进行连通行检查。

连通性检查就说通过对端ip端口发送STUN binding quest包以及是否接收到返回对STUN binding response包来确认。

当其中一对候选地址检测通过后,即选定该地址对。 2个浏览器即用选定对候选对地址发送媒体。

当连通性检测完成后,WebRTC会开启DTLS握手,用于协商出SRTP中加密RTP包的对称秘钥。该过程称为DTLS-SRTP,保证了数据传输的安全性。至此,WebRTC的连接正在建立并可传输数据。

0 人点赞