当前位置: 首页 > article >正文

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.lryc.cn/news/2395159.html

相关文章:

  • 使用Yolov8 训练交通标志数据集:TT100K数据集划分
  • NLP学习路线图(十三):正则表达式
  • [VMM]现代 CPU 中用于加速多级页表查找的Page‐Table Entry原理
  • javaweb-maven以及http协议
  • 华为OD机试真题—— 最少数量线段覆盖/多线段数据压缩(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • C语言创意编程:用趣味实例玩转基础语法(2)
  • 关于近期中国移动民用家庭网络,新增的UDP网络限制。
  • OpenCV CUDA模块图像处理------颜色空间处理之GPU 上对两张带有 Alpha 通道的图像进行合成操作函数alphaComp()
  • OpenWebUI(1)源码学习构建
  • npm error Cannot find module ‘negotiator‘ 的处理
  • 爬虫入门指南-某专利网站的专利数据查询并存储
  • SQL(Database Modifications)
  • 【android bluetooth 案例分析 04】【Carplay 详解 2】【Carplay 连接之手机主动连车机】
  • maven离线将jar包导入到本地仓库中
  • 【仿muduo库实现并发服务器】实现时间轮定时器
  • Conda更换镜像源教程:加速Python包下载
  • 蓝桥杯 盗墓分赃2
  • 深度解读 Qwen3 大语言模型的关键技术
  • 使用 mysqldump 获取 MySQL 表的完整创建 DDL
  • day15 leetcode-hot100-28(链表7)
  • 阿里云云效对接SDK获取流水线制品
  • Qt 相关 编译流程及交叉编译 部署所遇到的问题总结-持续更新
  • 前端面经 DNSxieyi1
  • 如何通过ES实现SQL风格的查询?
  • ​​知识图谱:重构认知的智能革命​
  • 【计算机网络】4网络层①
  • MATLAB中的table数据类型:高效数据管理的利器
  • Dropout 在大语言模型中的应用:以 GPT 和 BERT 为例
  • CentOS 7 如何安装libsndfile?
  • 基于深度学习的语音识别系统设计与实现