Web 筆記 - 初步認識串流技術與應用
這篇筆記主要是想幫自己搞清楚那些常聽到的通訊協定(TCP、UDP之類的)到底是什麼,還有了解一下影片串流的技術究竟有哪些實現方式。透過動手做幾個簡單的實驗和比較不同方法,希望能更直觀地理解這些技術的優缺點,以及它們適合哪些使用場景。
TCP (Transmission Control Protocol)
TCP(傳輸控制協定)其實就是一種強調「先打招呼再傳東西」的通訊方式。它在資料傳輸前一定要先經過所謂的「三次握手」,確認雙方都準備好了,才能開始交換資料。這樣做的好處是,傳送端很清楚接收端的連線狀態,不會冒然傳輸。
另外,TCP 的一大特點就是可靠性。如果傳輸過程中有遺失或出錯,它會自動重新傳,直到成功送達或真的超時為止。而且,它還能確保資料的順序正確,內容完整,不會前後顛倒或缺一塊。
舉個生活化的例子,就像寄掛號信。你寄出去後會收到回執通知,確定對方有收到了。如果沒有收到通知,那就表示信可能沒送到,這時候就可以再寄一次,直到對方真的收到為止。
UDP (User Datagram Protocol)
UDP(User Datagram Protocol)跟 TCP 比起來就顯得隨性許多。它不需要像 TCP 那樣先「三次握手」建立連線,送資料前不用先確認對方有沒有準備好。傳送端只要知道對方的位址,就直接把資料包丟出去,能不能順利抵達就看運氣。
但也因為這樣,UDP 的可靠度比較低。資料有可能遺失、重複,甚至送錯了也不會幫你重傳,系統也沒有機制能保證資料一定會完整抵達。換句話說,它追求的是速度與簡單,而不是絕對的安全性。
要想像的話,可以把它比喻成「貼郵票的平信」——你把信丟進郵筒就算完成寄送,但信件最後有沒有送到、會不會中途遺失或延誤,你完全沒辦法確定。它就是這麼直白而快速的傳輸方式
對照
| 協定 | 連接模式 | 傳輸可靠性 | 適用場景 | 類比 |
|---|---|---|---|---|
| UDP | 無連接式 | 不可靠 | 即時影音串流、即時遊戲、VoIP 等 | 標準郵票寄信 |
| TCP | 有連接、握手機制 | 可靠 | HTTP、FTP、檔案傳輸、Web 服務等 | 掛號附回執聯寄信 |
範例 1: 本機 Webcam → UDP → 本機媒體播放器
範例 2: Ubuntu (BigBuckBunny.mp4) → UDP → 本機媒體播放器
UDP 串流特性重點
- 低延遲:
- UDP 相比 TCP 更能降低傳輸延遲。
- 適用於要求「即時回饋」或「近即時」串流的場合(例如現場直播、視訊通話、即時監控)。
- 可能發生掉幀(丟包):
- 由於 UDP 不保證資料到達率,一旦網路狀況不佳或無法及時處理,可能導致畫面延遲、馬賽克,甚至播放端掉幀。
- 一對一的限制:
- 基本上,UDP 推流在這些簡單範例裡主要適用「單一發送端 → 單一接收端」的模式。
- 如果同時有多個接收端,需要額外機制(例如在網路層建立 multicast,或使用專門的媒體伺服器)才能推送給多位 user。
範例 3: 本機 Webcam → RTMP → RTMP Server → RTMP → 本機 MPV
補充說明:MPV 是一款免費、開源、跨平台的媒體播放器,支援多種影音格式和串流協定。