WebRTC,gRTC,SIP

目录
WebRTC,gRTC,SIP 都属于网络通信领域,但处于不同层级,解决不同问题。
- WebRTC: 解决"实时音视频/数据传输"
- gRPC: 解决"服务之间高效调用"
- SIP: 解决"电话/语音会话成立"
WebRTC
Web Real-Time Communication 是一个用于浏览器和应用之间进行实时通信的技术。
主要解决:
- 实时音频通话
- 视频通话
- 屏幕共享
- 点对点数据传输
例如:
- 视频会议
- 在线语音聊天
- 远程协作
- 浏览共享文件
核心特点
点对点(P2P)
浏览器之间直接数据传输:
A 浏览器 <-----> B 浏览器超低延迟
通常几十毫秒到几百毫秒
适合:
- 视频会议
- 游戏语音
- 实时互动
不适合:
- 普通文件下载
- 长时间离线消息
内置能力
WebRTC已经帮你处理:
- 音视频编码
- 网络抖动
- 丢包恢复
- NAT穿透
- 加密
开发者不需要从 TCP / UDP底层重新做。
WebRTC的组成
MediaStream
获取摄像头、麦克风:
navigator.mediaDevices.getUserMedia()RTCPeerConnection
建立 P2P 连接
RTCDataChannel
除了音视频,还能传输:
- 文本
- 文件
- 游戏数据
WebRTC的典型架构
浏览器A
│
│ 信令(Signaling)
▼
信令服务器
▲
│
浏览器B
建立连接后:
浏览器A <------P2P------> 浏览器B注意:WebRTc不负责"信令"。
通常不需要:
- WebSocket
- gRPC
- HTTP
- SIP
来交换 SDP / ICE 信息。
gRPC
gRPC 是 Google 开发的高性能 RPC (远程过程调用) 框架。
解决的是:
“一台机器如何调用另一台机器上的函数”
类似:
result = remote_server.add(1, 2)但实际上是网络通信。
gRPC 的特点
基于 HTTP/2
因此支持:
- 多路复用
- 长连接
- 双向流
- 高性能
使用 Protocol Buffers
数据不是 JSON,而是 protobuf。
message User {
string name = 1;
int32 age = 2;
}优点:
- 更小
- 更快
- 强类型
自动生成代码
定义接口:
service UserService {
rpc GetUser(UserRequest) returns (UserResponse);
}自动生成:
- GO
- C++
- java
- Python
- TypeScript
客户端代码。
gRPC 常见场景
微服务通信
用户服务 <----gRPC----> 订单服务这是最常见用途。
AI 推理
很多 AI 服务:
- TensorFlow Serving
- NVIDIA Triton
都使用gRPC。
实时流
gRPC 支持 streaming:
client ---> stream ---> server因此也适合:
- 日志
- 实时数据
- loT
gRPC 与 REST 的区别
| 项目 | gRPC | REST |
|---|---|---|
| 协议 | HTTP/2 | HTTP/1.1 |
| 数据 | protobuf | JSON |
| 性能 | 高 | 中 |
| 浏览器支持 | 一般 | 很好 |
| 类型安全 | 强 | 弱 |
| 流式通信 | 强 | 一般 |
SIP
“Session Initiation Protocol” 是一个"会话建立协议"。
核心作用:
建立、修改、结束音视频通话。
它本身:
- 不传输音频
- 不传输视频
而是:
- “打电话”
- “挂电话”
- “邀请加入会议”
这种控制协议。
SIP 类似电话系统
A 拨号给 B
B 响铃
B 接听
开始通话
挂断这些流程由 SIP 管理。
SIP 消息示例
INVITE sip:bob@example.com SIP/2.0表示:发起呼叫
SIP常见消息
| 消息 | 含义 |
|---|---|
| INVITE | 呼叫 |
| ACK | 确认 |
| BYE | 挂断 |
| REGISTER | 注册 |
| OPTIONS | 能力查询 |
SIP 常见应用
VoIP 电话
例如:
- 企业 IP 电话
- 呼叫中心
- 软电话
IMS/运营商系统
移动运营商大量使用 SIP。
视频会议系统
很多传统会议系统:
- Cisco
- Avaya
- Asterisk
都基于SIP。
三者关系
易混淆点:WebRTC 和 SIP 都能做"视频通话"。但它们职责不同。
SIP + WebRTC
常见结构:
浏览器(WebRTC)
│
│ SIP over WebSocket
▼
SIP Server
│
▼
传统电话系统这里:
- WebRTC 负责媒体传输
- SIP 负责呼叫控制
gRPC + WebRTC
现代架构中:
客户端
│
gRPC
▼
信令服务器
│
WebRTC
▼
P2P 音视频这里:
- gRPC 用于信令
- WebRTC 用于实时媒体
总结
WebRTC:“如何实时传输音视频”
重点:
- 低延迟
- P2P
- 实时媒体
gPRC:“如何高性能调用远程服务”
重点:
- RPC
- protobuf
- 微服务
SIP:“如何建立和管理通话”
重点:
- 呼叫控制
- 电话系统
- VoIP
类比:
| 技术 | 类比 |
|---|---|
| SIP | 电话拨号系统 |
| WebRTC | 电话里的语音通道 |
| gRPC | 后台系统之间的高速 API |