STUN, TURN, ICE介绍

2023-10-27

转自:https://blog.csdn.net/byxdaz/article/details/52786600?utm_source=blogxgwz4

STUN

STUN协议为终端提供一种方式能够获知自己经过NAT映射后的地址,从而替代位于应用层中的私网地址,达到NAT穿透的目的。STUN协议是典型的Client-Server协议,各种具体应用通过嵌入STUN客户端与STUN Server端通讯来完成交互。 

在典型的运用STUN进行NAT穿透的场景中,STUN客户端首先向位于公网上的STUN服务器 发送Binding Request消息,STUN服务器接收到请求消息后识别出经过NAT转换后的公网地址60.1.1.1:12345,将其附加在Binding Response消息中返回给客户端。客户端得到这个地址 后用它替换SDP中的私网地址与终端B完成媒体协商。使用STUN进行NAT穿透对应用的要 求是必须使用同样的端口与STUN服务器交互和进行应用层通讯,比如当希望使用端口 37000进行RTP包的NAT穿透时,必须同样使用37000端口与STUN服务器通讯,否则从STUN 服务器获得的NAT映射后的地址一般与实际地址时不一样的。另一个要求是STUN客户端与 服务器端的通讯和应用使用获得的NAT映射地址进行应用层通讯在时间上必须有连贯性, 这源于NAT设备建立的绑定有生存时间,当原绑定消亡后,NAT设备为同一个私网地址建 立的新绑定往往不同,因此转换后的公网地址是不同的。

 

STUN方案的特性如下表:

 

特性

说明

实现复杂度

实现简单

TCP穿透支持

不支持

对现有设备的要求

要求客户端支持,对现有NAT设备无改动要求,需增加STUN服务器

可扩展性

可扩展性好,与具体协议无关

安全性

一般

健壮性

差,不支持symmentric型NAT

其他

支持自动检测NAT类型,使用户即使在使用STUN协议无法实现NAT

穿透时还可以根据NAT类型自主选择其他可使用的NAT穿透方案

 

TURN

TURN解决NAT穿透的思路与STUN类似,都是通过修改应用层中的私网地址达到NAT穿透。 与STUN不同的是,TURN是通过两方通讯的“中间人”的方式实现穿透,在这种方式下, 要进行通讯的两方分别与位于公网上的TURN服务器建立各自的连接进行通讯,由服务器负 责在两方之间进行数据转发。要达到这个目的,实现TURN客户端的终端必须在通讯开始前 与TURN服务器进行交互,得到服务器为其临时分配的位于TURN服务器上的公网地址,客户端使用它替换位于应用层中的私网地址。

TURN方案的特性如下表:

 

特性

说明

实现复杂度

难于实现。TURN的安全性设计增加终端设置的复杂度

TCP穿透支持

支持

对现有设备的要求

对现有NAT设备无要求,要求客户端支持,需增加TURN服务器s

可扩展性

可扩展性好,与具体协议无关

安全性

一般

健壮性

好,支持所有类型的NAT

其他

与P2P穿透方式相比,性能时relay穿透方式的弱点。另外TURN无法

实现负载分担,解决的方式是把media relay服务器的分配工作放在 SIP proxy完成

ICE

与STUN和TURN相比,ICE并非是解决NAT穿透问题的协议,而是一个框架,在这个框架中, 可以整合其他现存的NAT穿透协议,如STUN、TURN、RSIP等。区别于其他的NAT穿透解 决方案,ICE是一种探索和更新式的解决方案,通过搜集自身和对端尽可能多的网络信息(各种网络地址),尝试在这些地址间建立数据通道,并在这一过程中不断更新先前收集到的信息,从而找出和选择能够进行NAT穿透的数据通道。

ICE方案的特性如下表:

特性

说明

实现复杂度

一般

TCP穿透支持

支持

对现有设备的要求

对NAT设备无要求,支持所有类型的NAT设备。客户端必须支持,

网路结构中需增加STUN/TURN服务器

可扩展性

可扩展性好,与具体协议无关

安全性

较好

健壮性

好,适用与所有NAT及NAT拓扑类型,且由于存在中继服务器,NAT

穿透一般总是能成功

其他

 

 

 

http://www.voip-info.org/wiki/view/ICE

http://www.voip-info.org/wiki/view/TURN

http://www.voip-info.org/wiki/view/STUN-bis

 

试验UDP打洞穿透NAT

http://www.hankcs.com/program/network/test-udp-holes-penetrating-nat.html#comments

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STUN, TURN, ICE介绍 的相关文章

  • BLE 和 Zigbee 肉眼读数(更新ing)

    BLE1M 画相位图 可以读出preamble 01010101 同步码 01101011 通过向下向上的轨迹来肉眼读 原理是需要看如何进行调制的 toolbox中是GMSK调制 所以反着推回去 就知道画相位图能直接肉眼读数了 同理Zigb
  • 【数字信号处理2】IIR 滤波器设计

    一 实验目的 1 掌握冲激响应法和双线性变换法设计IIR滤波器的原理及具体设计方法 熟悉用双线性设计法设计低通 带通和高通IIR数字滤波器的计算机程序 2 熟悉模拟Butterworth滤波器的设计 掌握冲激响应法和双线性变换法设计数字II
  • cocos2d-x客户端与Java服务器的通信(一)

    o 貌似自己已经有一段时间没有写博客了 其实主要原因还是觉得自己水平有限 加上上班实在是太忙 实在抽不出时间来写博客 言归正传 大家都知道 在网络游戏开发中 网络通信一直是个比较大的难题 一个服务器可能要同时处理几千上万甚至上百万的用户数据
  • [技术发展-26]:新型信息与通信网络的数据安全

    前言 网络安全 通常指计算机网络的安全 实际上也可以指计算机通信网络的安全 计算机通信网络是将若干台具有独立功能的计算机通过通信设备及传输媒体互连起来 在通信软件的支持下 实现计算机间的信息传输与交换的系统 而计算机网络是指以共享资源为目的
  • 平稳过程的各态历经性

    平稳过程的各态历经性 1 各态历经的定义 2 例题 2 1 例1 2 2例2 3 各态历经性的判定 1 各态历经的定义 如果一个随机过程是平稳的 而且是均值和相关函数都具有各态历经性 那么我们称这个平稳过程具有各态历经性 均值各态历经的定义
  • 电脑连接西门子S7-200CPU的步骤

    用电脑连接S7 200CPU非常简单 先给CPU供电 然后用PPI通信电缆连接PLC和电脑即可 1 给S7 200CPU供电 下图给出了两种给S7 200供电的方式 直流供电和交流供电 2 连接RS 232 PPI电缆 注意 可以用USB转
  • [4G&5G专题-120]:培训-跟小朋友聊通信

    用小孩子的语言与小朋友聊通信
  • Deep learning-based CSI Feedback for Beamforming 1

    1 Abstract The potentials of massive multiple input multipleoutput MIMO are all based on the available instantaneous cha
  • RS485、MODBUS通信协议浅显易懂篇

    前言 MODBUS协议是Modicon公司发表的一种串行通信协议 属于OSI模型中应用层的协议 现广泛应用于工业控制领域 它的主要特点是免费开放 支持多种电气接口 如RS 232 RS 485 传输介质可以是双绞线 光纤 无线等 RS485
  • SSL工作原理

    转自 https www wosign com Basic howsslwork htm SSL 是一个安全协议 它提供使用 TCP IP 的通信应用程序间的隐私与完整性 因特网的 超文本传输协议 HTTP 使用 SSL 来实现安全的通信
  • http和Tcp的长连接和短连接

    转自 https www cnblogs com fubaizhaizhuren p 7523374 html http协议和tcp ip 协议的关系 1 http是应用层协议 tcp协议是传输层协议 ip协议是网络协议 2 IP协议主要解
  • JS中的发布-订阅

    发布订阅模式 什么是发布 订阅模式 发布 订阅模式的实现 发布 订阅实现思路 总结 优点 缺点 Vue 中的实现 观察者模式和发布订阅的区别 观察者模式 发布订阅模式 什么是发布 订阅模式 发布 订阅模式其实是一种对象间一对多的依赖关系 当
  • 关于 stun 服务器的困惑

    我的要求是 我将打开一个UDP服务器监听X端口 本地机器 和machine public IP 可以发送UDP包给我 我的机器没有public IP 基本上我需要stun 我正在测试stuntman服务器 客户端项目 我在服务器 公共IP
  • 我应该使用 Java 和哪些 Stun 库?

    Java 我试图编写自己的 STUN 客户端 但似乎我犯了错误 因此 大多数时候它都会被冻结 所以我想知道哪些 STUN 客户端库可用于 Java 以便开始使用 跟进 同时尝试跟进 仍然没有涉及NAT 防火墙后面的解决方案 第1步 击晕等级
  • WiX ICE30 错误但目录正确

    我的 WiX 3 10 3 3007 项目有 2 个不同的 web config 文件 它们安装在 2 个不同的位置 我的构建中的 2 个错误是 错误 ICE30 目标文件 svcenub9 con Web config 由 LFN 系统上
  • 用于具有 REST API 身份验证的 WebRTC 的 TURN 服务器

    我正在尝试为 webRTC 设置 rfc5766 turn server TURN 服务器here https code google com p rfc5766 turn server 我能够使用 TURN 服务器成功转发我的视频turn
  • NAT 后面的 HTTP 服务器

    我正在尝试在多层 NAT 后面创建一个 apache 服务器 以便可以从 Internet 访问 限制 避免中继 有一个公共服务器 我们称他为OldMan 用于登录 眩晕 但其带宽太差 无法承载中继数据 我无权手动配置 NAT 3 用户无需
  • 有人比较过 WCF 和 ZeroC ICE 吗?

    ZeroC 的 ICE www zeroc com 看起来很有趣 我有兴趣查看它并将其与我们使用 WCF 的现有软件进行比较 特别是 我们的 WCF 应用程序使用服务器回调 通过 HTTP 有谁对比过吗 进展如何 我对性能方面特别感兴趣 因
  • 什么是 STUN?它是否需要端口转发服务器?

    我对没有基础服务器的 p2p 通信进行了一些研究 并通过了 STUN 据我所知 STUN 是 NAT 打孔 的一种方式 不需要对等方进行端口转发即可连接 这是正确的吗 打孔到底是什么意思 这一切看起来都很脆弱 因为如果不需要端口转发 它就会
  • 为什么turn服务器不支持tcp连接?

    我是 WebRTC 新手 我需要为我的 webrtc 应用程序配置我自己的 Turn 服务器 我使用以下命令安装了我的转弯服务器 apt get install coturn 我只需要通过 tcp 运行转变服务器 它不必使用 UDP 进行任

随机推荐

  • 《nginx》一、nginx核心指令

    nginx conf 配置文件主要分为三部分 全局块 events块 http块 1 全局块核心参数 user USERNAME GROUP 解释 指定运行nginx的worker子进程的属主和属组 其中属组可以不指定 示例 user ng
  • Java实现Apache sshd客户端(密码和公钥登录并执行命令)

    第一步 引入依赖
  • iPad 图标变小而分散 解决方法

    想必各位都遇到过这种情况吧 当你装了某个不正常cydia插件以后 ipad变成iphone界面 图标小而分散 状态栏变得花屏 而任何程序包括cydia都打不开时 请大家不要急着重新恢复ipad 可以按照我这个办法拯救一下 我也是今天4 3
  • 狂神说MyBatis02:CRUD操作及配置解析

    狂神说MyBatis系列连载课程 通俗易懂 基于MyBatis3 5 2版本 欢迎各位狂粉转发关注学习 视频同步文档 未经作者授权 禁止转载 CRUD操作 上集回顾 狂神说MyBatis01 第一个程序 namespace 将上面案例中的U
  • 云计算与大数据概论第七周

    大数据分析是指对规模巨大的数据进行分析 大数据可以概括为5个V 数据量大 Volume 速度快 Velocity 类型多 Variety 价值 Value 真实性 Veracity 大数据作为时下最火热的IT行业的词汇 随之而来的数据仓库
  • Linux下gdb编译调试程序

    Linux下gdb编译调试程序 前言 一 调试前的准备 二 gdb中断点的使用 三 gdb中运行调试程序 四 gdb中打印值和监控值 总结 参考 前言 本文记录调试工具gdb的一些基础使用方式 gdb是一个程序调试工具 注意 如果是程序语法
  • R语言ggplot2可视化绘制带有多个y轴的分面图

    R语言ggplot2可视化绘制带有多个y轴的分面图 在数据可视化中 分面图是一种常用的绘图方式 可以同时展示多个变量之间的关系 而ggplot2是R语言中一个强大的数据可视化包 可以用于创建精美的分面图 对于某些情况下 我们可能需要在分面图
  • Registry新建以及版本

    1 美图 2 添加新的schema 现在 我们可以访问Web UI了 让我们尝试向注册表添加新的架构 您的HDF版本中可能已经包含了一些模式 但是请继续并让我们添加另一个 单击 界面右上方的 符号 这将打开一个名为 Add New Sche
  • vue学习(十三) 删除对象数组中的某个元素

    html div v for循环就不写了 每一条数据最后都有一个删除的超链 prevent阻止默认的跳转行为 只执行点击事件 a href 删除 a div script
  • SQLi LABS Less-13 报错注入+布尔盲注

    第十三关是单引号 括号的字符型注入 推荐使用报错注入 布尔盲注 目录 一 功能分析 二 思路分析 三 解题步骤 方式一 报错注入 第一步 判断注入点 第二步 判断报错条件 第三步 脱库 方式二 布尔盲注 第一步 判断注入点类型 第二步 判断
  • RT-Thread Studio学习笔记之RTC——解决复位日期不保存问题

    目录 前言 RTC简介 在RT Thread Studio中开启RTC 1 打开RTC驱动 2 打开RTC的宏定义 3 使能RTC 4 下载验证 解决复位不保存年月日问题 操作步骤 调试验证 总结 前言 最近使用RT Thread Stud
  • 解决:win10下teamviewer检测为商业用途

    昨天在实验室用电脑连接了不在一个局域网的另一台机器后 teamviewer就显示 检测为商业用途 5分钟后会自动切断 且一段时间内无法再连接 回到宿舍用自己的笔记本连接实验室电脑后自己的笔记本上也出现了同样的问题 可能是昨天teamview
  • 2021 年全国职业院校技能大赛(中职组)网络安全竞赛 A 模块评分标准

    2021 年全国职业院校技能大赛 中职组 网络安全竞赛 A 模块评分标准 A 1 任务一 登录安全加固 Windows Linux 请对服务器 Windows Linux 按要求进行相应的设置 提高服务 器的安全性 1 密码策略 Windo
  • git 提示http报错

    curl 版本不对 sudo yum update y nss curl libcurl
  • 机器视觉1

    以下无需要参考 gt 直接跳过到官方文件篇 资源 64位 下载地址 资源 下载地址 opencv4 6 https opencv org releases cmake https cmake org download ffmpeglibs
  • 一起学RGBDSLAM系列_问题及解决

    一起学RGBDSLAM系列 问题及解决 http blog csdn net u012062327 本博客主要介绍的是跟人在学习高翔博士 一起学RGBDSLAM系列 中遇到的问题和解决方法 vslam入门系列见高博士blog主页 http
  • Linux的基本使用

    Linux作为一个开源的操作系统 其在服务器上 PC上 嵌入式设备上都是很好的操作系统 而大部分的公司也都在使用Linux操作系统 那么就让我们来一起学习一下Linux系统的基本使用 目录 一 Linux的常用指令 1 ls 2 pwd 3
  • HTML旅游景点网页作业制作——旅游中国11个页面(HTML+CSS+JavaScript)

    学生HTML静态网页基础水平制作 页面排版干净简洁 使用HTML CSS页面布局设计 web大学生网页设计作业源码 这是一个不错的旅游网页制作 画面精明 排版整洁 内容丰富 主题鲜明 非常适合初学者学习使用 这个实例比较全面 有助于同学的学
  • Unity之2D摄像机跟随

    Unity之2D摄像机跟随 在2D游戏制作过程中 摄像机的跟随主角移动是必不可少的 有代码实现 也有插件实现 下面分别讲述两种方法 Unity中提供了专属的摄像机插件进行使用 官方Cinemachine插件 后面有相关组件介绍 首先从uni
  • STUN, TURN, ICE介绍

    转自 https blog csdn net byxdaz article details 52786600 utm source blogxgwz4 STUN STUN协议为终端提供一种方式能够获知自己经过NAT映射后的地址 从而替代位于