架构概述
Last updated
Last updated
架构概述
https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Protocols
This article introduces the protocols on top of which the WebRTC API is built.
Interactive Connectivity Establishment (ICE) 是一个框架,允许您的Web浏览器与对等方(peers)连接。有很多原因导致从对等A到对等B的直接连接根本不起作用。它需要绕过防止打开连接的防火墙,如果大多数情况下你的设备没有公共IP地址,则给你一个唯一的地址,如果你的路由器不允许你直接连接到对等方(peers),则通过服务器中继数据。 ICE使用STUN和/或TURN服务器来完成此任务,如下所述。
Session Traversal Utilities for NAT (STUN)是一种协议,用于发现您的公共地址并确定路由器中的任何限制,这些限制会阻止与对等方的直接连接。
STUN是其他协议使用的工具,例如交互式连接建立(ICE),会话启动协议(SIP)或WebRTC。
客户端将向Internet上的STUN服务器发送请求,该服务器将回复客户端的公共地址,以及客户端是否可以在路由器的NAT后面访问。
Network Address Translation (NAT)用于为您的设备提供公共IP地址。路由器具有公共IP地址,并且连接到路由器的每个设备都将有专用(private)IP地址。请求将从设备的专用IP转换为具有唯一端口的路由器的公共IP。这样,您不需要为每个设备提供唯一的公共IP,但仍可以在Internet上发现。
某些路由器将限制谁可以连接到网络上的设备。这可能意味着即使我们拥有STUN服务器找到的公共IP地址,也没有人可以创建连接。在这种情况下,我们需要转向TURN。
一些使用NAT的路由器采用称为“对称NAT”的限制。这意味着路由器只接受您之前连接的对等端的连接。
Traversal Using Relays around NAT (TURN)意味着通过打开与TURN服务器的连接并通过该服务器中继所有信息来绕过对称NAT限制。您将与TURN服务器建立连接,并告诉所有对等方将数据包发送到服务器,然后将其转发给您。这显然带来了一些开销,因此仅在没有其他替代方案时使用。
Session Description Protocol (SDP)是用于描述连接的多媒体内容的标准,例如分辨率,格式,编解码器,加密等,以便一旦数据传输,两个对等体都可以彼此理解。实质上,这是描述内容的元数据,而不是媒体内容本身。
SDP由一行或多行UTF-8文本组成,每行以单字符类型开头,后跟等号(“=”),后跟包含值或描述的结构化文本,其格式取决于类型。以给定字母开头的文本行通常称为“字母行”。例如,提供媒体描述的行具有类型“m”,因此这些行被称为“m行”。
例如,具体可自信研究