AWS WebRTC:獲取ICE服務地址(part 3):STUN服務和TURN服務的作用

STUN服務和TURN服務的作用:

服務全稱作用是否中繼流量適用場景
STUNSession Traversal Utilities for NAT

協助設備發現自己的公網地址(srflx candidate)

? 不中繼,僅輔助NAT 穿透成功時使用
TURNTraversal Using Relays around NAT提供中繼服務器,幫助雙方通信? 會中繼所有流量直連失敗時兜底方案

ICE 服務地址(ICE Server URLs)主要是 STUN 和 TURN 服務器的地址,用于 WebRTC 在 NAT 網絡環境中協商建立連接。

STUN 服務的兩個主要作用:

獲取外網映射(服務器反射地址,即 srflx)
  • 當設備在 NAT 后面(如家庭路由器)時,STUN 可以告訴客戶端:

    • 你在公網上的 IP 是什么

    • 你的端口是 NAT 分配的哪個端口

  • 這個過程通常用于生成 Server Reflexive Candidate(srflx)

測試連通性(連接性檢測)
  • 在 ICE 流程中,ICE Agent 會向候選對(candidate pair)發送 STUN Binding Request

  • 收到 STUN Binding Response 說明該路徑是可達的。

  • 不僅測試了連通性,還用于 NAT 的打洞(NAT Traversal)

補充說明:

  • 雖然連接性檢測使用的是 STUN 消息(Binding Request/Response),但它不一定必須經過 STUN 服務器

    • 比如 host ? host 時,直接點對點發 Binding Request。

    • 只有在某些 NAT 情況下才需要借助 STUN 服務器。

TURN服務:

TURN(Traversal Using Relays around NAT)Server 是當直接 P2P(點對點)失敗時,用來“轉發”音視頻數據的中繼服務器,確保連接穩定可靠。

TURN 的工作原理:

  • 客戶端通過 ICE(Interactive Connectivity Establishment)協議 發現所有可用的連接方式(候選地址)。

  • 優先嘗試使用:

    • 主機地址(Host)

    • STUN 地址(STUN Server 可用于 NAT 穿透)

  • 如果上述方法失敗,就使用 TURN Server 中繼音視頻流,TURN 會接收一個客戶端的數據,并通過公網再發給另一個客戶端。

客戶端 A ?<---> ?TURN Server ?<---> ?客戶端 B

總結:

項目內容
名稱含義TURN = Traversal Using Relays around NAT
核心作用在 P2P 無法建立時作為中繼,保證通信成功
使用成本高(中繼流量,帶寬占用大)
必須存在?非必須,但可以提升可靠性
搭配使用常與 STUN 服務器一起搭配使用

下一篇:AWS WebRTC:獲取ICE服務地址(part 4):本地配置STUN服務?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907737.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907737.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907737.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

分析XSSstrike源碼

#用于學習web安全自動化工具# 我能收獲什么&#xff1f; 1.XSS漏洞檢測機制 學習如何構造和發送XSS payload如何識別響應中的回顯&#xff0c;WAF&#xff0c;過濾規則等如何使用詞典&#xff0c;編碼策略&#xff0c;上下文探測等繞過過濾器 2.Python安全工具開發技巧 使…

npm run build 報錯:Some chunks are larger than 500 KB after minification

當我們的 Vue 項目太大&#xff0c;使用 npm run build 打包項目的時候&#xff0c;就有可能會遇到以下報錯&#xff1a; (!) Some chunks are larger than 500 kB after minification. Consider: - Using dynamic import() to code-split the application - Use build.rollup…

【LLM相關知識點】關于LLM項目實施流程的簡單整理(一)

【LLM相關知識點】關于LLM項目實施流程的簡單整理&#xff08;一&#xff09; 文章目錄 【LLM相關知識點】關于LLM項目實施流程的簡單整理&#xff08;一&#xff09;零、學習計劃梳理&#xff1a;結合ChatGPT從零開始學習LLM & 多模態大模型一、大模型相關應用場景和頭部企…

海上石油鉆井平臺人員安全管控解決方案

一、行業挑戰與需求分析 海上鉆井平臺面臨復雜環境風險&#xff08;如易燃易爆、金屬干擾、極端氣象&#xff09;和人員管理難題&#xff08;如定位模糊、應急響應延遲&#xff09;。傳統RFID或藍牙定位技術存在精度不足&#xff08;1-5米&#xff09;、抗干擾能力差等問題&am…

@Docker Compose 部署 Pushgateway

文章目錄 Docker Compose 部署 Pushgateway1. 目的2. 適用范圍3. 先決條件4. 部署步驟4.1 創建項目目錄4.2 創建 docker-compose.yml 文件4.3 啟動 Pushgateway 服務4.4 驗證服務運行狀態4.5 測試 Pushgateway 訪問 5. 配置 Prometheus 采集 Pushgateway 數據6. 日常維護6.1 查…

項目 react+taro 編寫的微信 小程序,什么命令,可以減少console的顯示

在 Taro 項目中&#xff0c;為了減少 console 的顯示&#xff08;例如 console.log、console.info 等&#xff09;&#xff0c;可以通過配置 terser-webpack-plugin 來移除生產環境中的 console 調用。 配置步驟&#xff1a; 修改 index.js 文件 在 mini.webpackChain 中添加 …

Java開發中常見的數值處理陷阱與規避方法

八進制字面量的誤用問題 歷史背景與語法特性 由于歷史原因,Java保留了八進制字面量的支持。八進制字面量以數字0開頭,例如037表示十進制數31(計算方式:38 + 7 = 31)。這種表示法在現代編程中極少使用,唯一合理的應用場景是表示Unix文件權限(如0644表示用戶可讀寫,組和…

Lua5.4.2常用API整理記錄

一、基礎函數 1.type(value)?? 返回值的類型&#xff08;如 "nil", "number", "string", "table", "function" 等&#xff09;。 代碼測試&#xff1a; a 0 print(type(a)) a nil print(type(a)) a "aaaaaaaa&…

2025.5.29 學習日記 docker概念以及基本指令

Docker&#xff1a; Docker 是一種開源的容器化平臺&#xff0c;用于快速部署應用程序&#xff0c;實現開發、測試和生產環境的一致性。 一、Docker 核心概念 鏡像&#xff08;Image&#xff09; 只讀的模板文件&#xff0c;用于創建容器&#xff0c;類似虛擬機的鏡像&#x…

明遠智睿SSD2351開發板:語音機器人領域的變革力量

在人工智能快速發展的今天&#xff0c;語音機器人逐漸成為人們生活和工作中的得力助手。明遠智睿SSD2351開發板憑借強大性能與豐富功能&#xff0c;為語音機器人的發展注入新動力&#xff0c;成為該領域的變革力量。 SSD2351開發板的四核1.4GHz處理器具備強勁的運算性能&#x…

嵌入式學習筆記 - keil安裝目錄下的頭文件自動包含問題

Keil MDK/MDK-ARM&#xff08;ARM編譯器&#xff09;默認情況下會自動包含其安裝目錄下的標準頭文件路徑&#xff08;如CMSIS庫、設備頭文件等&#xff09;。具體機制如下&#xff1a; ?默認自動包含?&#xff1a; 新建工程或使用設備數據庫選擇芯片型號后&#xff0c;Keil會…

什么是數據驅動?以及我們應如何理解數據驅動?

在談到企業數字化轉型時&#xff0c;很多人都會說起“數據驅動”&#xff0c;比如“數據驅動運營”、“數據驅動業務”等等。 在大家言必稱“數據驅動”的時代背景下&#xff0c;我相信很多人并未深究和思考“數據驅動”的真正含義&#xff0c;只是過過嘴癮罷了。那么&#xff…

C++中全局變量和局部變量的區別

C中全局變量和局部變量的區別 在C&#xff08;以及其他編程語言&#xff09;中&#xff0c;變量的作用域和生命周期是兩個非常重要的概念。全局變量和局部變量在作用域和生命周期上有顯著的區別。下面我將詳細講解全局變量和局部變量的區別&#xff0c;并通過代碼示例來幫助理…

基于RPA技術的ECRobot企業智能體解決方案,打通企業自動化業務流程的最后一公里

在企業的日常運營中&#xff0c;難免會遇到一些繁瑣且重復的任務&#xff0c;這類高頻次、低復雜度的事務性工作往往造成人力資源和成本的浪費。因此如何通過智能化工具實現流程自動化&#xff0c;已經成為企業數字化轉型進程中的共性課題。 RPA技術&#xff1a;自動化賦能企業…

ipv6與p2p的關系

在PCDN&#xff08;P2P內容分發網絡&#xff09;領域&#xff0c;IPv6與PCDN盒子的關系緊密且相互影響&#xff0c;主要體現在以下幾個方面&#xff1a; 一、IPv6的部署推動PCDN盒子普及 地址資源充足 IPv6采用128位地址&#xff0c;解決了IPv4地址枯竭的問題&#xff0c;為PC…

大模型應用開發之預訓練

預訓練是研發大語言模型的第一個訓練階段&#xff0c;通過在大規模語料上進行預訓練&#xff0c;大語言模型可以獲得通用的語言理解與生成能力&#xff0c;掌握較為廣泛的世界知識&#xff0c;具備解決眾多下游任務的性能潛力 一、數據預處理 1. 數據的收集 1&#xff09;通…

[python]Prophet‘ object has no attribute ‘stan_backend‘解決方法

測試環境&#xff1a; prophet1.1.4 寫代碼&#xff1a; from prophet import Prophet modelProphet() print(123) 在anaconda prompt里面沒有報錯&#xff0c;但是打開jupyter notebook會報錯Prophet object has no attribute stan_backend&#xff0c;據此猜測jupyter應該…

【HTML】基礎學習【數據分析全棧攻略:爬蟲+處理+可視化+報告】

- 第 102 篇 - Date: 2025 - 05 - 31 Author: 鄭龍浩/仟墨 文章目錄 HTML 基礎學習一 了解HTML二 HTML的結構三 HTML標簽1 標題2 文本段落3 換行4 加粗、斜體、下劃線5 插入圖片6 添加鏈接7 容器8 列表9 表格10 class類 HTML 基礎學習 一 了解HTML 一個網頁分為為三部分&…

ansible中的inventory.ini 文件詳解

1. 主機定義 主機是 Ansible 管理的最小單元&#xff0c;可以是 IP 或域名&#xff0c;支持直接定義或附加參數。 基礎語法 # 直接定義主機&#xff08;IP 或域名&#xff09; 192.168.1.10 example.com# 定義主機并指定連接參數&#xff08;如端口、用戶等&#xff09; web…

SpringBoot整合MyBatis完整實踐指南

在Java企業級應用開發中&#xff0c;SpringBoot和MyBatis的組合已經成為主流的技術選型方案之一。本文將詳細介紹如何從零開始搭建一個基于SpringBoot和MyBatis的項目&#xff0c;包括環境配置、數據庫設計、實體類創建、Mapper接口編寫以及實際應用等完整流程。 一、環境準備…