AWS WebRTC:獲取ICE服務地址(part 2): ICE Agent的作用

上一篇,已經獲取到了ICE服務地址,從返回結果中看,是兩組TURN服務地址。

拿到這些地址有什么用呢?接下來就要說到WebRTC中ICE Agent的作用了,返回的服務地址會傳給WebRTC最終給到ICE Agent。

ICE Agent的作用:

1、收集候選地址(ICE Candidates),包括 hostsrflxrelayprflx

類型來源說明
host本地 WebRTC自己通過系統網絡接口直接獲取的。
srflx使用 STUN 服務器,發現 NAT 映射后的公網 IP
prflx在通信過程中由對端反推出的 IP(較少見)
relay使用 TURN 服務器,提供中繼服務

?2、測試連接性(connectivity checks):嘗試不同的候選對組合

ICE Agent 通過發送 STUN Binding Request 檢查候選對(candidate pair)的可連通性。

  • STUN Binding Request 是 ICE 用來做連接性檢測的標準機制。

  • 無論對端 candidate 是哪種類型(host、srflx、relay),只要能夠被訪問,它就可以接收到并響應 STUN 消息。

  • 檢查是否連通 = 看是否能收到 STUN Binding Response

  • 雖然 relay 類型的候選地址是由 TURN 服務提供的,但它本質上依然支持 STUN Binding Request 的收發,作為 ICE 的連接性檢測機制的一部分。

3、優選路徑(nominating best candidate pair):優先使用能直連的、延遲最小的路徑;當直連失敗時,才使用 TURN 中繼。

會按 ICE 優先級 測試連接路徑,比如:

  • Host ? Host

  • Host ? srflx

  • srflx ? srflx

  • relay ? relay(最慢,最貴)

通常優先選擇 非中繼的直連鏈路(即 P2P)。

補充說明一下,收集候選地址(candidates)指的是僅收集本端(local)的候選地址,包括 hostsrflxrelay,將這些候選地址通過信令通道(比如 SDP)發送給對方,就是說本地收集完成后,WebRTC 應用會通過 SDP(Session Description Protocol) 把這些 candidates 發送給對端。

4、接收。對端候選地址的獲取來自信令過程,對端收集完自己的候選地址后,會通過信令通道傳送過來(在 SDP 中或者通過 trickle ICE 逐步發送),本地 ICE Agent 會接收到這些對端候選,并將其組合成 candidate pairs(候選對)進行連接性檢測。

這時候我對比了一下,iOS app端的打印日志:

[iOS-P2P:2f214551-*****A1100*****] ICE servers retrieved - Count: 3
2025-05-19 15:48:29.611+0800 [Open Stream] ??? INFO className:Channel+Tracker fuction:logP2PEvent(_:details:)  line:25 [iOS-P2P:2f214551-C2E2DA110017952] ICE[1/3] - turn:***-***-***-***.t-*****.kinesisvideo.cn-****-*.amazonaws.com.cn:443?transport=udp, turns:***-***-***-***.t-*******.kinesisvideo.cn-*****-*.amazonaws.com.cn:443?transport=udp, turns:***-***-***-***.t-*******.kinesisvideo.cn-****-*.amazonaws.com.cn:443?transport=tcp
2025-05-19 15:48:29.612+0800 [Open Stream] ??? INFO className:Channel+Tracker fuction:logP2PEvent(_:details:)  line:25 [iOS-P2P:2f214551-*****A1100*****] ICE[2/3] - turn:**-***-***-***.t-********.kinesisvideo.cn-****-*.amazonaws.com.cn:443?transport=udp, turns:**-***-***-***.t-*******.kinesisvideo.cn-****-*.amazonaws.com.cn:443?transport=udp, turns:**-***-***-***.t-*********.kinesisvideo.cn-***-*.amazonaws.com.cn:443?transport=tcp
2025-05-19 15:48:29.613+0800 [Open Stream] ??? INFO className:Channel+Tracker fuction:logP2PEvent(_:details:)  line:25 [iOS-P2P:2f214551-C2E2DA110017952] ICE[3/3] - stun:stun.kinesisvideo.*.amazonaws.com:443

iOS app的日志中是有stun返回的,為什么boto3請求卻沒有返回呢,查了一下:

AWS 的 WebRTC Signaling Channel 默認不提供 STUN Server,只靠 TURN 來確保連接可靠性。

  1. AWS 官方設計如此

    • AWS 的 get_ice_server_config() 接口返回的 IceServerList 默認只包含 TURN server。

    • 這些 TURN server 本身就能提供中繼功能(比 STUN 更通用),AWS 更傾向于提供自己可控的服務。

  2. AWS 文檔說明

    The returned ICE server list contains TURN-only servers. STUN servers are not included in this API.

我問了一下iOS開發同學,確實在本地配置了STUN server:

stun.kinesisvideo.{數字}.amazonaws.com

下一篇:AWS WebRTC:獲取ICE服務地址(part 3)介紹STUN服務和TURN服務的作用。

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

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

相關文章

大數據時代的利劍:Bright Data網頁抓取與自動化工具共建高效數據采集新生態

目錄 一、為何要選用Bright Data網頁自動化抓取——幫助我們高效高質解決以下問題! 二、Bright Data網頁抓取工具 - 網頁爬蟲工具實測 2.1 首先注冊用戶 2.2 首先點擊 Proxies & Scraping ,再點擊瀏覽器API的開始使用 2.3 填寫通道名稱&#xff…

指紋識別+精準化POC攻擊

開發目的 解決漏洞掃描器的痛點 第一就是掃描量太大,對一個站點掃描了大量的無用 POC,浪費時間 指紋識別后還需要根據對應的指紋去進行 payload 掃描,非常的麻煩 開發思路 我們的思路分為大體分為指紋POC掃描 所以思路大概從這幾個方面…

【Day40】

DAY 40 訓練和測試的規范寫法 知識點回顧: 彩色和灰度圖片測試和訓練的規范寫法:封裝在函數中展平操作:除第一個維度batchsize外全部展平dropout操作:訓練階段隨機丟棄神經元,測試階段eval模式關閉dropout 作業&#x…

【HTML-13】HTML表格合并技術詳解:打造專業數據展示

表格是HTML中展示結構化數據的重要元素,而表格合并則是提升表格表現力的關鍵技術。本文將全面介紹HTML中的表格合并方法,幫助您創建更專業、更靈活的數據展示界面。 1. 表格合并基礎概念 在HTML中,表格合并主要通過兩個屬性實現&#xff1a…

<uniapp><threejs>在uniapp中,怎么使用threejs來顯示3D圖形?

前言 本專欄是基于uniapp實現手機端各種小功能的程序,并且基于各種通訊協議如http、websocekt等,實現手機端作為客戶端(或者是手持機、PDA等),與服務端進行數據通訊的實例開發。 發文平臺 CSDN 環境配置 系統:windows 平臺:visual studio code、HBuilderX(uniapp開…

如何制作全景VR圖?

全景VR圖,特別是720度全景VR,為觀眾提供一種沉浸式體驗。 全景VR圖能夠捕捉場景的全貌,還能將多個角度的圖片或視頻無縫拼接成一個完整的全景視角,讓觀眾在虛擬環境中自由探索。隨著虛擬現實(VR)技術的飛速…

前端使用qrcode來生成二維碼的時候中間添加logo圖標

這個開源倉庫可以讓你在前端頁面中生成二維碼圖片,并且支持調整前景色和背景色,但是有個問題,就是不能添加logo圖片。issue: GitHub Where software is built 但是已經有解決方案了: add a logo picture Issue #21…

【C語言】函數指針及其應用

目錄 1.1 函數指針的概念和應用 1.2 賦值與內存模型 1.3 調用方式與注意事項 二、函數指針的使用 2.1 函數指針的定義和訪問 2.2 動態調度:用戶輸入驅動函數執行 2.3 函數指針數組進階應用 2.4 函數作為參數的高階抽象 三、回調函數 3.1 指針函數…

安裝flash-attention失敗的終極解決方案(WINDOWS環境)

想要看linux版本下安裝問題的請走這里:安裝flash-attention失敗的終極解決方案(LINUX環境) 其實,現在的flash-attention不像 v2.3.2之前的版本,基本上不兼容WINDOWS環境。但是在WINDOWS環境安裝總還是有那么一點不順暢…

[C]基礎16.數據在內存中的存儲

博客主頁:向不悔本篇專欄:[C]您的支持,是我的創作動力。 文章目錄 0、總結1、整數在內存中的存儲1.1 整數的二進制表示方法1.2 不同整數的表示方法1.3 內存中存儲的是補碼 2、大小端字節序和字節序判斷2.1 什么是大小端2.2 為什么有大小端2.3…

Python 基于卷積神經網絡手寫數字識別

Ubuntu系統:22.04 python版本:3.9 安裝依賴庫: pip install tensorflow2.13 matplotlib numpy -i https://mirrors.aliyun.com/pypi/simple 代碼實現: import tensorflow as tf from tensorflow.keras.models import Sequent…

ElectronBot復刻-電路測試篇

typec-16p 接口部分 USB1(Type - C 接口):這是通用的 USB Type - C 接口,具備供電和數據傳輸功能。 GND 引腳(如 A1、A12、B1、B12 等):接地引腳,用于提供電路的參考電位&#xff0…

ESP8266+STM32 AT驅動程序,心知天氣API 記錄時間: 2025年5月26日13:24:11

接線為 串口2 接入ESP8266 esp8266.c #include "stm32f10x.h"//8266預處理文件 #include "esp8266.h"//硬件驅動 #include "delay.h" #include "usart.h"//用得到的庫 #include <string.h> #include <stdio.h> #include …

CDN安全加速:HTTPS加密最佳配置方案

CDN安全加速的HTTPS加密最佳配置方案需從證書管理、協議優化、安全策略到性能調優進行全鏈路設計&#xff0c;以下是核心實施步驟與注意事項&#xff1a; ??一、證書配置與管理?? ??證書選擇與格式?? ??證書類型??&#xff1a;優先使用受信任CA機構頒發的DV/OV/EV證…

【前端】Twemoji(Twitter Emoji)

目錄 注意使用Vue / React 項目 驗證 Twemoji 的作用&#xff1a; Twemoji 會把你網頁/應用中的 Emoji 字符&#xff08;如 &#x1f604;&#xff09;自動替換為 Twitter 風格的圖片&#xff08;SVG/PNG&#xff09;&#xff1b; 它不依賴系統字體&#xff0c;因此在 Android、…

GCN圖神經網絡的光伏功率預測

一、GCN圖神經網絡的核心優勢 圖結構建模能力 GCN通過鄰接矩陣&#xff08;表示節點間關系&#xff09;和節點特征矩陣&#xff08;如氣象數據、歷史功率&#xff09;進行特征傳播&#xff0c;能夠有效捕捉光伏電站間的空間相關性。其核心公式為&#xff1a; H ( l 1 ) σ (…

按照狀態實現自定義排序的方法

方法一&#xff1a;使用 MyBatis-Plus 的 QueryWrapper 自定義排序 在查詢時動態構建排序規則&#xff0c;通過 CASE WHEN 語句實現優先級排序&#xff1a; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.stereotype.Ser…

【計算機網絡】IPv6和NAT網絡地址轉換

IPv6 IPv6協議使用由單/雙冒號分隔一組數字和字母&#xff0c;例如2001:0db8:85a3:0000:0000:8a2e:0370:7334&#xff0c;分成8段。IPv6 使用 128 位互聯網地址&#xff0c;有 2 128 2^{128} 2128個IP地址無狀態地址自動配置&#xff0c;主機可以通過接口標識和網絡前綴生成全…

【Redis】string

String 字符串 字符串類型是 Redis 最基礎的數據類型&#xff0c;關于字符串需要特別注意&#xff1a; 首先 Redis 中所有的鍵的類型都是字符串類型&#xff0c;而且其他幾種數據結構也都是在字符串的基礎上構建的。字符串類型的值實際可以是字符串&#xff0c;包含一般格式的…

基于ELK的分布式日志實時分析與可視化系統設計

目錄 一、ELK平臺介紹 1.ELK概述 2.Elasticsearch 3.Logstash 4.Kibana 二、部署ES群集 1.資源清單 2.基本配置 3.安裝Elasticsearch&#xff08;elk1上、elk2上、elk3上&#xff09; 4.安裝logstash&#xff08;elk1上&#xff09; 5.Filebeat 6.安裝Kibana&#x…