概念
最后更新于:2022-04-02 03:29:41
[TOC]
> [概述](https://a-wing.github.io/webrtc-book-cn/01_introduction.html#%E4%BF%A1%E4%BB%A4-signaling)
## 信令 (Signaling)
会话描述表示需要交换的最重要的信息。它指定了传输(和 Interactive Connectivity Establishment [ICE])信息,以及建立媒体路径所需的媒体类型、格式和所有相关的媒体配置参数
JSEP 方法将驱动信令状态机的职责完全委托给应用程序:应用程序必须在正确的时间调用 API,并将会话描述和相关的 ICE 信息转换为选择信令协议已定义的消息。而不是简单地将浏览器发出的消息转发到远程。
## WebRTC API
所有媒体和数据流都使用 DTLS 加密
![](https://a-wing.github.io/webrtc-book-cn/assets/img/rcwr_0104.0d315480.png)
### MediaStream
MediaStream 是音频和/或视频的实际数据流的抽象表示
LocalMediaStream 表示来自本地媒体捕获设备(例如,网络摄像头、麦克风等)的媒体流
要创建和使用本地流,web 应用程序必须通过 `getUserMedia()` 函数请求用户访问
LocalMediaStream 上的 `stop()` 函数来撤销自己的访问权限
### PeerConnection
PeerConnection 允许两个用户在浏览器之间直接通信
信令通道是通过web服务器中的页面脚本代码提供的,例如使用XMLHttpRequest 或 WebSocket
### STUN and TURN
> NAT会话遍历实用程序(STUN)协议([RFC5389](https://tools.ietf.org/html/rfc5389))允许主机应用程序发现网络上网络地址转换器的存在,并且在这种情况下,可以为当前连接获取分配的公共IP和端口元组。 为此,该协议需要已配置的第三方STUN服务器的协助,该服务器必须位于公共网络上。
>围绕NAT的遍历使用中继(TURN)协议([RFC5766](https://tools.ietf.org/html/rfc5766))允许NAT后面的主机从驻留在公用Internet上的中继服务器获取公用IP地址和端口。 由于中继了传输地址,主机可以从任何可以将数据包发送到公共Internet的对等方接收媒体。
`PeerConnection`机制将ICE协议(请参阅[ICE Candidate Exchanging](https://a-wing.github.io/webrtc-book-cn/01_introduction.html))与 STUN 和 TURN 服务器一起使用,以使基于UDP的媒体流穿越NAT盒和防火墙
### DataChannel
DataChannel API旨在提供通用传输服务,允许Web浏览器以双向对等方式交换通用数据。
';