Skip to content

WebRTC 面试题 ​

WebRTC (Web Real-Time Communication) 是一个支持网页浏览器进行实时语音对话或视频对话的技术。前端开发人员在进行 WebRTC 开发时,需要具备相关的技术知识和能力。以下是常见的 WebRTC 前端面试题:

1. WebRTC 的基本组件是什么? ​

这个问题考察面试者对 WebRTC 技术的基本了解。期望的答案会提到 WebRTC 的三大主要组件:MediaStream(媒体流,负责捕捉音频和视频)、RTCPeerConnection(用于音视频的传输控制)、RTCDataChannel(允许浏览器之间传输数据)。

2. 如何实现 WebRTC 的信令交换?请描述信令过程。 ​

这个问题测试面试者对 WebRTC 建立连接的过程的理解。信令不是 WebRTC 规范的一部分,但它是必要的步骤来交换信息,比如 SDP 描述符,用于建立连接。面试者可以提到使用 WebSocket、SSE(Server-Sent Events)或其他技术来实现信令服务器。

3. 解释 STUN 和 TURN 服务器的作用以及它们在 WebRTC 中的重要性。 ​

STUN(Server Traversal Utilities for NAT)服务器帮助 WebRTC 客户端发现它们的公共 IP 地址和 NAT 后面的端口,而 TURN(Traversal Using Relays around NAT)服务器用于中继数据,当直接 P2P 连接失败时作为备选。这个问题考查面试者对 NAT 穿透和 P2P 连接的理解。

4. WebRTC 中如何处理 NAT 穿透? ​

这一问题深入考察 STUN 和 TURN 服务器的作用。期望的回答会详细解释这两种服务器如何帮助 WebRTC 应用绕过 NAT(网络地址转换)和防火墙限制,实现端到端的连接。

5. 如何在 WebRTC 中保证数据的安全传输? ​

这个问题关注的是面试者对 WebRTC 安全特性的理解。期望的答案会提到 SRTP(Secure Real-time Transport Protocol)用于加密和验证媒体数据,以及 DTLS(Datagram Transport Layer Security)用于安全地协商密钥,保护数据通道。

下面是五道 WebRTC 前端面试题,包括详细答案:

6. 什么是 WebRTC,它如何工作? ​

WebRTC(Web Real-Time Communication)是一种开放源码的项目,允许网页浏览器通过简单的 API 进行实时通讯(RTC),支持视频、音频和普通数据的实时通信。WebRTC 工作流程主要包括以下几个步骤:

  • 媒体捕获:使用 MediaStream API 捕获音频和视频。
  • 建立连接:通过 RTCPeerConnection 建立一个对等(Peer-to-Peer)的连接,用于传输音频、视频和数据。
  • 数据交换:RTCDataChannel 允许对等端之间通过建立的连接交换数据。
  • 信令:WebRTC 本身不指定信令协议,开发者需要实现自己的信令机制(通常使用 WebSocket 或 REST API)来交换元数据(如 SDP 描述符和 ICE 候选)以建立和维护连接。

7. 请解释 SDP(Session Description Protocol)在 WebRTC 中的作用。 ​

SDP(会话描述协议)是用于描述多媒体通信会话的信息的格式,它在 WebRTC 中用于初始化通信会话。当建立一个 WebRTC 连接时,浏览器会创建一个包含诸如编解码器信息、媒体类型(音频或视频)和网络信息的 SDP 描述符。这个描述符被发送到远端对等体作为信令过程的一部分,以便两端能够了解并协商建立连接的参数。

8. ICE(Interactive Connectivity Establishment)是什么,以及它是如何帮助 WebRTC 建立稳定连接的? ​

ICE 是一种框架,用于允许网络应用(如 WebRTC)通过 NAT(网络地址转换)和防火墙在对等端之间找到最佳的路径来发送和接收媒体。它通过使用 STUN(Session Traversal Utilities for NAT)服务器来发现公网地址,以及 TURN(Traversal Using Relays around NAT)服务器来中继流量(如果直接通信失败)来实现这一点。ICE 过程开始于收集候选(网络连接地址),然后通过信令交换这些候选,最后通过连通性检查确定最佳的传输路径。

9. WebRTC 中的 NAT 穿透技术包括哪些? ​

NAT 穿透是允许位于 NAT 或防火墙后的设备进行直接通信的技术。WebRTC 使用以下技术来实现 NAT 穿透:

  • STUN(Session Traversal Utilities for NAT):帮助客户端发现它们的公网地址和端口,以便在公网上进行通信。
  • TURN(Traversal Using Relays around NAT):当 STUN 无法实现 NAT 穿透时,TURN 服务器充当中继,转发两个不直接连通的端点之间的流量。
  • ICE(Interactive Connectivity Establishment):综合使用 STUN 和 TURN 来发现最佳的通信路径。

10. 描述 WebRTC 的安全特性。 ​

WebRTC 设计时就考虑了安全性,采用了多种机制来保证通信的安全:

  • 加密:所有 WebRTC 组件的通信都是加密的。媒体流通过 SRTP(Secure Real-time Transport Protocol)加密,数据通道通过 DTLS(Datagram Transport Layer Security)加密。
  • 身份验证:DTLS 还提供了端到端的身份验证,确保通信双方的身份。
  • 数据保密性和完整性:SRTP 和 DTLS 不仅加密数据,还确保数据的完整性,防止数据在传输过程中被篡改。
  • 安全的信令:虽然 WebRTC 协议栈中没有规定特定的信令机制,但是建议开发者使用 HTTPS 或 WSS(加密的 WebSocket)来保护信令数据的传输过程,以防止信令被截获或篡改。

WebRTC 的这些安全特性确保了即使在公共网络中,通信内容也能得到保护,使得 WebRTC 成为实现实时通信(RTC)的安全、可靠的技术选择。

以上面试题涵盖了 WebRTC 的基本概念、技术细节和安全机制,旨在评估面试者是否具备使用 WebRTC 开发实时通信应用的技能和知识。准备这些问题的答案有助于前端开发人员在面试中展现他们对 WebRTC 技术的深入理解。