TCP 保證交付。 UDP 則不然。
這就是核心區別。其他一切都由此而來。
TCP(傳輸控制協議)
確保每個資料包按順序完好無損地到達。如果資料包丟失,TCP 會重新傳送它。就像帶有跟蹤功能的認證郵件一樣。
工作原理:
- 傳送資料前建立連線
- 確認收到每個資料包
- 重新傳送丟失的資料包
- 以正確的順序傳送資料包
缺點: 較慢。所有檢查和重新傳送都會增加開銷。
使用者:
- 網頁瀏覽 (HTTP/HTTPS)
- 電子郵件(SMTP、IMAP)
- 檔案傳輸 (FTP)
- SSH/遠端訪問
- 任何精度比速度更重要的情況
UDP(使用者資料包協議)
傳送資料包而不進行確認。火併忘記。就像沒有追蹤的普通郵件一樣。
工作原理:
- 無連線設定
- 立即傳送資料包
- 不檢查他們是否到達
- 不保證訂單
優點: 快得多。沒有來自確認的開銷。
使用者:
- 線上遊戲(實時動作)
- 影片流(Netflix、YouTube)
- VoIP 通話(Zoom、Discord)
- DNS 查詢
- 任何速度比完美更重要的情況
為什麼遊戲使用 UDP
在多人遊戲中,如果包含您在時間 1:23:45 的位置的資料包丟失,則無需重新傳送它。當它到達時,它已經過時了。你已經到了一個新的位置。
最好只傳送下一個位置更新並繼續移動。缺少一幀就好了。等待重傳會導致延遲。
為什麼網頁瀏覽使用 TCP
載入網頁需要每一部分(HTML、CSS、影象)完好無損。丟失一個資料包可能會破壞整個頁面佈局。
速度比準確性更重要。您寧願多等待 0.2 秒,也不願看到損壞的頁面。
哪個更好?
都不是。他們解決不同的問題。
在以下情況下使用 TCP: 資料必須完整且準確(下載、訊息、財務交易)。
在以下情況下使用 UDP: 速度和實時效能比完美交付(遊戲、實時影片、語音通話)更重要。
需要選擇嗎?
通常不會。應用程式自動使用適當的協議。您的瀏覽器使用 TCP,您的遊戲使用 UDP,您的視訊通話使用 UDP。
你只會在以下情況下關心這個:
- 配置防火牆(需要允許TCP或UDP的特定埠)
- 遊戲埠轉發(通常是UDP)
- VPN 或連線問題故障排除
- 設定伺服器或網路應用程式
底線
TCP 可靠但速度較慢(驗證交付)。 UDP 速度快但不可靠(無驗證)。
應用程式根據需要進行選擇。網頁需要準確性(TCP)。影片遊戲需要速度(UDP)。
不需要選擇。軟體會自動處理它。