文章目录
1、术语介绍
由于在webrtc 学习过程中,经常由于一些概念不了解,中断去大量搜资料,效率比较,所以做个整理,将所有的概念集中在一起不断丰富。每个概念有简单介绍和详细说明的链接。
1.1 协议
1.1.1 ICE:
ICE:interactive connectivity establishment交互式连接建立。是一组基于offer/answer模式解决NAT穿越的协议集合,ICE是在STUN 和 TRUN的基础上如何将2个终端建立链接的解决方案。ICE主要包含STUN+TURN等协议,TURN协议的主要作用就是用于NAT打洞失败后,利用Relay进行转发。
1.1.2 STUN:
STUN协议定位于为穿透NAT提供工具,也就是获取NAT 的外网反射地址。
STUN,首先在RFC3489中定义,作为一个完整的NAT穿透解决方案,英文全称是Simple Traversal of UDP Through NATs,即简单的用UDP穿透NAT。
在新的RFC5389修订中把STUN协议定位于为穿透NAT提供工具,而不是一个完整的解决方案,英文全称是Session Traversal Utilities for NAT,即NAT会话穿透效用。RFC5389与RFC3489除了名称变化外,最大的区别是支持TCP穿透。
1.1.3 TURN:
TURN协议的主要作用就是用于NAT打洞失败后,利用Relay进行转发。
TURN,首先在RFC5766中定义,英文全称是Traversal Using Relays around NAT:Relay Extensions to Session Traversal Utilities for NAT,即使用中继穿透NAT:STUN的扩展。简单的说,TURN与STURN的共同点都是通过修改应用层中的私网地址达到NAT穿透的效果,异同点是TURN是通过两方通讯的“中间人”方式实现穿透。
1.1.4 JSEP
JSEP(JavaScript Session Establishment Protocol,JavaScript会话建立协议)是一个信令API,允许开发者构建更强大的应用程序以及增加在信令协议选择上的灵活性。
1.1.5 DTLS
DTLS是为UDP协议定制的TLS协议,DTLS(Datagram Transport Layer Security)
1.1.6 mDns
它的作用是在没有 DNS 的环境当中让相同网段里的设备互相通信
1.2 音视频
1.2.1 track
Track 翻译成轨道, 其实就是对一组source 和 sink 封装,同时记录状态和一些附加功能。如果直接使用source 绑定 sink 不就可以了,为什么还需要Track呢,Track 解决什么问题?
如果一个source 可以属于多个track, 这样就可以让不同的sink 绑定同一个source,会导致无法应对多种状态
track 中保存了一些状态信息和处理,这样就和source 解耦
webrtc源码学习 - Track Source Sink的关系
1.2.1 音频
- AGC (Auto Gain Control) 自动增益控制,声音大小平衡
- AEC (Auto Echo Cancllation) 自动回声消除
- ANC( Auto Noise Suppression) 自动噪声抑制
- VAD( Voice Activity Detection) 声音检测
1.3 术语
2.3.1 candidate
候选项 ,是中断的ip + port 的组合,是为了另一client 可能发送数据的通道。分成3类:
- 主机地址(host) : 通过端设备的网络接口获取
- 反射地址 (srflx):通过和工位的STUN服务器交互获取,多重NAT , 最外层的NAT 地址。
- 中继地址(relay): 如果打洞失败情况,需要TURN 服务器来转发,这个地址就TURN 服务器为这台机器预留的端口,另一个client 可以向这个TURN服务的端口发送媒体数据