WebRtc(网页即时通信技术)知识点总结

前言 linux

WebRTC,名称源自网页实时通讯(Web Real-Time Communication)的缩写,简而言之它是一个支持网页浏览器进行实时语音对话或视频对话的技术。而且还支持跨平台:windows,linux,mac,android,iOS。android

实现原理web

P2P链接模式windows

通常咱们传统的链接方式,都是以服务器为中介的模式:浏览器

相似http协议:客户端<——>服务端(固然这里服务端返回的箭头仅仅表明返回请求数据)。安全

进行即时通信时,进行文字、图片、录音等传输的时候:客户端A——服务器——客户端B。服务器

 

而点对点的链接偏偏数据通道一旦造成,中间是不通过服务端的,数据直接从一个客户端流向另外一个客户端:网络

客户端A——客户端B ... 客户端A——客户端C ...(能够无数个客户端之间互联)session

这个过程就像音视频通话的应用场景,咱们服务端确实是不必去获取二者通讯的数据,并且这样作有一个最大的一个优势就是,大大的减轻了服务端的压力。框架

而WebRTC就是这样一个基于P2P的音视频通讯技术。

客户端A与B创建p2p链接的过程

1.A和B链接上服务端,创建一个TCP长链接(任意协议均可以,WebSocket/MQTT/Socket原生/XMPP),为了省事,直接采用WebSocket,这样一个信令通道就有了。

2.A从服务器得到ice server同时生成包含session description(SDP)的offer,发送给Socket服务端。

3.Socket服务端把A的offer和candidate转发给B,B会保存下A这些信息。

4.而后B发送包含本身session description的answer(由于它收到的是offer,因此返回的是answer,可是内容都是SDP)和ice candidate给Socket服务端。

5.Socket服务端把B的answer和ice candidate给A,A保存下B的这些信息。

 

WebRTC的服务器
WebRTC至少有两件事必需要用到服务器:
一、客户端之间交换创建通讯的元数据(信令)必须经过服务器。
  咱们在A和B须要创建P2P链接的时候,至少要服务器来协调,来控制链接开始创建。而链接断开的时候,也须要服务器来告知另外一端P2P链接已断开
二、为了穿越NAT和防火墙。
若是客户端A想给客户端B发送数据,则数据来到客户端B所在的路由器下,会被NAT阻拦,这样B就没法收到A的数据了 。
 webrtc是经过 ICE 这套框架来处理复杂的网络环境,
若是想启用这个功能,你必须让你的应用程序传 服务器的URL:
  ICE试着找最好的路径来让客户端创建链接,他会尝试全部可能的选项,而后选择最合适的方案,
  ICE首先尝试P2P链接,若是失败就会经过Turn服务器进行转接。
 
信令的做用
用来控制通讯开启或者关闭的链接控制消息
发生错误时用来彼此告知的消息
媒体流元数据,好比像解码器、解码器的配置、带宽、媒体类型等等
用来创建安全链接的关键数据
外界所看到的的网络上的数据,好比IP地址、端口等


信令的类型

Offer:创建点对点的链接时,发起端(A客户端)须要发送的信令
Answer:创建点对点的链接时,被叫端(B客户端)须要发送的信令
Bye:点对点的链接断开时,发送的信令
 

会话描述协议(Session Description Protocal,简称SDP)

信令的主要内容的格式都遵循会话描述协议

 

1) 会话的名称和目的
2) 会话存活时间
3) 包含在会话中的媒体信息,包括:
媒体类型(video, audio, etc)
传输协议(RTP/UDP/IP, H.320, etc)
媒体格式(H.261 video, MPEG video, etc)
多播或远端(单播)地址和端口
4) 为接收媒体而需的信息(addresses, ports, formats and so on)
5) 使用的带宽信息
6) 可信赖的接洽信息

一个SDP的信令的内容大体上以下:

 

实时传输控制协议(Real-time ControlProtocol,RTCP)

RTP/RTCP协议是流媒体通讯的基石。RTP协议定义流媒体数据在互联网上传输的数据包格式,而RTCP协议则负责可靠传输、流量控制和拥塞控制等服务质量保证。在WebRTC项目中,RTP/RTCP模块做为传输模块的一部分,负责对发送端采集到的媒体数据进行进行封包,而后交给上层网络模块发送;在接收端RTP/RTCP模块收到上层模块的数据包后,进行解包操做,最后把负载发送到解码模块。所以,RTP/RTCP 模块在WebRTC通讯中发挥很是重要的做用。

   Sdp协议内规定的视频传输控制协议就是rtcp

相关文章
相关标签/搜索