【译】WebRTC协议概述

原文:https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Protocols

ICE(Interactive Connectivity Establishment,互动式连接建立)

ICE是一个可以将web浏览器互联的框架。从A到B无法直连的原因有很多,它需要绕过阻止打开连接的防火墙;需要独一无二的ip地址,但在很多情况下你的设备会没有公网IP地址;如果你的路由器不允许直连,则通过服务器中继数据。ICE通过STUN和TURN服务器来实现浏览器互联,下面进行详细描述。

STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)

STUN是一种用于发现您的公网地址,并确定路由器中阻止与对外直连的限制原因的网络协议。

客户端会通过互联网向STUN服务器发送请求,STUN服务器会返回客户端的公网地址,以及该客户端是否可以通过路由器的NAT访问。

image.png

NAT(Network Address Translation,网络地址转换)

NAT是是用来给你的设备一个公共IP地址的技术。路由器拥有一个公网IP地址,每个和路由器相连的设备有一个私有地址。请求将通过一个唯一的端口从设备的私有IP转换为路由器的公共IP。通过这种方式,每个设备无需公网IP,但仍然可以在互联网上被发现。
一些路由器会对可以连接到网络上的设备做限制,这可能意味着,即使我们有STUN服务器发现的公共IP地址,但不是任何人都可以创建连接。在这种情况下,我们需要TURN。

TURN(Traversal Using Relays around NAT)

一些使用NAT的路由器采用一种被称为对称NAT的限制。这意味着路由器将只接受来自你曾经连接过的连接。
TURN意味着,通过打开与TURN服务器的连接,并通过该服务器转发所有信息,从而绕过了对称NAT限制。你可以创建一个与TURN服务器的连接,并告诉所有对端向服务器发送数据包,然后这些数据包将被转发给你。这显然会带来一些开销,所以只有在别无选择的时候才会使用它。

image.png

SDP(Session Description Protocol,会话描述协议)

SDP是描述连接的多媒体内容(如分辨率、格式、编解码器、加密等)的标准,所以当传输内容的时候,双端可以互相理解发送的内容。本质上,这是对内容元数据的描述,而不是媒体内容本身。

因此,从技术上讲,SDP并不是一种真正的协议,而是一种用于描述设备之间共享媒体连接的数据格式。

架构

SDP由一行或多行UTF-8文本组成,每一行都以一个字符类型开头,后面是等号("="),然后是由值或描述组成的结构化文本,其格式取决于类型。以给定字母开头的文本行通常被称为“字母行”。例如,提供媒体描述的行类型为“m”,因此这些行被称为“m-lines”。

你可能感兴趣的:(【译】WebRTC协议概述)