文章目录
- 一、WebRTC需要解决的问题
- 二、ICE(Interactive Connectivity Establishment)
- 三、ICE的详细步骤
- 四、知识点四
一、WebRTC需要解决的问题
WebRTC是由google提出的的一个用于端到端实现p2p音视频通信的框架。比起其他的hls, http-flv等直播方案,webrtc在公网的条件中能够做到百毫秒级别的延迟,非常厉害。
WebRTC是一个集成了音视频通话中的多个应用的框架,主要是想尝试解决音视频通话中的一系列实时音视频应用问题,比如采集,编码,解码,前后处理,传输,缓冲,渲染,美颜,回声消除等等等等。
要实现p2p通信,最重要的一点就是必须让两个peer知道对方的公网ip地址。但是实际上ip地址的数量有限,我国很多设备基本都没有独立的公网IP,而是位于NAT之后,所以要实现P2P通信,必须要实现NAT穿透。说到NAT穿透,就会涉及到WebRTC中的几个概念。
二、ICE(Interactive Connectivity Establishment)
ice是一个p2p的连接框架,它目的在于确定可用于双端通信的传输地址对。
ICE 基本思想,每一个代理拥有多种可用于与对端通信的候选传输地址(TRANSPORT ADDRESSES,针对特定传输协议(一般为 UDP 协议)的 IP 地址和端口的组合),ICE 通过不断地尝试以确定真正可用的传输地址对;
可能可行的地址对有以下几种:
- 直接连接的网络接口上的传输地址.
- NAT 公共端的转义传输地址,即服务器反射地址(server reflexive).
- TURN 服务器上分配的传输地址,即转发地址(relayed address),中继地址.
在这里,呼叫需要交换两种信息,即候选地址和媒体信息。
候选地址用于建立网络连接,存储着和网络连接相关的参数;
媒体信息SDP用于描述在对等连接上传出的数据的信息,比如音频,视频和应用数据。
三、ICE的详细步骤
在这里,我们使用这张图来详细讲解ICE的所有步骤:
- 收集候选传输地址:候选传输地址,指的是有可能可以用于接收媒体以建立对等连接的IP地址和端口,其必须要在呼叫的时候收集而不能提前收集。
候选传输地址的类型如下:
候选地址类型 | 传达对端方式 | 用法 |
---|---|---|
主机候选地址 host candidate | 信令服务器 | 从网卡中获取到本地传输地址;若该地址位于NAT之后,则为私有地址,无法在子网之外路由到 |
信令服务器反射地址,SERVER REFLEXIVE CANDIDATE | 信令服务器 | 从发送给 STUN 服务器的 STUN 检查中获取的传输地址,若该地址位于 NAT 之后,则为最外层 NAT 的公共 IP 地址; |
对端反射地址,PEER REFLEXIVE CANDIDATES | Stun Binding 请求 | 从其他 ICE 代理发送的 STUN 连接检查中获取的传输地址,该地址是一种在连接检查期间发送的新候选项,不通过信令通道发送; |
对端反射地址,PEER REFLEXIVE CANDIDATES | Stun Binding 请求 | 从其他 ICE 代理发送的 STUN 连接检查中获取的传输地址,该地址是一种在连接检查期间发送的新候选项,不通过信令通道发送; |
中继地址,RELAYED CANDIDATES | 信令服务器 | 媒体中继服务器的传输地址,通过 TURN 分配请求获取; |