首頁 > web前端 > js教程 > 主體

眩暈協定、連接埠和流量

Patricia Arquette
發布: 2024-10-11 10:30:02
原創
160 人瀏覽過

STUN 是一種旨在克服 NAT 引入的通訊障礙的協定。

STUN 協定使 NAT 後面的裝置能夠發現自己的公用 IP 位址和連接埠號碼。

設備與互聯網上的 STUN 伺服器通信,STUN 伺服器將此資訊提供給客戶端設備

然後,裝置可以與網路上它想要通訊的另一台或多台裝置共用此資訊

這允許外部設備直接相互通信,有效地穿越 NAT

STUN 對於促進點對點即時通訊非常重要。

如果您想了解更多關於什麼是 STUN 伺服器,那麼您可以參考我們的文章:Stun 伺服器:NAT 的會話遍歷實用程式是什麼?


Stun Protocol, Port and Traffic

了解 NAT 問題

網路位址轉換(NAT)及其廣泛使用的解釋。

路由器使用稱為 NAT 或網路位址轉換的技術將多個私人 IP 位址對應到單一 IP 公用 IP 位址

這允許本地網路上的多個裝置使用單一公用 IP 連接到網際網路。

從而節省有限數量的 IPv4 位址。

由於連接到互聯網的設備呈指數級增長,並且提供更大位址空間的 IPv6 的採用出現了延遲,NAT 變得越來越普遍。

NAT 在點對點通訊中引入的問題

NAT 透過阻止入站流量、更改連接埠對映並對 NAT 後面的裝置隱藏公用 IP 位址來阻止裝置之間的直接通訊

因此,克服 NAT 造成的障礙對於實現互聯網上不同網路上的設備之間的直接通訊非常重要

諸如 STUN 協定之類的 NAT 橫向解決方案可讓裝置發現自己的公用 IP 位址並透過 NAT 路由器協商連線

很多時候 STUN 伺服器不足以進行 NAT 穿越,您需要回退到 TURN 伺服器

如果您正在實現一對一通訊並需要可靠的 STUN 和 TURN 伺服器,那麼您可以考慮

開放中繼項目: 免費 TURN / STUN 伺服器

Metered.ca TURN 伺服器: 具有全球覆蓋範圍的高級 TURN 伺服器

VoIP 和視訊會議等服務需要 STUN 和 TURN 伺服器。


STUN協定:NAT穿越的解決方案

什麼是 STUN?

STUN 或 NAT 會話遍歷實用程式是 RFC 5389 中定義的標準化協議,使 NAT 或防火牆後面的裝置能夠發現自己的公用 IP 位址和連接埠號碼

STUN 還可以讓設備和應用程式發現它們背後的 NAT 類型,並獲取必要的資訊以與互聯網上的其他設備建立直接通信通道

STUN 的核心功能包括:

  1. 公用 IP 位址發現: STUN 讓客戶端裝置了解其公用 IP 位址

  2. 連接埠對映: STUN 協助用戶端裝置了解 NAT 裝置為其指派的連接埠號碼

  3. NAT 類型偵測: STUN 伺服器可協助用戶端裝置了解其後面的 NAT 裝置類型。 NAT類型包括全錐NAT、受限錐NAT、對稱NAT等

  4. 促進點對點通訊:因此 STUN 伺服器促進設備之間的點對點通訊


STUN 的工作原理

STUN 如何幫助設備發現自己的公用 IP 位址和連接埠號碼

當客戶端設備向網際網路上的 STUN 伺服器發送請求。 STUN 伺服器可以看到請求來自的公用 IP 位址和連接埠號碼。

STUN 伺服器然後將此資訊傳回客戶端。這就是 STUN 伺服器如何幫助裝置發現 NAT 路由器指派給它們的自己的公用 IP 和連接埠號碼。

流程使客戶能夠

  • 了解其公共端點:了解其他設備如何在互聯網上看到它

  • 與同伴共享更正詳細信息:一旦客戶端設備從 STUN 伺服器獲取詳細信息,它就可以與互聯網上想要開始通信的其他設備共享它

  • 調整 NAT 行為:根據客戶端裝置背後的 NAT 類型調整如何遍歷 NAT 的策略

STUN 的逐步運作原理

  1. 客戶端啟動

    1. 客戶端設備使用UDP協定向STUN伺服器發送請求,以獲知自己的公網IP位址與連接埠號碼
    2. 它透過 UDP 使用者資料報協定發送 STUN 綁定請求
  2. STUN 伺服器接收

    1. STUN 伺服器接受請求並記錄請求的來源 IP 和連接埠號碼。
    2. STUN 伺服器然後將 IP 位址和連接埠號碼傳回給客戶端
  3. 綁定回應

    1. STUN 伺服器簽署 STUN 綁定回應訊息
    2. 此回應包括 MAPPED-ADDRESS 屬性、用戶端公用 IP 位址和連接埠。
  4. 客戶收據

    1. 客戶端設備然後接收來自伺服器的綁定回應
    2. 然後客戶端設備從 MAPPED-ADDRESS 屬性中擷取公用 IP 和連接埠號碼
  5. NAT 類型發現(可選):

    1. 然後,客戶端可以從不同的 STUN 伺服器執行其他測試,以確定客戶端背後的 NAT 類型
    2. 這涉及從不同連接埠發送不同的請求並評估回應
  6. 建立溝通

    1. 有了公用IP位址和連接埠號,客戶端設備就可以與網路上的其他裝置分享此資訊以建立通訊

STUN 與 TURN 和 ICE 協定

STUN 與其他 NAT 穿越方法

  1. STUN(NAT 會話遍歷實用程式)

    1. 用途:使客戶端設備能夠發現其公用 IP 和連接埠號碼
    2. 用例:適用於 NAT 和防火牆允許在已知公用 IP 位址後進行點對點直接通訊。
    3. 限制:當 NAT 和防火牆規則受到限制時不起作用。
  2. TURN(使用 NAT 周圍的中繼進行遍歷)

    1. 用途:當無法進行點對點直接通訊時,透過 TURN 伺服器中繼資料來提供回退機制
    2. 用例:當限制性 NAT 和防火牆規則不允許互聯網上的設備之間直接通訊時必不可少
    3. 操作:所有流量都經過端對端加密並透過 TURN 伺服器發送,TURN 伺服器將資料中繼到每個客戶端
    4. 權衡:您需要將伺服器置於客戶端設備附近,以減少延遲並改善通訊
  3. ICE(互動式連線建立)

    1. 用途:ICE是一個結合了STUN和TURN的框架,以在客戶端之間建立盡可能最佳的連線。
    2. 用例:用於 WebRTC 和其他即時通訊系統,以處理各種網路配置
    3. 操作

      1. 候選者收集:客戶端首先收集候選者以查看可能的端點連接,這些連接是使用主機找到的,透過 STUN 和 TURN 反射
      2. 連線檢查:然後客戶端執行檢查以查看可以使用哪些候選者建立連線
      3. 候選選擇:ICE框架選擇最佳路徑,即延遲最低的路徑來建立通訊
    4. 優點:最大化建立連線的機會,同時最佳化以獲得最佳效能

何時使用 STUN 而非其他方法

  1. 時單獨使用STUN
    1. 兩個客戶端都位於 NAT 和防火牆後面,可以在發現 IP 位址和連接埠號碼後直接通訊
    2. 客戶端都有良好的互聯網連接,網路環境是可預測的,例如設備不會像手機等那樣改變其網路
  2. 使用 STUN TURN 和 ICE

    1. 這些設備遵循嚴格的 NAT 和防火牆規則
    2. 網路環境正在發生變化,例如行動裝置等
    3. 可靠性很重要,您不能讓設備因某種原因斷開連接

注意事項摘要

  • 表演

    • STUN 在連接附近的客戶端時表現良好,但也不太可靠,但它是一個免費選項
    • TURN 提供最佳效能,但需要靠近客戶端設備的伺服器以減少延遲。如今,您擁有全球轉彎伺服器服務,例如metered.ca,效果非常好
  • 複雜性:

    • STUN 的實作與使用非常簡單
    • TURN:非常簡單易用
  • 成功率:

    • STUN:它將在限制性 NAT 和防火牆規則中失敗
    • TURN:更可靠,可與限制性 NAT 和防火牆規則搭配使用

STUN 連接埠與流量處理

STUN 使用的預設連接埠

常用的UDP和TCP埠是3478和5349

STUN 協定使用特定的網路連接埠在客戶端和 STUN 伺服器之間進行通訊

  • UDP 連接埠

    • 端口 3478:這是 UDP 協定的 STUN 的預設端口,STUN 通常在 UDP 協定上運行,因為其開銷較低,通常使用端口 3478
    • 端口 5349:這通常是 UDP over DTLS 的端口,它為 UDP 通訊提供加密
  • TCP 連接埠

    • 連接埠 3478:STUN :當 UDP 不適合或被封鎖時,STUN 可以在 TCP 的 3478 連接埠上運作
    • 連接埠 5349:用於具有 TLS 的 STUN,TLS 是提供 TCP 連線的傳輸層安全性
  • 備用埠

    • 雖然這些是 STUN 伺服器的預設端口,但也可以配置任何其他端口用於 STUN 和 TURN 伺服器。
    • 出於安全原因,通常建議在其他連接埠上執行 STUN 伺服器。

連接埠使用的安全注意事項

  1. 暴露於連接埠掃描

    1. 攻擊者經常掃描互聯網尋找 STUN 伺服器的預設端口,將 STUN 伺服器保留在預設連接埠上可能會更容易受到此類偵察活動的影響
  2. 防火牆配置

    1. 入境流量

      1. 預設情況下,許多防火牆會阻止 STUN 連接埠上未經請求的入站流量,以防止未經授權的存取
      2. 防火牆僅允許入站流量,如果它是為了回應網路內設備發起的合法請求
    2. 出站流量:

      1. 僅允許出站流量流向受信任的 STUN 和 TURN 伺服器以及必要的連接埠。
  3. 使用加密

    1. STUN over TLS/DTLS(連接埠 5349):而 TURN 伺服器流量是端對端加密的。 STUN 伺服器流量不是,但您也可以啟用 STUN 加密。
  4. 定期更新和修補程式:當您執行自己的 STUN/TURN 伺服器時,您需要定期更新它們並修補它們以確保安全。

  5. 日誌記錄和監控:如果您正在運行自己的 STUN/TURN 伺服器以查找安全漏洞,請始終記錄和監控 STUN 和 TURN 伺服器


基於雲端的 STUN 伺服器與自架解決方案

基於雲端的 TURN 伺服器

  • 計量 TURN/STUN 伺服器: 透過 API 提供全球、可擴充、託管的 STUN 和 TURN 服務

  • Google 公共 STUN 伺服器:Google 提供免費 STUN 伺服器列表,您可以取得 Google STUN 伺服器列表

  • 開放中繼 TURN / STUN 伺服器:免費專屬的 TURN 伺服器

自架解決方案

  • Coturn STUN / TURN 伺服器:您可以使用開源專案cotton 運行自己的turn 伺服器。以下是關於:如何使用 coTURN 設定和設定 TURN 伺服器?

  • 的指南
  • AWS TURN 伺服器:您也可以在 AWS 上執行 coturn:以下是相關指南:AWS TURN 伺服器:7 個簡單步驟

  • Azure TURN 伺服器:您也可以在 Azure 上執行 TURN 伺服器。以下是相關指南:Azure TURN 伺服器:逐步指南。

  • TURN 伺服器成本:以下是有關運行您自己的 TURN 伺服器時的潛在成本和注意事項的指南:TURN 伺服器成本:完整指南


Stun Protocol, Port and Traffic

計量 TURN 伺服器

  1. API: 使用強大的 API 進行 TURN 伺服器管理。您可以執行以下操作:透過 API 新增/刪除憑證、透過 API 檢索每個使用者/憑證和使用者指標、透過 API 啟用/停用憑證、透過 API 按日期檢索使用資料。

  2. 全球地理位置定位:自動將流量定向到最近的伺服器,以實現盡可能低的延遲和最高的品質效能。全球任何地方的延遲均低於 50 毫秒

  3. 全球所有地區的伺服器:多倫多、邁阿密、舊金山、阿姆斯特丹、倫敦、法蘭克福、班加羅爾、新加坡、雪梨、首爾、達拉斯、紐約

  4. 低延遲: 低於 50 毫秒的延遲,在世界任何地方。

  5. 經濟高效:即用即付定價,並提供頻寬和批量折扣。

  6. 輕鬆管理: 取得使用日誌、帳戶達到門檻限制時的電子郵件、帳單記錄以及電子郵件和電話支援。

  7. 符合標準: 符合 UDP、TCP、TLS 和 DTLS 的 RFC 5389、5769、5780、5766、6062、6156、5245、5768、6336、925336、92536、92536、92536、92536。

  8. 多租用戶: 建立多個憑證並依客戶或不同應用程式分開使用。取得使用日誌、計費記錄和閾值警報。

  9. 企業可靠性: SLA 正​​常運作時間達 99.999%。

  10. 企業規模: 併發流量或總流量不限制。計量 TURN 伺服器提供企業可擴充性

  11. 每月 5 GB 免費: 透過免費方案每月獲得 5 GB 免費 TURN 伺服器使用量

  12. 在連接埠 80 和 443 上運作

  13. 支援 TURNS SSL 以允許透過深度封包偵測防火牆進行連線。

  14. 同時支援 TCP 和 UDP

  15. 免費無限制 STUN

以上是眩暈協定、連接埠和流量的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!