WebRTC 之 ICE/STUN/TURN

要掌握WebRTC连接建立过程,首先需要了解以下几个知识点: NAT, ICE, STUN, TURN, DTLS等。

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会导致打洞失败),才需要使用中继服务器。

本文福利, 免费领取C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg webRTC rtmp hls rtsp ffplay srs↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

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候选地址类型:

 

扫描二维码关注公众号,回复: 14524238 查看本文章

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

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

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

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

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

如果你对音视频开发感兴趣,觉得文章对您有帮助,别忘了点赞、收藏哦!或者对本文的一些阐述有自己的看法,有任何问题,欢迎在下方评论区与我讨论!

本文福利, 免费领取C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg webRTC rtmp hls rtsp ffplay srs↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

猜你喜欢

转载自blog.csdn.net/m0_60259116/article/details/127026255