Skip to content

WebRTC 技術概述

WebRTC(Web Real-Time Communication)是一套開放標準,讓瀏覽器和手機 App 不用裝任何外掛,就能做即時語音、視訊和資料傳輸。它把即時通訊的技術門檻拉低了一大截。

WebRTC 架構

核心元件

WebRTC 的技術架構由三個主要部分組成:

元件功能
getUserMedia存取裝置的麥克風和攝影機
RTCPeerConnection建立端對端的媒體連線
RTCDataChannel端對端的任意資料傳輸

協定堆疊

WebRTC 使用的協定堆疊與傳統 VoIP 有顯著差異:

層級WebRTC傳統 VoIP
信令無標準(通常 WebSocket + 自定義)SIP
媒體安全DTLS-SRTP(強制)SRTP(選配)
媒體傳輸SRTP over UDP/TCPRTP over UDP
NAT 穿透ICE + STUN + TURN(強制)依賴 SBC 或 STUN
語音 CodecOpus(強制)+ G.711G.711 / G.729 等
視訊 CodecVP8/VP9/H.264(至少一種)H.264

有一點常讓人意外:WebRTC 刻意不規定信令協定,把選擇權留給開發者。常見的做法有 WebSocket + JSON、SIP over WebSocket(RFC 7118),或各種自定義協定。

媒體處理引擎

WebRTC 內建的媒體處理功能:

  • 迴音消除(Acoustic Echo Cancellation, AEC)
  • 噪音抑制(Noise Suppression, NS)
  • 自動增益控制(Automatic Gain Control, AGC)
  • 抖動緩衝(Jitter Buffer)
  • 頻寬估算(Bandwidth Estimation)
  • 前向錯誤更正(Forward Error Correction)

ICE/STUN/TURN 機制

NAT 穿透的挑戰

在真實網路中,大多數用戶端位於 NAT 或防火牆後方,無法直接被外部連線。WebRTC 使用 ICE 框架統一處理各種 NAT 穿透場景。

ICE(Interactive Connectivity Establishment)

ICE(RFC 8445)是 WebRTC 的 NAT 穿透框架,它收集所有可能的連線候選者(Candidate),並透過系統化的檢查找出最佳路徑。

ICE Candidate 類型:

類型優先級說明
Host最高本機 IP 位址(可能是私有 IP)
Server Reflexive (srflx)透過 STUN 取得的公網 IP:Port
Relay最低TURN 伺服器分配的中繼位址
Peer Reflexive (prflx)中高連線檢查中發現的位址

ICE 連線建立流程:

  1. 雙方各自收集所有 Candidate
  2. 透過信令交換 Candidate 列表
  3. 依優先級排列 Candidate 配對
  4. 對每對 Candidate 進行連通性檢查(STUN Binding Request)
  5. 選擇最佳可用的配對進行通訊

STUN(Session Traversal Utilities for NAT)

STUN(RFC 5389)協助用戶端發現自己在 NAT 後的公網位址:

客戶端                  STUN Server
   |                       |
   |-- Binding Request --->|
   |                       |  (STUN Server 看到客戶端的
   |<-- Binding Response --|    公網 IP:Port 並回傳)
   |                       |

STUN 可以穿透的 NAT 類型:

NAT 類型STUN 可穿透說明
Full Cone可以最寬鬆的 NAT
Restricted Cone可以限制來源 IP
Port Restricted Cone可以限制來源 IP + Port
Symmetric不可以每個目的地分配不同映射

TURN(Traversal Using Relays around NAT)

TURN(RFC 5766)在 STUN 無法穿透的情況下(如 Symmetric NAT),提供媒體中繼服務:

客戶端 A                TURN Server                客戶端 B
   |                       |                          |
   |-- Allocate Request -->|                          |
   |<-- Allocate Response -|  (分配中繼位址)          |
   |                       |                          |
   |== 媒體 =============>|========= 媒體 ==========>|
   |<= 媒體 ==============|<======== 媒體 ===========|

TURN 是要成本的。中繼會吃伺服器的頻寬和運算,每通通話都得雙倍頻寬(收一份、再轉發一份),規模一大,TURN 伺服器的開銷就不能忽視。實務上大約 10-30% 的連線會走到 TURN。

瀏覽器支援狀況

主要瀏覽器支援

瀏覽器支援版本備註
Chrome28+Google 主導 WebRTC 開發
Firefox22+Mozilla 早期參與者
Safari11+較晚加入,功能逐步完善
Edge79+(Chromium)與 Chrome 共用引擎
iOS Safari11+僅限 Safari(其他瀏覽器受限)
Android Chrome28+完整支援

已知限制

平台限制說明
iOS所有瀏覽器必須使用 WebKit 引擎,WebRTC 行為一致
Safari部分進階 API(如 insertable streams)支援較慢
企業環境部分 Proxy 會阻擋 UDP,需 TURN over TCP/TLS
防火牆嚴格防火牆可能阻擋 STUN/TURN 流量

Codec 支援

CodecChromeFirefoxSafari
Opus(音訊)支援支援支援
G.711(音訊)支援支援支援
VP8(視訊)支援支援支援
VP9(視訊)支援支援部分支援
H.264(視訊)支援支援支援
AV1(視訊)支援支援逐步支援

與 SIP 的橋接

為何需要橋接

企業客服中心的電話系統普遍採用 SIP 協定,而 WebRTC 使用不同的信令和媒體機制。WebRTC Gateway 負責在兩個世界之間進行轉換。

WebRTC Gateway 的轉換工作

轉換項目WebRTC 側SIP 側
信令協定WebSocket (WSS)SIP over UDP/TCP/TLS
媒體加密DTLS-SRTP(強制)SRTP 或 RTP
金鑰交換DTLS 握手SDES 或無
NAT 穿透ICE/STUN/TURNSBC 處理
語音 CodecOpusG.711 / G.729
視訊 CodecVP8/VP9H.264

橋接架構

瀏覽器                WebRTC GW / SBC              SIP 環境
  |                        |                          |
  |-- WSS (SIP/JSON) ---->|                          |
  |                        |-- SIP/UDP -------------->|
  |-- DTLS-SRTP --------->|                          |
  |                        |-- RTP/SRTP ------------>|
  |                        |                          |
  | ICE/STUN/TURN         | NAT/拓撲隱藏             | IP-PBX

在客服中心的應用場景

場景一:瀏覽器軟體電話

客服人員使用瀏覽器中的 WebRTC 軟體電話取代實體 IP 話機:

優勢:

  • 無需安裝桌面應用程式
  • 降低終端設備成本
  • 支援遠端客服(居家辦公)
  • 整合 CRM 等 Web 應用

考量:

  • 需要穩定的網路環境
  • 瀏覽器需保持開啟
  • 部分功能(如 BLF 指示燈)需以 UI 方式實現
  • 音訊設備(耳麥)品質影響通話體驗

場景二:網頁即時客服

客戶從企業網站直接發起語音或視訊通話:

客戶瀏覽器  ──WebRTC──>  WebRTC GW  ──SIP──>  ACD  ──>  客服座席

優勢:

  • 客戶無需撥打電話,點擊即可通話
  • 降低客戶的通訊成本
  • 可同時搭配螢幕共享、文字聊天
  • 收集更多客戶互動數據

場景三:行動 App 整合

將 WebRTC 嵌入企業的行動 App,提供 App 內通話功能:

  • 使用 WebRTC SDK(iOS / Android 原生或跨平台函式庫)
  • 透過推播通知喚醒 App 接聽來電
  • 支援語音與視訊通話
  • 可搭配文字訊息和檔案傳輸

場景四:視訊客服

特定場景需要面對面溝通(如保險理賠、遠端身分驗證):

應用說明
遠端身分驗證視訊通話 + 證件拍照上傳
保險理賠現場拍攝損壞情況
技術支援視訊指導客戶操作
VIP 服務面對面專屬服務體驗

在客服中心部署 WebRTC,有幾個實務建議:TURN 伺服器要佈得夠,連線成功率才穩;橋接點選一台支援 WebRTC 的 SBC;座席配高品質的 USB 耳麥(音訊設備直接影響通話體驗);網路的 QoS 一定要設好,尤其座席用無線網路的時候。

安全性考量

WebRTC 的安全設計

WebRTC 在設計上強制啟用安全機制:

安全特性說明
DTLS-SRTP 強制媒體加密不可關閉
安全來源限制getUserMedia 僅允許 HTTPS 或 localhost
使用者授權存取麥克風/攝影機需使用者明確同意
無永久授權重新載入頁面需重新授權

企業環境的額外考量

考量點建議
信令加密WebSocket 使用 WSS(TLS)
身分驗證整合企業 SSO / Token 驗證
存取控制限制 WebRTC 功能的存取權限
錄音合規確保 WebRTC 通話可被錄音系統擷取
日誌記錄記錄所有 WebRTC 會話的建立與結束

參考標準

標準名稱
RFC 7742WebRTC Video Processing and Codec Requirements
RFC 7874WebRTC Audio Codec and Processing Requirements
RFC 8445ICE: Interactive Connectivity Establishment
RFC 5389STUN: Session Traversal Utilities for NAT
RFC 5766TURN: Traversal Using Relays around NAT
RFC 7118SIP over WebSocket
RFC 8834Media Transport and Use of RTP in WebRTC

承暉資訊資源中心