
將TCP包成UDP進行傳送
在看論文時發現了某篇作者使用了TCP over UDP這個技術,所以把看完的資料整理一下。
TCP over UDP 是什麼?
簡單來說就是將「TCP 封裝在 UDP 裡」進行傳輸
在 VPN、零信任網路、工控安全與穿透防火牆 等應用場景中比較常見。
為什麼要 TCP over UDP?
你可以把它想成:
本來該用 TCP 傳的資料,用 UDP 傳送出去,但內容仍然是 TCP 封包格式。
這樣做有什麼好處?
- 穿越防火牆與 NAT:許多網路只開放 UDP(如 DNS、VoIP)或只有特定端口(如 443),UDP over TCP 或 TCP over UDP 可以繞過這些限制。
- 自己控制重傳與連線狀態:UDP 沒有連線狀態,可以讓應用層自行決定傳輸策略(例如 QUIC、WireGuard、Nebula)。
- 降低封包處理延遲:某些場景下 UDP 封裝反而延遲更低,並減少核心堆疊負擔。
實際運作方式
在 TCP over UDP 的情境下,流程大致如下:
- 應用程式建立一條「虛擬 TCP 連線」,例如 Web 連線或資料同步。
- 中間的傳輸協定(例如 VPN、Proxy、Overlay Network)將這些 TCP 封包重新打包成 UDP 封包。
- 這些 UDP 封包透過網路傳送出去,到另一端後再**還原成原始 TCP **。
實際案例
1️.Nebula Overlay Network
Nebula 是一套基於 UDP 的點對點加密 Overlay,雖然實際上應用程式跑的是 TCP,但它會透過 UDP 傳送所有封包,實現加密與跨網段連線功能。
2️.WireGuard VPN
WireGuard 使用 UDP 傳輸封包,但可以封裝任意協定(TCP、UDP、ICMP)在其中,確保端對端加密、隧道化與低延遲。
3️.Cloudflare Tunnel / ZeroTier / Tailscale
這些軟體會將 TCP 封包轉換成 UDP 流,確保可以穿透 NAT、躲過封包審查,並達成私網穿透與節點對接。
資安風險與對策
由於 UDP 本身不保證順序、不保證傳達,所以:
- 有中間人攻擊(MitM)或重送攻擊風險
- 必須透過加密與驗證(例如 TLS、Noise 協定)來確保安全性
- 如果搭配了憑證機制,就能確認彼此身份,避免偽造連線
結論
特性 | 傳統 TCP | UDP | TCP over UDP |
---|---|---|---|
穿透防火牆 | 難 | 較容易 | V |
加密靈活性 | 限 TLS | 自訂 | 高度可控 |
封包順序控制 | 自帶 | X | 應用層控制 |
適用場景 | 一般網站 | 影音/遊戲 | VPN、Overlay、安全通訊 |
🗒 延伸閱讀
- Nebula 官方文件
- WireGuard Protocol
- Cloudflare Warp 使用 QUIC
- 我讀的那篇論文:Flexible zero trust architecture for the cybersecurity of industrial IoT infrastructures
留言區從原本需要登入github才能留言的方式改成使用 Twikoo
不須登入即可留言
如果你要匿名的話姓名、郵箱、網址可以隨便打沒關係
留QQ郵箱的話可以自動偵測郵箱頭像
有想多交流的話可以留網址我看到會過去逛逛