Skip to main content

WebRTC

简介

WebRTC,全称Web实时通信(Web Real-Time Communication),是一组开源技术和协议,用于实现互联网上的实时通信。它允许直接在Web浏览器或其他兼容应用程序之间进行点对点音频、视频和数据共享,无需插件或额外的软件安装。WebRTC主要用于视频会议、语音通话和实时数据交换等应用。

WebRTC在现代Web浏览器(如Chrome、Firefox、Safari和Edge)中得到广泛支持,因此它是在Web上构建实时通信应用程序的强大工具。它还用于移动应用程序开发、物联网(Internet of Things,IoT)设备以及其他各种需要低延迟实时通信的应用程序。

WebRTC非常注重安全性和隐私。它采用加密和身份验证机制来保护数据的机密性和完整性。此外,由于WebRTC允许直接点对点通信,因此可以减少通过集中式服务器中继数据的需求,这可以提高隐私性并减少延迟。

WebRTC的关键组件包括:

  1. MediaStream API:该API允许访问用户的摄像头和麦克风,从而实现音频和视频流的捕获。
  2. RTCPeerConnection:这是WebRTC的核心组件,负责建立和管理点对点通信,包括在设备之间传输音频和视频数据。它还处理NAT和防火墙遍历。
  3. RTCDataChannel:除了音频和视频,WebRTC还提供了用于实时点对点数据交换的数据通道,可用于游戏或文件共享等应用。
  4. WebRTC API:WebRTC通过Web浏览器中的JavaScript API访问,使Web开发人员能够将实时通信轻松集成到其应用程序中。

信令服务器

信令服务器(Signalling Server)是WebRTC(Web实时通信)应用程序中的另一个关键组件。它的主要作用是协调和管理建立WebRTC通信的过程(帮助客户端找到彼此,客户端先和信令服务器链接,并获取需要传输的对象和内容的类型编码,主要协商客户端之间的参数而不真正建立客户端之间的链接等),包括设备之间的连接、会话控制、媒体参数协商和其他相关任务。以下是信令服务器的关键作用和功能:

  1. 建立连接:信令服务器允许WebRTC终端之间建立连接。在点对点通信中,每个设备都需要连接到信令服务器,以便它们可以互相发现和识别。

  2. 用户验证和身份验证:信令服务器可以处理用户身份验证,确保只有授权的用户能够加入通信。这可以通过用户名和密码、令牌或其他认证机制来实现。

  3. 协商会话参数:WebRTC通信需要协商音频、视频和数据流的参数,如编解码器、分辨率和带宽。信令服务器协助设备之间协商这些参数,以确保它们具有相互兼容的配置。

  4. 传输SDP(Session Description Protocol):设备通过SDP来描述其音频、视频和数据流的特性。信令服务器传递这些SDP信息,以便设备可以互相了解彼此的要求和能力,从而协商出最佳的连接配置。

  5. 处理连接状态:信令服务器跟踪设备的连接状态,包括建立、维护和断开连接。这有助于处理连接的错误和重新连接。

  6. 消息传递:信令服务器还可以用于传递文本消息或其他数据,使设备能够进行聊天或发送元数据。

  7. 处理媒体流的交换:一旦连接建立,信令服务器不直接传输媒体流(音频、视频等),而是用于建立连接后,设备直接点对点传输媒体流。

  8. 中继服务:有时,特别是在NAT穿越失败时,信令服务器可能需要充当TURN服务器,用于中继数据流量。

信令服务器通常使用WebSocket、HTTP、或其他协议与WebRTC终端通信。这些服务器通常是自定义的,根据特定应用程序的需求进行开发和部署。

架构

忽略客户端从静态服务器获取HTML/JS/Css的过程,客户端会先和信令服务器(Signalling Server)通行,找到对应需要链接另外的客户端,之后向ICE请求建立链接,ICE服务器会帮助客户端链接。

ICE

ICE(Interactive Connectivity Establishment)服务器是与WebRTC(Web实时通信)一起使用的重要组件之一。ICE服务器帮助WebRTC在不同网络环境下建立点对点连接,包括处理网络地址转换(NAT)和防火墙等问题。

ICE服务器的作用

ICE服务器的主要作用是协助WebRTC对等连接的建立(主要是指网络上的链接)。在一个典型的WebRTC通信中,两个设备(例如,两个浏览器)尝试建立点对点的实时连接。然而,这些设备通常位于不同的网络环境中,可能受到NAT和防火墙的限制。ICE服务器的任务是解决这些问题,以确保连接成功建立。

具体而言,ICE服务器执行以下操作:

  1. 收集候选地址:ICE服务器会收集设备的本地IP地址、外部IP地址和端口等信息,以及可能通过STUN(Session Traversal Utilities for NAT)服务器和TURN(Traversal Using Relays around NAT)服务器获得的可用候选地址。

  2. 筛选和排序候选地址:ICE服务器会根据网络连接性能对候选地址进行筛选和排序,以确定哪些地址最适合建立连接。

  3. 协商连接:设备之间的WebRTC连接借助ICE服务器来协商最佳的连接路径,以确保数据能够在设备之间流畅传输。这可能涉及在NAT设备上创建映射或使用中继服务器(TURN服务器)。

  4. 处理防火墙和NAT:ICE服务器帮助WebRTC设备穿越防火墙和NAT,以确保双方可以直接通信,而无需依赖中继服务器。

  5. 失败处理:如果某些连接路径不可用或失败,ICE服务器将协助设备找到替代路径,以确保连接的稳定性。

STUN 和 TURN 服务器

ICE服务器通常由STUN服务器(用于获取公共IP地址和端口)和TURN服务器(用于中继数据流量,特别是在NAT穿越失败时)组成。STUN服务器用于发现设备的公共IP地址和端口,而TURN服务器在NAT穿越失败时充当中继,帮助设备建立连接。

总之,ICE服务器是WebRTC中不可或缺的组件,它通过处理网络地址转换和防火墙等问题,帮助设备建立可靠的实时通信连接。这有助于实现高质量的音频、视频和数据传输,尤其是在设备位于不同网络环境中时。