STUN, TURN, ICE介绍

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

时间: 2024-11-08 20:40:13

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

restund 0.4.1发布 STUN/TURN服务器

restund 是一款模块化的STUN/TURN服务器,其主要设计是围绕着轻量级的核心和服务器模块的扩展功能原则.支持UDP和TCP,以及http://www.aliyun.com/zixun/aggregation/9485.html">IPv6和IPv4.支持的模块包括:STUN.TURN.MySQL数据库.系统日志和状态监测. 关于STUN STUN(Simple Traversal of UDP over NATs)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己

webrtc(2):Centos6 安装 stun/turn服务

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/47109183 未经博主允许不得转载. 1,关于stun和turn STUN(Simple Traversal of UDP over NATs,NAT 的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一 个本地端口所绑定的Internet端端口.这些信息被用来在两个同时处于NAT 路由

FreeSWITCH第三方库(其他)的简单介绍(三)

FreeSWITCH使用了大量的第三方库,本文档主要介绍关联相关库的信息: 音频相关库的信息介绍参考:http://www.cnblogs.com/yoyotl/p/5486753.html 视频相关库的信息介绍参考:http://www.cnblogs.com/yoyotl/p/5488890.html   ① ldns dns相关的库.   ② libre libre 是一个利用异步 I/O 实现的实时通讯库.采用可移植的 POSIX 源码编写,符合 ANSI C89 和 ISO C99 标

webrtc教程

cdsn博客不支持word文件,所以这里显示不完全.可到本人资源中下载word文档: v0.3:http://download.csdn.net/detail/kl222/6961491 v0.1:http://download.csdn.net/detail/kl222/6677635  下载完后评论,可以返还你的积分.此文档还在完善中,欢迎大家交流,共同完善.        Webrtc  教程     版本0.3(2014年2月) 康林 (16614119@qq.com)   本文博客地址

baresip 0.4.1发布 简单的SIP用户代理

baresip 是一款简单的SIP用户代理,主要特点是模块化和可移植性.它支持SIP.SDP.RTP/RTCP协议.STUN/TURN/ICE.IPv4和http://www.aliyun.com/zixun/aggregation/9485.html">IPv6,兼容RFC和可移植的C89,以及C99源代码. baresip 配有的模块化插件架构提供了stdio,cons,evdev用户界面,celt,g711,g722,gsm,ilbc,L16,Speex音频编解码器,alsa,Cor

PJNATH介绍 -- 开源的用于NAT穿透的ICE, STUN和TURN

原文地址:http://blog.pjsip.org/2007/04/06/introducing-pjnath-open-source-ice-stun-and-turn/ ICE是什么? 对于那些不熟悉ICE的人而言,ICE可能是一种最全面的用于穿透NAT和多媒体通信的方法.它提供了一种找到两个终端之间最好路径的方法,它还解决了NAT所带来的各种各样的问题,比如两个终端处在同一个NAT后面(and no hairpin is available),两个终端都处在对称NAT后面(在这种情况下,

Web实现音频、视频通信

Google开源实时通信项目WebRTC Google正式开源了WebRTC实时通信项目,希望浏览器厂商能够将该技术内建在浏览器中,从而使Web应用开发人员能够通过HTML标签和JavaScript API就实现Web音频.视频通信功能. WebRTC(Web Real Time Communication)并不是Google原来自己的技术.在2010年,Google以大约6820万美元收购了VoIP软件开发商Global IP Solutions公司,并因此获得了该公司拥有的WebRTC技术.

WebRTC学习资料大全

在学习WebRTC,找了些资料,记录一下,供以后查询. 有些需要FQ才能看 WebRTC 介绍 官网在这里:https://webrtc.org/.然后这里有一个官方的Getting Started:https://webrtc.org/start/. Google关于WebRTC的幻灯片: http://io13webrtc.appspot.com/ 然后是WebRTC的SPEC: https://www.w3.org/TR/webrtc/ WebRTC项目源码地址:https://chrom

android视频项目使用资源

在工作中和对视频方面项目的总结. 主要介绍使用一些高性能工具,如有问题的,欢迎交流. speex: Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式.Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛 .另外,相对于其它编解码器,Speex也很适合网络应用,在网络应用上有着自己独特的优势. 官网:http://www.speex.org/ 例子博客:http://blog.csdn.net/chenfeng0104/article/details/70