WebRTC概念简介

本文大纲

简介

WebRTC(Web Real-Time Communication)。Real-Time Communication,实时通讯。

WebRTC能让web应用和站点之间选择性地分享音视频流。在不安装其它应用和插件的情况下,完成点对点通信。
WebRTC背后的技术被实现为一个开放的Web标准,并在所有主要浏览器中均以常规JavaScript API的形式提供。对于客户端(例如Android和iOS),可以使用提供相同功能的库。 WebRTC是个开源项目,得到Google,Apple,Microsoft和Mozilla等等公司的支持。2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。

WebRTC包括一系列API和相互关联的协议来实现通信。

相关技术

VoIP

Voice over Internet Protocol,在网络上传输声音消息的技术。
例如网络音频通话。或者叫做IP电话,宽带电话。使用VoIP技术的一大原因是费用低。

相关协议

NAT

Network address translation,网络地址转换。
NAT能给你的设备一个公共IP地址。一个路由器(router)有一个公共IP地址,每个连接到路由的设备有一个私有的IP地址。
设备发送请求时,会从一个特定端口,通过私有IP发送到路由的公共IP。这样每个设备在网上不需要都有一个公共IP地址,但也能被其它设备发现。

参考 IP Network Address Translator (NAT) Terminology and Considerations

ICE

Interactive Connectivity Establishment,互动式连接建立(交互式连通性建立)。
ICE是一套能让web浏览器之间互相连接的框架。通常来说,节点A到B是很难直接相连的。防火墙会阻止连接,设备没有公共IP地址,路由不允许直接连接其他节点。
ICE使用STUN或者TURN服务(或者同时使用两者)来建立连接。

参考 ICE | rfc8445

STUN

Session Traversal Utilities for NAT (STUN) ,NAT会话传输工具。
STUN协议能发现客户端(节点)的公共地址。客户端发送一个请求给网上的STUN服务器,服务器返回客户端的公共地址。不管客户端在路由器的NAT后能否可达。
STUN为请求者提供了可公开访问的IP地址,它就不再参与对话了。

stun

有些路由器会限制设备与外面其它设备的连接。这意味着即使STUN服务器知道了路由的公共IP地址,也没法建立连接。
这种情况下我们需要使用TURN

TURN

Traversal Using Relays around NAT,使用中继绕过NAT传输。
一些路由器使用一种叫“Symmetric NAT”(对称型NAT)的限制。这意味着路由器仅允许之前连接过的节点(peer)来建立连接。

STUN提供了一个能让应用(终端,节点)穿过NAT的方法。STUN允许客户端获得一个传输地址(一个IP和端口)来获取其它节点的数据。
然而STUN获取到的地址不一定能被所有节点使用。这些地址是否可用取决于网络拓扑的情况。所以,单独STUN无法提供完整的穿越NAT的方案。

TURN协议允许两个处于NAT环境的主机利用中继进行通讯。客户端能够在TURN服务器上分配资源,与其它客户端(peer)进行通讯。
客户端关联一个TURN服务器的地址(relayed server address)来作为中继。
客户端发送报文给TURN服务,TURN服务使用relayed server address作为源地址向其他客户端中继转发报文。
穿越NAT,这个过程就像是“打洞”。也有人称TURN服务器为“打洞服务器”。

TURN

这么看,TURN服务器需要有大的带宽。因此,ICE会优先考虑直接通讯,无法直接通讯情况下会使用TURN。

参考 TURN rfc8656

SDP

Session Description Protocol,会话描述协议。

描述多媒体连接内容的协议。例如分辨率,格式,编码,加密算法等等。

实际上,SDP不是个真正的协议。它也是用来描述设备之间连接与传输多媒体的数据格式。

参考 SDP: Session Description Protocol | rfc8866

参考

一些缩写

- ACK: Acknowledgment (确认报文)
- AVP: Audio and Video profile (音频视频描述)
- B-Frame: Bi-directional Predicted Frame. A partial picture, is a modification of previous and future pictures. - (双向预测帧,存储图片的部分信息,存储的是相对前一张图片和后一张图片的差异信息)
- DCEP: Data Channel Establishment Protocol defined in RFC 8832 (DataChannel建立协议)
- DeMux: Demultiplexer (解复用器)
- DLSR: delay since last sender report (从最近一个Sender Report开始的时间延迟)
- DTLS: Datagram Transport Layer Security defined in RFC 6347
- E2E: end-to-end
- FEC: Forward Error Correction (前向纠错)
- FIR: Full INTRA-frame Request (完整I帧请求)
- G.711: A narrowband audio codec (一个窄带音频编码器)
- H.264: Advanced video coding for generic audiovisual services (面向通用视听服务的高级视频编码)
- H.265: Conformance specification for ITU-T H.265 high efficiency video coding. (ITU-T H.265高效视频编码的一致性规范)
- HEVC: High Efficiency Video Coding (高效视频编码)
- HTTP: Hypertext Transfer Protocol (超文本传输协议)
- HTTPS: HTTP Over TLS defined in RFC 2818 (基于TLS的HTTP)
- I-Frame: Intra-coded Frame. A complete picture, can be decoded without anything else. (内部编码帧,保存完整图片信息,- 自解码,不依赖外部数据)
- ICE: Interactive Connectivity Establishment defined in RFC 8445 (交互式连接建立协议)
- INIT: Initiate (初始化)
- IoT: Internet of Things (物联网)
- IPv4: Internet Protocol, Version 4 (第四代因特网协议)
- IPv6: Internet Protocol, Version 6 (第六代因特网协议)
- ITU-T: International Telecommunication Union Telecommunication Standardization Sector (国际电信联盟电信标准分局)
- JSEP: JavaScript Session Establishment Protocol defined in RFC 8829 (JavaScript会话建立协议)
- MCU: Multi-point Conferencing Unit (多点会话单元)
- mDNS: Multicast DNS defined in RFC 6762 (组播 DNS)
- MITM: Man-In-The-Middle
- MTU: Maximum Transmission Unit (最大传输单元)
- MUX: Multiplexing (复用,一般指把不同格式的数据合并存储或传输)
- NACK: Negative Acknowledgment (逆确认报文,ACK反馈收到报文,NACK反馈未收到报文 )
- NAT: Network Address Translation defined in RFC 4787 (网络地址转换,域名地址转换成IP地址)
- Opus: A totally open, royalty-free, highly versatile audio codec (一个完全开放、免版税、高度通用的音频编解码器)
- P-Frame: Predicted Frame. A partial picture, containing only changes from the previous picture. (前向预测帧,只保存- 相对于上一帧的差异信息)
- P2P: peer-to-peer
- PLI: Picture Loss Indication (图片丢失指示)
- PPID: Payload Protocol Identifier (Payload协议标识)
- REMB: Receiver Estimated Maximum Bitrate (接收端估计的最大比特率)
- RFC: Request for Comments (征求意见)
- RMCAT: RTP Media Congestion Avoidance Techniques (RTP媒体拥塞避免技术)
- RR: Receiver Report (RCTP接收者报告)
- RTCP: RTP Control Protocol defined in RFC 3550 (RTP控制协议)
- RTP: Real-time transport protocol defined in RFC 3550 (实施传输协议)
- RTT: Round-trip time (往返时间)
- SACK: Selective Acknowledgment (选择性确认)
- SCTP: Stream Control Transmission Protocol defined in RFC 4960 (流控传输协议)
- SDP: Session Description Protocol defined in RFC 8866 (会话描述协议)
- SFU: Selective Forwarding Unit (选择性转发单元)
- SR: Sender Report (RCTP发送者报告)
- SRTP: Secure Real-time Transport Protocol defined in RFC 3711 (安全的RTP)
- SSRC: Synchronization Source (同步源)
- STUN: Session Traversal Utilities for NAT defined in RFC 8489 (NAT会话穿透)
- TCP: Transmission Control Protocol (传输控制协议)
- TLS: The Transport Layer Security defined in RFC 8446 (传输层安全)
- TMMBN: Temporary Maximum Media Stream Bit Rate Notification (临时最大媒体流比特率通知)
- TMMBR: Temporary Maximum Media Stream Bit Rate Request (临时最大媒体流比特率请求)
- TSN: Transmission Sequence Number (传输序列号)
- TURN: Traversal Using Relays around NAT defined in RFC 8656 (基于转发的NAT穿透)
- TWCC: Transport Wide Congestion Control (传输拥塞控制)
- UDP: User Datagram Protocol (数据报协议)
- VP8, VP9: Highly-efficient video compression technologies (video “codecs”) developed by the WebM Project. - Anyone may use these codecs royalty-free. (WebM项目开发的高效视频压缩技术(视频编解码),完全免费)
- WebM: An open media file format designed for the web. (一个开放的Web媒体文件格式)
- WebRTC: Web Real-Time Communications. W3C WebRTC 1.0: Real-Time Communication Between Browsers (Web实时通信)

更多请参考 WebRTC概念简介

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容