江南体育app下载 · ACE阻尼器-轮廓
  • 身为前端仔的你了解过WebRTC吗?
身为前端仔的你了解过WebRTC吗?

身为前端仔的你了解过WebRTC吗?

  WebRTC (Web Real-Time Communications) 是一项开源的跨平台的实时通信技术,我们可以使用它在不需要中间媒介的情况下在浏览器中建立对等连接(peer-to-peer),实现音视频传输、屏幕共享、P2P文件共享等功能。

  硬件适配层,包含:音频捕获和渲染、视频捕获、网络I/O。浏览器厂商可以自行实现,这样的设计加大了WebRTC的灵活性及跨平台性。

  建立对等连接的前提:连接双方必须要知道对方 IP 地址,支持的媒体类型、音视频编码等信息。

  本地连接:如果两个设备处于局域网中,不用做任何的处理,只需要使用信令服务器获取对方的 sdp,就可以通过局域网 IP 的方式进行对等连接。

  公网连接:除本地连接外。想要实现 P2P 通信,必须让通信双方知道对方的公网 IP 。

  在实际应用中,由于有 NAT 和防火墙等原因,我们无法直接获取到本机的公网 IP,如果想要获取到本机对应的公网 IP 需要进行 NAT 穿透。

  NAT(Network Address Translation,网络地址转换)可以将私有网络中的IP地址转换为公网IP地址,从而实现内网与外网的通信。NAT技术最开始是为了解决IPV4地址不足的问题。

  一般情况下,路由器的 WAN 口有一个公网 IP,所有连接这个路由器 LAN 口的设备会分配一个私有网段的 IP 地址(例如 192.168.1.2)。内网设备的 IP 被映射成路由器的公网 IP 和唯一的端口,通过这种方式不需要为每一个内网设备分配不同的公网 IP,但是依然能被外网设备发现。

  STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)。用于解决网络地址转换(NAT)的问题。当两个设备之间建立WebRTC连接时,如果它们之间存在NAT,就需要通过STUN服务器来获取自己的公网IP地址和端口号,以便让对方可以直接连接自己。STUN服务器只是用来获取公网IP地址和端口号的,不会作为数据的中转站点。

  TURN(Traversal Using Relay NAT,中继服务器)。用于解决无法通过P2P直接连接的情况。当两个设备之间无法直接建立WebRTC连接时,就需要通过TURN服务器作为中继站点,将数据从一个设备传输到另一个设备。TURN服务器可以在不同的网络之间进行数据中转,以便两个设备之间进行实时通信。

  ICE 建立连接流程:ICE 会先尝试端到端直连,无法连通时,调用 STUN 服务进行 NAT 穿透获取公网 IP,如果连接失败则会使用 TURN 服务器来进行中继传输。

  SDP(Session Description Protocol)是一个描述媒体协商信息的协议,包含:媒体类型、编解码格式、加密算法、传输协议等。当两个设备建立 WebRTC 连接时,需要协商和交换 SDP,以便它们能够理解对方的媒体参数和协议信息。

  从技术上讲,SDP不是一个真正的协议,而是一种数据格式,用于描述设备之间对等连接的参数和配置信息。

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

  上边说了如何获取公网 IP、媒体类型、音视频编码等信息。那我们改如何将这些信息告知给对等连接双方呢?

  我们可以通过信令来实现,在设备之间发送设备信息以确定通信协议、媒体编解码和数据传输方法以及任何所需的路由信息的过程就叫做信令(Signaling)。

  传输信令的服务器叫做信令服务器,信令服务器不对接受到的信息作特殊处理,只负责接收与发送数据。