視訊會議、VoIP、監控串流無一不依賴 RTP,但許多開發者僅知「業界慣例」而不知其所以然。本文從協議設計層面剖析 RTP 的必要性,對比 TCP/UDP,揭示其核心價值。
可靠協議(如 TCP)透過超時重傳保證逐位元正確,但此機制導致兩大問題:
- 實作複雜度高。
- 網路丟包時,串流被迫暫停等待重傳,造成卡頓。
客戶端可用緩衝緩解,但互動應用(視訊會議)若緩衝超過 200ms,即時性體驗將崩潰。
結論:TCP 適合點播(VOD),不適合即時互動。
視訊會議常見場景:一台伺服器同步推流給多客戶端。
TCP 不支援多播,RTP 設計之初即為多播視訊會議而生,原生支援。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Synchronization Source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| Contributing Source (CSRC) identifiers |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
關鍵欄位解析:
| 欄位 | 功能 | 串流價值 |
|---|---|---|
| M (Marker) | 幀邊界標記 | 接收端快速定位幀界限,利於解碼器同步 |
| PT (Payload Type) | 編碼格式標識 (H.264, G.729, MPEG-4...) | 動態協商編解碼器,支援異構終端互通 |
| Timestamp | 採樣時刻 (時鐘頻率由 profile 定義) | 去抖動、音視頻同步播放、唇形同步 |
| Sequence Number | 遞增序號 | 檢測丟包、重排序、計算丟包率 |
| SSRC/CSRC | 同步源/貢獻源識別碼 | 多方混音/混像時追蹤來源 |