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

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.xdnf.cn/news/10210.html

相关文章:

  • 影刀RPA元素稳定性优化:多策略应对失效难题
  • 带你手写React中的useReducer函数。(底层实现)
  • OpenCV中的分水岭算法 (C/C++)
  • 聊聊前端工程化
  • C#上传图片后压缩
  • 【Dify学习笔记】:Dify离线安装插件教程
  • 【原理扫描】不安全的crossdomain.xml文件和CORS(跨站资源共享)原始验证失败验证与彻底方案
  • (24)多租户 SaaS 平台设计
  • C语言进阶--自定义类型详解(结构体、枚举、联合)
  • AWS WAF设置IP白名单
  • 指数函数的泰勒展开可视化:从数学理论到Python实现
  • 历年西北工业大学计算机保研上机真题
  • 【已解决】YFRateLimitError(‘Too Many Requests. Rate limited. Try after a while.‘)
  • Spring Boot 3 整合 MQ 构建聊天消息存储系统
  • 测试用例及黑盒测试方法
  • Java进化之路:从Java 8到Java 21的重要新特性(深度解析)
  • JS手写代码篇---手写节流函数
  • Linux(8)——进程(控制篇——上)
  • mac mini m4命令行管理员密码设置
  • 【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
  • 专业课复习笔记 11
  • 评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
  • 在 Linux 上构建 Kubernetes 单节点集群:Minikube 安装与实战指南
  • 第2章-12 输出三角形面积和周长(走弯路解法)
  • 26 C 语言函数深度解析:定义与调用、返回值要点、参数机制(值传递)、原型声明、文档注释
  • C++ 模版复习
  • 【个人思考】超级玛丽亚小游戏设计文档
  • Unity UI系统中RectTransform详解
  • 用美图秀秀批处理工具定制专属图片水印的方法详解
  • 【技术支持】安卓11开机启动设置