什麼是 UDP?

UDP 是一種傳輸層通訊協定,是一種非常常見的音訊和視訊流量通訊協定。

學習目標

閱讀本文後,您將能夠:

  • 定義 UDP/IP
  • 描述 UDP 的一些使用案例

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

什麼是使用者資料包通訊協定 (UDP/IP)?

使用者資料包通訊協定 (UDP) 是一種跨網際網路使用的通訊協定,用於對時間敏感的傳輸,例如影片播放DNS 查閱。它透過在資料傳輸之前不正式建立連線來加速通訊。這使得資料可以非常快速地傳輸,但也可能導致封包在傳輸過程中丟失——並為 DDoS 攻擊形式的漏洞利用創造機會。

UDP 如何運作?

與所有的網路通訊協定一樣,UDP 是一種標準化的方法,用於在網路中的兩台電腦之間傳輸資料。與其他通訊協定相比,UDP 以簡單的方式完成此過程:它將封包(資料傳輸單元)直接傳送到目標電腦,而無需先建立連線,表明所述封包的順序或檢查它們是否按預期到達。(UDP 封包被稱為「資料包」。)

TCP 與 UDP

UDP 比另一個常見的傳輸通訊協定 TCP 要更快,但可靠性更差。在 TCP 通訊中,兩台電腦先透過一個稱為「交握」的自動過程建立連線。只有在交握完成後,一台電腦才會向另一台電腦實際傳輸資料封包。

UDP 通訊不會經過這個過程。一台電腦能夠簡單地開始向另一台電腦傳送資料:

TCP 與 UDP 通訊

此外,TCP 通訊會表明接收資料封包的順序,並確認封包如預期到達。如果封包沒有到達(例如,由於中繼網路擁塞),TCP 會要求重新傳送。UDP 通訊不包含任何此類功能。

這些差異創造了一些優點。由於 UDP 不需要「交握」或檢查資料是否正確到達,因此它能夠比 TCP 更快地傳輸資料。

然而,這種速度會產生弊端。如果 UDP 資料包在傳輸過程中丟失,它不會重新傳送。因此,使用 UDP 的應用程式必須能夠容忍錯誤、丟失和重複。

(從技術上講,這種封包丟失不是 UDP 中的缺陷,而是網際網路構建方式的結果。大多數網路路由器不會按設計執行封包排序和到達確認,因為這樣做需要無法實現的額外記憶體量。TCP 是一種在應用程式需要時填補這一缺漏的方法。)

UDP 有什麼用途?

UDP 通常用於對時間敏感的通訊,在這種通訊中,偶爾丟棄封包比等待更好。語音和視訊流量使用此通訊協定傳送,因為它們都是時間敏感的,並且在設計上能夠處理某種程度的丟失。例如,許多基於網際網路的電話服務使用的 VOIP 透過 UDP 執行。這是因為相比清晰但延遲嚴重的電話對話而言,靜態電話對話更為可取。

這也使得 UDP 成為線上遊戲的理想通訊協定。同樣,由於 DNS 伺服器都需要快速且高效,因此它們也透過 UDP 進行運作。

如何在 DDoS 攻擊中使用 UDP?

在大多數使用案例中,像封包丟失這樣的 UDP「風險」並不是一個嚴重的問題。然而,UDP 可被用於惡意用途。由於 UDP 不需要交握,因此攻擊者可以使用 UDP 流量「淹沒」目標伺服器,而無需先取得與該伺服器開始通訊的權限。

未定義

典型的 UDP 洪水攻擊會將大量的 UDP 資料包傳送到目標電腦上的隨機連接埠。這會強制目標回應同樣大量的 ICMP 封包,表示這些連接埠無法連線。回應每個詐騙資料包所需的運算資源可能會耗盡目標,導致對合法流量造成阻斷服務。(要瞭解更多資訊,請閱讀我們有關 UDP 洪水攻擊的文章。)

組織可以使用多種方法來防禦 UDP 洪水攻擊。一種是限制 ICMP 封包的回應率,但這種方法也可能篩選掉合法的封包。另一種方法是透過包含許多分散式資料中心的中繼網路接收和回應 UDP 流量,防止單一原始伺服器因詐騙請求而不堪重負。進一步瞭解 Cloudflare 如何使用此策略來協助組織抵禦 DDoS 攻擊