在介绍这些基本知识之前我们要清楚WebRTC的目的以及根本要解决的问题是什么。WebRTC首要要解决的问题是两个浏览器之间如何进行音视频的实时互动,对于底层来说就是两个端点之间如何进行高效的网络传输。
-
NAT(Network Address Translator)
网络上的主机要有一个公网的地址才能进行通讯,现实中我们大部分主机都是在网关之后的,实际是有一个映射,在网关上有一个NAT功能,将内网的地址映射成外网的地址 -
STUN(Simple Tranversal of UDP Through NAT)
作为中介,将各自的公网信息进行交换,使之可以进行连接交互 -
TURN(Traversal Using Relays around NAT)
P2P穿越成功率不高,引入TURN服务,在云端负责流媒体数据的转发 -
ICE(Interactive Connectivity Establishment)
将上述的一个打包到一起,做一个最优选择。首先尝试P2P,有可能主机上有双网卡,或者多个端口,当其中一个不同可以尝试另一个,都通的时候选择更高效的,P2P不同的时候选择TUN服务,进行中转,TUN服务尤其在国内和国外通信的时候可能被拦截掉,这是可以选择多个节点(上海、北京等),一个不同尝试另一个。ICE就是将所有的可能性罗列好,在其中找到一条最优的路径将数据传输。
下边一项一项的讲解学习下:
- NAT的工作原理: