RTC、UDP、TCP和HTTP以及直播等区别 - 教程
RTC的技术原理下面用“一张图 + 三句话”把 RTC(Real-Time Communication)的技术原理一次讲清,并给出 WebRTC 视角的完整数据流动图。
一、一张图(文字版)复制
信令通道(任意协议) 媒体通道(UDP/RTP)
┌──────────┐ ┌──────────┐
│ Caller │◀───────────▶│ Callee │
└────┬─────┘ └────┬─────┘
│Signaling │STUN/TURN
▼ ▼
┌──────────┐ ┌──────────┐
│Signaling │ │ICE/SDP │
│Server │ │NAT穿透 │
└──────────┘ └──────────┘
二、三句话速记RTC = 低延迟的音视频 + 任意数据
目标:端到端平均延迟 < 100 ms,肉眼无感知。
三大核心协议
RTP/RTCP:承载/控制媒体流
ICE + STUN/TURN:NAT 穿透与选路
SDP:会话描述(编解码器、分辨率、码率等)
四步建立连接
① 信令交换(WebSocket/HTTP)→ ② ICE 候选收集 → ③ 连通性检测(STUN/TURN)→ ④ SRTP 加密传输
三、分步详解(以 WebRTC 为例)表格
复制
阶段动作关键协议/算法目的1. 信令双方交换 SDP、ICE 候选WebSocket/HTTP协商媒体格式与网络地址2. 穿透收集本地/反射/中继候选ICE + STUN/TURN找到可达路径3. 选路连通性检测 + 优先级排序ICE Controlling/Controlled选最低延迟路径4. 传输发送 RTP 包 + 周期性 RTCP 报告RTP/RTCP over UDP实时音视频 + 丢包/抖动统计5. 安全SRTP 加密 + DTLS 握手DTLS-SRTP防窃听、防篡改四、关键技术点NACK + FEC:丢包时优先重传,大丢包用前向纠错补包。
Jitter Buffer:接收端缓冲 50-200 ms,消除网络抖动。
GCC/BBR:带宽估计算法,动态调整码率,防止拥塞。
Simulcast/SVC:多分辨率并发,弱网自动降档。
SFU/MCU:服务器只转发/混流,减轻终端编解码压力。
五、一句话总结RTC 的核心就是 用 UDP 打洞建立 P2P 通道,再通过 RTP/RTCP + 拥塞控制 + 抗丢包算法 把音视频压到 100 ms 以内传过去,无需插件,浏览器即可点对点通话。
RTC与TCP、UDP还有HTTP的区别特性RTC (WebRTC)UDPTCPHTTP核心目标超低延迟实时音视频最小延迟、无序数据报可靠字节流超文本传输传输层UDP + RTP/RTCP裸 UDP裸 TCPTCP延迟< 100 ms 端到端极低中等(重传+拥塞)高(三次握手+TLS)可靠性应用层抗丢包(NACK/FEC)不保证完全可靠(重传)完全可靠顺序允许乱序(时间戳排序)乱序严格顺序严格顺序拥塞控制GCC/BBR(带宽探测)无TCP 拥塞控制TCP 拥塞控制连接建立ICE + DTLS(P2P打洞)无连接三次握手TCP+TLS握手典型端口任意 UDP(TURN中继)任意80/44380/443用途视频通话、直播、游戏DNS、SNMP、QUIC文件、数据库Web、API浏览器支持原生 WebRTCWebRTC 内部使用WebSocket 基于 TCPXMLHttpRequest / fetch一句话记忆RTC = 用 UDP 跑实时流,自己解决丢包和顺序;TCP/HTTP = 用可靠流跑文件,延迟高但绝不丢字节。
直播用的协议是什么协议国内主流直播 = RTMP 推流 + HTTP-FLV / HLS 拉流;低延迟场景用 WebRTC-RTP,新兴协议 SRT 也在兴起。
一、推流端(主播 → 服务器)表格
复制
协议传输层典型延迟场景备注RTMPTCP1–3 s手机/PC 推流最成熟,所有云厂商都支持 SRTUDP0.5–1 s专业导播、无人机基于 UDT,抗丢包更好 WebRTCUDP< 500 ms连麦、互动直播浏览器直接推流,用 SRTP 大疆无人机、导播台已同时支持 RTMP + SRT。
二、播放端(服务器 → 观众)表格
复制
协议传输层延迟终端兼容说明HTTP-FLVTCP1–3 sApp/PC H5浏览器用 flv.js 即可播,手机端最常用HLSHTTP10–30 s全平台原生m3u8 + ts 切片,iOS 原生支持,适合做回放 WebRTCUDP< 500 ms浏览器/App连麦、超低延迟直播,需要 SRTP + ICERTMPTCP1–3 sFlash/App浏览器已淘汰,仅限 App 内播三、一张图(文字版)复制
主播手机 ──RTMP/FLV──▶ 云服务器 ──HTTP-FLV──▶ 观众 App
│ ├─HLS(m3u8)──▶ 观众 Safari
│ └─WebRTC──▶ 观众网页连麦
四、一句话记忆推流用 RTMP,秒级看 FLV,跨平台用 HLS,超低延迟上 WebRTC。