一、先给你一个总览(必须建立全局认知)

WebRTC 的本质是一条完整的通信链路:
信令 → 建连(ICE)→ 数据传输(RTP)→ 质量控制(RTCP)

全链路结构图

【信令阶段】
A → 信令服务器 → B
(Offer / Answer / ICE)

↓

【建连阶段】
ICE(STUN / TURN)
→ 找到可用路径

↓

【传输阶段】
RTP(音视频 / 数据)

↓

【控制阶段】
RTCP(丢包 / 带宽 / 反馈)

二、第一层:信令(Signaling)

本质一句话

信令负责“让两端知道怎么连”

它干的事情

- 交换 Offer(能力描述)
- 交换 Answer(确认参数)
- 交换 ICE 候选(通信路径)

重点理解

👉 WebRTC 不提供信令

你必须自己实现:

  • WebSocket(最常见)
  • HTTP(不推荐)

本质定位

信令 = 控制面(Control Plane)

三、第二层:ICE(连接建立核心)

ICE 是什么?

ICE(Interactive Connectivity Establishment)
是一套“找通信路径”的机制

为什么需要 ICE?

因为现实网络:

设备在 NAT 后面 → 不能直接访问

tips:
NAT

路由器帮你“翻译地址”

把内网 IP 映射成公网 IP,让设备能访问互联网

ICE 做了什么?

👉 收集所有“可能通信路径”

- 内网IP
- 公网IP(STUN)
- TURN中继地址

建连过程

双方交换 ICE Candidate
↓
尝试所有路径

↓
找到能通的那一条

优先级(面试加分)

优先顺序:

P2P直连 > STUN打洞 > TURN中继

解释:STUN 是候选路径之一,TURN 是兜底路径,最终由 ICE 选择是否建立 P2P。

STUN ≠ 通信方式
STUN = 帮助实现 P2P 的工具

本质总结

ICE 本质是一个“路径选择算法”

四、第三层:RTP(数据传输核心)

RTP 是什么?

RTP(Real-time Transport Protocol)
是 WebRTC 用来传输音视频的协议

特点

  • 基于 UDP
  • 低延迟
  • 不保证可靠

RTP 传什么?

- 视频帧(H264 / VP8)
- 音频数据
- DataChannel 数据(类似)

为什么不用 TCP?

因为:

TCP:
丢包 → 重传 → 卡顿 ❌

RTP:
丢包 → 忽略 → 流畅 ✅

本质理解

RTP = “为了实时性牺牲可靠性”

五、第四层:RTCP(质量控制核心)

RTCP 是什么?

RTCP(Real-time Control Protocol)
是 RTP 的“监控 + 调度系统”

它干的事情

1️⃣ 丢包反馈

告诉对方:哪些包丢了


2️⃣ 带宽控制

当前网络不好 → 降码率


3️⃣ 延迟统计

RTT(往返时间)


4️⃣ 抖动控制

Jitter(网络波动)


本质总结

RTCP 让“不可靠的 UDP”变得“可控”

六、把四层串起来

完整链路你要能这样讲

第一步:信令

交换 Offer / Answer / ICE


第二步:ICE

找到通信路径(P2P or TURN)


第三步:RTP

开始传音视频数据


第四步:RTCP

动态调整质量(丢包 / 带宽 / 延迟)

一句话终极总结

WebRTC 通过信令交换连接信息,利用 ICE 完成网络路径选择,基于 RTP 进行实时数据传输,并通过 RTCP 实现质量控制,从而在复杂网络环境下实现稳定的低延迟通信。


七、你必须理解的“架构本质”

WebRTC 其实是四层系统

  • 应用层:你的业务(视频/控制)
  • 控制层:信令
  • 连接层:ICE
  • 传输层:RTP/RTCP

 一整套“从建连到传输再到优化”的系统

八、面试高频问题

1:为什么 WebRTC 有时候卡?

👉 答:

  • 丢包严重
  • 带宽不足
  • TURN 中继(路径远)

2:如何优化?

👉 答:

  • 自适应码率(RTCP)
  • 降分辨率
  • 就近部署 TURN

3:RTP 和 RTCP 区别?

👉 标准回答:

RTP 负责数据传输,RTCP 负责传输质量控制和反馈。

4:ICE 为什么复杂?

👉 答:

因为要在 NAT、内网、公网等复杂网络环境下找到可用通信路径。

九、架构(设备 / 机器人)


实际架构

手机 App
↓(WebSocket)
信令服务器
↓
设备(Linux)
↓
WebRTC(RTP + RTCP)


分工

功能技术
视频流RTP
控制通道DataChannel
状态同步MQTT
连接建立信令 + ICE

面试加分总结

在设备场景中,WebRTC 主要承担实时音视频和低延迟控制,而系统状态和业务逻辑通常通过 MQTT 或 WebSocket 实现。

总结(终极版)

WebRTC 是一个完整的实时通信体系:通过信令完成连接协商,通过 ICE 实现网络路径选择,通过 RTP 进行实时数据传输,并通过 RTCP 实现传输质量控制。它解决的核心问题是在复杂网络环境下,实现稳定、低延迟的端到端通信。

Logo

火山引擎视频云技术社区,是面向 AI 音视频开发者的技术交流平台。这里汇聚源自抖音、豆包等亿级 DAU 产品的 RTC、直播、点播、AI 媒体处理、音视频互动技术,提供接入指南、最佳实践、性能调优、场景案例、Demo 代码、开源项目、白皮书和 API 文档。社区汇聚官方工程师与一线开发者,为 AI 视频通话、数字人、AI 视频处理等应用的开发与落地提供技术支持。

更多推荐