STUN穿透

合集下载

STUN解决关于SIP的NAT穿透

STUN解决关于SIP的NAT穿透

STUN解决关于SIP的NAT穿透 STUN(Simple Traversal of UDP over NATs,NAT的UDP简单穿越)是⼀种⽹络协议,它允许位于NAT(或多重NAT)后的客户端找出⾃⼰的公⽹地址,查出⾃⼰位于哪种类型的NAT之后以及NAT为某⼀个本地端⼝所绑定的 Internet端端⼝。

这些信息被⽤来在两个同时处于NAT 路由器之后的主机之间建⽴UDP通信。

该协议由Rfc3489定义。

⼀旦客户端得知了Internet端的UDP端⼝,通信就可以开始了。

如果NAT是完全圆锥型的,那么双⽅中的任何⼀⽅都可以发起通信。

如果NAT是受限圆锥型或端⼝受限圆锥型,双⽅必须⼀起开始传输。

需要注意的是,要使⽤STUN RFC中描述的技术并不⼀定需要使⽤STUN协议——还可以另外设计⼀个协议并把相同的功能集成到运⾏该协议的服务器上。

SIP之类的协议是使⽤UDP分组在Internet上传输⾳频和/或视频数据的。

不幸的是,由于通信的两个末端往往位于NAT之后,因此⽤传统的⽅法是⽆法建⽴连接的。

这也就是STUN发挥作⽤的地⽅。

STUN是⼀个客户机-服务器协议。

⼀个VoIP电话或软件包可能会包括⼀个STUN客户端。

这个客户端会向STUN服务器发送请求,之后,服务器就会向STUN客户端报告NAT路由器的公⽹IP地址以及NAT为允许传⼊流量传回内⽹⽽开通的端⼝。

以上的响应同时还使得STUN客户端能够确定正在使⽤的NAT类型——因为不同的NAT类型处理传⼊的UDP分组的⽅式是不同的。

四种主要类型中有三种是可以使⽤的:完全圆锥型NAT、受限圆锥型NAT和端⼝受限圆锥型NAT——但⼤型公司⽹络中经常采⽤的对称型NAT(⼜称为双向NAT)则不能使⽤。

stun穿透原理

stun穿透原理

stun穿透原理宝子们!今天咱们来唠唠这个有点神秘又超级有趣的STUN穿透原理。

咱先得知道啥是STUN。

简单来说呢,STUN就像是一个小侦探,在网络的世界里跑来跑去,专门为了解决一些网络通信的小麻烦。

你想啊,在网络这个大江湖里,设备之间要通信,就像两个人要聊天,可有时候中间会有各种各样的阻碍,就像有一堵堵墙挡着。

那STUN穿透是怎么个事儿呢?想象一下,你和你的小伙伴在两个不同的院子里,中间有高高的围墙。

正常情况下,你们很难直接看到对方,更别说聊天递小纸条了。

STUN呢,就像是一个聪明的小邮差。

它会先从你这边出发,跑到围墙的各个角落去查看情况。

当你的设备要和另一个设备通信的时候,STUN服务器就开始工作啦。

它会让你的设备发一些小消息出去,就像小石子扔出去看看有没有反应。

这些小消息里包含了很多关于你这边网络的信息,比如说你的IP地址呀,还有一些端口相关的信息。

这个IP地址就像是你在网络这个大村子里的住址一样。

这个时候呢,STUN服务器接到这些小消息后,就开始分析。

它会看看你的网络环境是啥样的。

比如说,你的网络是不是在一个比较特殊的局域网里面,就像住在那种有很多小院子的大院子里,外面还有个大门管着。

如果是这样的话,STUN服务器就会想办法找到一条路,让你的消息能够从这个特殊的局域网里出去,就像找到大门的钥匙一样。

STUN服务器会根据收到的信息,告诉外面的世界,你的设备在这个网络里的具体位置。

这个位置信息很关键哦。

就好比你要给远方的朋友寄信,你得告诉他准确的地址,他才能收到。

对于网络通信来说,这个位置信息就是让另一个设备能够找到你的关键。

而且呀,STUN穿透还有一个很有趣的地方。

它就像一个小魔法师,有时候能把一些看起来很复杂的网络地址转换之类的问题给变没了。

比如说,在一些网络环境里,你的设备的真实IP地址可能被隐藏起来了,就像你穿着一件隐身衣。

但是STUN通过它的魔法,能让你的设备在通信的时候,把这个隐身衣给脱下来一会儿,让对方能看到你的真实地址,这样就能顺利通信啦。

NAT穿透技术穿透原理和方法详解

NAT穿透技术穿透原理和方法详解

NAT穿透技术穿透原理和方法详解NAT穿透技术是指在网络地址转换(NAT)环境下,通过一系列方法和技术,使内部设备能够与外部设备进行通信和访问。

NAT穿透技术的出现,解决了NAT所带来的通信限制和访问障碍问题,提供了更便捷的网络连接方式。

1. UPnP(Universal Plug and Play):UPnP是一种网络协议,用于自动配置设备和服务的网络通信。

UPnP可以帮助设备自动在NAT设备上创建端口映射,使内部设备能够直接被外部设备访问。

2. STUN(Simple Traversal of UDP through NAT):STUN是一种基于UDP的NAT穿透技术。

通过STUN服务器的中转,可以获取NAT设备的地址信息,进而建立内外设备的连接。

STUN可以通过多种方式获取地址信息,包括使用UDP报文中的IP地址和端口号等。

3. TURN(Traversal Using Relays around NAT):TURN是一种通过中继服务器实现NAT穿透的技术。

当无法直接建立连接时,内部设备可以通过TURN服务器作为中继,通过中继服务器与外部设备进行通信和交换数据。

4. ICE(Interactive Connectivity Establishment):ICE是一种综合利用STUN和TURN的NAT穿透技术。

ICE通过候选地址收集、比较和优选等步骤,选择最优的传输路径,确保内外设备之间的通信畅通。

以上方法中,UPnP是最简单且常用的NAT穿透技术,可以自动配置和映射端口,让内部设备能够被外部设备直接访问。

但是UPnP需要设备和路由器支持,而且由于安全性问题,有些网络中禁用了UPnP。

而STUN、TURN和ICE等技术则依赖于中继服务器和地址信息的获取,相对更加复杂一些,但是可以在更广泛的网络环境中使用。

总结来说,NAT穿透技术通过各种方法和技术,使得内部设备能够与外部设备进行通信和访问。

不同的NAT穿透方法适用于不同的网络环境,选择合适的方法能够提高网络连接和通信的效率。

一种Symmetric NAT穿透的新方法

一种Symmetric NAT穿透的新方法

一种Symmetric NAT穿透的新方法冯金哲;殷海兵【摘要】NAT(Network Address Translator)不仅解决了IP地址短缺的问题,而且也使内网主机避免了来自网络外部的攻击.但对于P2P应用来说,需要建立端到端的连接,所以说如何穿透NAT成为了P2P技术中的一个关键.通过对当前NAT穿透技术的研究,发现依靠TURN (Traversal Using Relay NAT)来实现对Symmetric NAT穿透往往存在服务器负担重、延时、丢包的问题,于是给出一种基于端口预测的NAT穿透新方法.该方法避免了依靠TURN来实现对Symmetric NAT穿透所带来的难题,大大满足了对网络安全要求高而使用对称型NAT企业的需求.%NAT(Network Address Translator) not only solves the problem of IP address shortage, but also makes the network host avoid the attacks from outside the networks.But for P2P application, it needs to establish an end-to-end connection,so how to realise NAT traversal becomes a key in P2P technology.Based on the research of current NAT traversal technology, we found that to achieve Symmetrical NAT traversal relying on TURN (Traversal Using Relay NAT) often has the problems of heavy server burden, time delay and packet loss.Therefore, in this paper we present a new NAT traversal method by using port prediction, the method avoids the problems brought by relying TURN to implement traversal of symmetrical NAT, and greatly satisfies the requirements of those enterprises who have high demand on network security and thus use symmetric NAT.【期刊名称】《计算机应用与软件》【年(卷),期】2017(034)001【总页数】4页(P125-128)【关键词】Symmetric NAT;TURN;P2P;NAT穿透【作者】冯金哲;殷海兵【作者单位】中国计量学院信息工程学院浙江杭州310018;中国计量学院信息工程学院浙江杭州310018【正文语种】中文【中图分类】TP393网络地址转换[1]NAT是一个非常有名的工具,能够使IP地址在网络上重用。

stun协议实现

stun协议实现

竭诚为您提供优质文档/双击可除stun协议实现篇一:stun协议简析stun协议简析stun简介stun(simpletraversalofudpovernats,nat的udp简单穿越)是一种网络协议,它允许位于nat(或多重nat)后的客户端找出自己的公网地址,查出自己位于哪种类型的nat之后以及nat为某一个本地端口所绑定的internet端端口。

这些信息被用来在两个同时处于nat路由器之后的主机之间建立udp通信。

该协议由RFc3489定义。

一旦客户端得知了internet端的udp端口,通信就可以开始了。

如果nat是完全圆锥型的,那么双方中的任何一方都可以发起通信。

如果nat是受限圆锥型或端口受限圆锥型,双方必须一起开始传输。

需要注意的是,要使用stunRFc中描述的技术并不一定需要使用stun协议——还可以另外设计一个协议并把相同的功能集成到运行该协议的服务器上。

sip之类的协议是使用udp分组在internet上传输音频和/或视频数据的。

不幸的是,由于通信的两个末端往往位于nat之后,因此用传统的方法是无法建立连接的。

这也就是stun发挥作用的地方。

stun是一个客户机-服务器协议。

一个Voip电话或软件包可能会包括一个stun客户端。

这个客户端会向stun服务器发送请求,之后,服务器就会向stun客户端报告nat路由器的公网ip地址以及nat为允许传入流量传回内网而开通的端口。

以上的响应同时还使得stun客户端能够确定正在使用的nat类型——因为不同的nat类型处理传入的udp分组的方式是不同的。

四种主要类型中有三种是可以使用的:完全圆锥型nat、受限圆锥型nat和端口受限圆锥型nat——但大型公司网络中经常采用的对称型nat(又称为双向nat)则不能使用。

simpletraversalofuserdatagramprotocol(udp)throughne tworkaddresstranslators(nats)(stun)stun,是为了实现透明的穿透nat,而定义的一套协议。

STun原理及过程

STun原理及过程

STUN原理及过程STUN是RFC3489规定的一种NA T穿透方式,它采用辅助的方法探测NA T的IP和端口。

毫无疑问的,它对穿越早期的NA T起了巨大的作用,并且还将继续在ANT穿透中占有一席之地。

STUN的探测过程需要有一个公网IP的STUN server,在NAT后面的UAC必须和此server配合,互相之间发送若干个UDP数据包。

UDP包中包含有UAC需要了解的信息,比如NAT外网IP,PORT等等。

UAC通过是否得到这个UDP包和包中的数据判断自己的NA T类型。

假设有如下UAC(B),NAT(A),SERVER(C),UAC的IP为IPB,NAT的IP为IPA ,SERVER的IP为IPC1 、IPC2。

请注意,服务器C有两个IP,后面你会理解为什么需要两个IP。

(1)NAT的探测过程:STEP1:B向C的IP1的pot1端口发送一个UDP包。

C收到这个包后,会把它收到包的源IP和port写到UDP包中,然后把此包通过IP1和port1发还给B。

这个IP和port也就是NAT的外网IP和port(如果你不理解,那么请你去看我的BLOG里面的NAT的原理和分类),也就是说你在STEP1中就得到了NAT的外网IP。

熟悉NAT工作原理的朋友可以知道,C返回给B的这个UDP包B一定收到(如果你不知道,去读下我的其它文章)。

如果在你的应用中,向一个STUN服务器发送数据包后,你没有收到STUN的任何回应包,那只有两种可能:1、STUN服务器不存在,或者你弄错了port。

2、你的NA T拒绝一切UDP包从外部向内部通过(我们公司的NA T就是)。

当B收到此UDP后,把此UDP中的IP和自己的IP做比较,如果是一样的,就说明自己是在公网,下步NAT将去探测防火墙类型,我不想多说。

如果不一样,说明有NAT的存在,系统进行STEP2的操作。

STEP2:B向C的IP1发送一个UDP包,请求C通过另外一个IP2和PORT(不同与SETP1的IP1)向B返回一个UDP数据包(现在知道为什么C要有两个IP了吧,虽然还不理解为什么,呵呵)。

NAT穿透和ICE

NAT穿透和ICE

NAT穿透和ICE介绍一.什么是NAT(Network Address Translation),需要解决什么问题?∙私有地址块10.0.0.0/8 172.16.0.0/12(16个) 192.168.0.0/16(256个)∙生活中的NAT: c/s(浏览网页聊天游戏),服务固定P2P∙通信服务的复杂性使得VOIP会有更多NAT穿透问题:1 需分别完成信令媒体的穿透,媒体还是随机不固定的 2 不是简单的c/s结构,中间会有很多的代理服务器 2 部署方法千奇百怪,服务器可以在内网,媒体可以不经过服务器,有些电话需要穿透而有些又不需要。

二.NAT类型:∙完全圆锥型NAT(Full Cone NAT),∙地址限制圆锥型NAT (Address Restricted Cone NAT),∙端口限制圆锥型NAT (Port Restricted Cone NAT),∙对称型NAT (Symmetric NAT)。

三.如何使用Stun服务器检测设备所处网络的NAT类型stun服务器需要两个公网IP:IP1:Port IP2:Port∙step1:client向server IP1发送请求,server使用IP1:Port将收到请求的源IP和Port (即设备的公网IP和Port)回复给client,如果得到的公网IP和设备自身的IP一样,则判断设备自身处在公网,无NA T,检测结束。

∙step2:client向server IP1发送请求,server使用IP2:Port来回复,如果设备能收到回复,则判断为Full Cone NAT,检测结束。

∙step3:client 向server IP2发送请求,server使用IP2:Port将收到的源IP和Port回复给client,client判断此port和Step1得到的port 是否一样,如果一样,则为Restricted Cone NAT,如果不一样,则为Symmetric NAT。

stun 穿透方法

stun 穿透方法

stun 穿透方法STUN(Simple Traversal of UDP through NATs)是一种网络协议,用于在NAT(Network Address Translation)后面的设备之间传输数据。

STUN协议的目的是允许位于私有网络(如家庭网络或企业网络)后面的设备与Internet上的其他设备进行通信。

STUN协议的主要功能是帮助设备发现自己位于NAT后面的公共IP地址和端口。

关于STUN穿透方法,有几种常见的实现方式:1. 客户端/服务器模型,在这种模型中,客户端设备向STUN服务器发送请求,以获取其在NAT后的公网IP和端口。

通过这种方式,客户端可以向其他设备发送其真实的网络地址,从而实现穿透。

2. 对称NAT处理,对称NAT是一种NAT类型,它会为每个外部目的地IP地址和端口分配一个唯一的内部IP地址和端口。

STUN协议可以通过与对称NAT进行交互,以便在通信时正确处理这种特殊的NAT类型。

3. ICE(Interactive Connectivity Establishment),ICE是一种综合性的NAT穿透解决方案,它结合了STUN、TURN (Traversal Using Relays around NAT)和其他技术,以便在各种网络环境下实现设备之间的实时通信。

4. TURN服务器,当STUN无法直接建立连接时,可以使用TURN 服务器作为中继,帮助设备进行通信。

TURN服务器可以在设备之间进行数据中转,从而克服NAT的限制。

总的来说,STUN穿透方法是通过与STUN服务器交互,获取设备在NAT后的真实网络地址,或者通过其他手段(如TURN服务器)来实现设备之间的通信。

这些方法都旨在克服NAT对设备间通信的限制,从而实现更加灵活和可靠的网络连接。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STUN协议的全称是Simple Traversal of User Datagram Protocol Through Network Address Translators,主要功能是检测是否位于NAT后面,如果位于NAT后面,经过NAT转换后的地址和端口是什么,另外可以检测NAT的类型。

基本思想
在私网内部安装一个STUN client,在公网上安装一个STUN Server,STUN协议定义了一些消息格式,大体上分成Request/Response,client向server发送request,server发送response给client。

如何检测STUN client是否在NAT后面呢?原理很简单,Server在收到client的UDP包以后,Server将接收到该包的地址和端口利用udp传回来给client,client把这些地址和端口与本机的ip 地址和端口进行比较,如果不同,说明在NAT后面,否则就位于NAT后面。

为了检测不同类型的NAT,STUN协议定义了一些消息属性,要求Server有不同的动作,比如发送响应的时候使用不同的IP地址和端口,或者改变端口等等。

STUN协议对NAT可能有效,但是对防火墙就无能为力了,因为防火墙可能不会打开UDP端口。

NAT分类
STUN协议将NAT粗略分为4种类型,即Full Cone、Restricted Cone、Port Restricted Cone 和Symmetric。

举个实际例子来说明这四种NAT的区别:
A机器在私网(192.168.0.4)
NAT服务器(210.21.12.140)
B机器在公网(210.15.27.166)
C机器在公网(210.15.27.140)
现在,A机器连接过B机器,假设是A(192.168.0.4:5000)-> NAT(转换后210.21.12.140:8000)-> B(210.15.27.166:2000)。

同时A从来没有和C通信过。

则对于不同类型的NAT,有下列不同的结果:
Full Cone NAT:C发数据到210.21.12.140:8000,NAT会将数据包送到A(192.168.0.4:5000)。

因为NAT上已经有了192.168.0.4:5000到210.21.12.140:8000的映射。

Restricted Cone:C无法和A通信,因为A从来没有和C通信过,NAT将拒绝C试图与A 连接的动作。

但B可以通过210.21.12.140:8000与A的192.168.0.4:5000通信,且这里B可以使用任何端口与A通信。

如:210.15.27.166:2001 -> 210.21.12.140:8000,NAT会送到A的5000端口上。

Port Restricted Cone:C无法与A通信,因为A从来没有和C通信过。

而B也只能用它的210.15.27.166:2000与A的192.168.0.4:5000通信,因为A也从来没有和B的其他端口通信过。

该类型NAT是端口受限的。

Symmetric NAT:上面3种类型,统称为Cone NAT,有一个共同点:只要是从同一个内部地址和端口出来的包,NAT都将它转换成同一个外部地址和端口。

但是Symmetric有点不同,具体表现在:只要是从同一个内部地址和端口出来,且到同一个外部目标地址和端口,则NAT 也都将它转换成同一个外部地址和端口。

但如果从同一个内部地址和端口出来,是到另一个外部目标地址和端口,则NAT将使用不同的映射,转换成不同的端口(外部地址只有一个,故不变)。

而且和Port Restricted Cone一样,只有曾经收到过内部地址发来包的外部地址,才能通过NAT 映射后的地址向该内部地址发包。

现针对Symmetric NAT举例说明:
A机器连接过B机器,假使是A(192.168.0.4:5000)-> NAT(转换后210.21.12.140:8000)-> B(210.15.27.166:2000)
如果此时A机器(192.168.0.4:5000)还想连接C机器(210.15.27.140:2000),则NAT上产生一个新的映射,对应的转换可能为A(192.168.0.4:5000)-> NAT(转换后210.21.12.140:8001)
-> C(210.15.27.140:2000)。

此时,B只能用它的210.15.27.166:2000通过NAT的210.21.12.140: 8000与A的192.168.0.4:5000通信,C也只能用它的210.15.27.140:2000通过NAT的
210.21.12.140:8001与A的192.168.0.4:5000通信,而B或者C的其他端口则均不能和A的192.168.0.4:5000通信。

相关文档
最新文档