彩虹六号nat类型没了 strice怎么处理

基于ICE方式的综合性NAT穿越解决方案设计与实现_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于ICE方式的综合性NAT穿越解决方案设计与实现
&&NAT 穿越,三网融合以后一定会大有用途。
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)豆丁微信公众号
君,已阅读到文档的结尾了呢~~
ICE-SIP穿透NAT问题的终极解决方案ICE-the ultimate way of beating NAT in SIP
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
ICE-SIP穿透NAT防火墙问题的终极解决方案
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)ICE协议下NAT穿越的实现(STUN&TURN) - 简书
ICE协议下NAT穿越的实现(STUN&TURN)
之前写了篇关于WebRTC的文章:,由于它是基于点对点连接的,自然而然需要NAT穿越的技术,否则消息将无法传递。
在WebRTC使用了ICE协议框架,里面提到了STUN和TURN两个协议,而NAT穿越实现就是由这两个协议共同协调完成的。
一. 首先来简单讲讲什么是NAT?
原来这是因为IPV4引起的,我们上网很可能会处在一个NAT设备(无线路由器之类)之后。
NAT设备会在IP封包通过设备时修改源/目的IP地址. 对于家用路由器来说, 使用的是网络地址端口转换(NAPT), 它不仅改IP, 还修改TCP和UDP协议的端口号, 这样就能让内网中的设备共用同一个外网IP. 举个例子, NAPT维护一个类似下表的NAT表:
NAT设备会根据NAT表对出去和进来的数据做修改, 比如将192.168.0.3:8888发出去的封包改成120.132.92.21:9202, 外部就认为他们是在和120.132.92.21:9202通信. 同时NAT设备会将120.132.92.21:9202收到的封包的IP和端口改成192.168.0.3:8888, 再发给内网的主机, 这样内部和外部就能双向通信了, 但如果其中192.168.0.3:8888 == 120.132.92.21:9202这一映射因为某些原因被NAT设备淘汰了, 那么外部设备就无法直接与192.168.0.3:8888通信了。
我们的设备经常是处在NAT设备的后面, 比如在大学里的校园网, 查一下自己分配到的IP, 其实是内网IP, 表明我们在NAT设备后面, 如果我们在寝室再接个路由器, 那么我们发出的数据包会多经过一次NAT.
二. NAT的副作用以及解决方案
国内移动无线网络运营商在链路上一段时间内没有数据通讯后, 会淘汰NAT表中的对应项, 造成链路中断。
这是NAT带来的第一个副作用:NAT超时:
而国内的运营商一般NAT超时的时间为5分钟,所以通常我们TCP长连接的心跳设置的时间间隔为3-5分钟。**
而第二个副作用就是:我们这边文章要提到的NAT墙。
NAT会有一个机制,所有外界对内网的请求,到达NAT的时候,都会被NAT所丢弃,这样如果我们处于一个NAT设备后面,我们将无法得到任何外界的数据。
但是这种机制有一个解决方案:就是如果我们A主动往B发送一条信息,这样A就在自己的NAT上打了一个B的洞。这样A的这条消息到达B的NAT的时候,虽然被丢掉了,但是如果B这个时候在给A发信息,到达A的NAT的时候,就可以从A之前打的那个洞中,发送给到A手上了。
简单来讲,就是如果A和B要进行通信,那么得事先A发一条信息给B,B发一条信息给A。这样提前在各自的NAT上打了对方的洞,这样下一次A和B之间就可以进行通信了。
三. 四种NAT类型:
RFC3489 中将 NAT 的实现分为四大类:
Full Cone NAT
(完全锥形 NAT)
Restricted Cone NAT
(限制锥形 NAT ,可以理解为 IP 限制,Port不限制)
Port Restricted Cone NAT
(端口限制锥形 NAT,IP+Port 限制)
Symmetric NAT
(对称 NAT)
其中完全最上层的完全锥形NAT的穿透性最好,而最下层的对称形NAT的安全性最高。
简单来讲讲这4种类型的NAT代表什么:
如果一个NAT是Full Cone NAT,那么无论什么IP地址访问,都不会被NAT墙掉(这种基本很少)。
Restricted Cone NAT,仅仅是经过打洞的IP能穿越NAT,但是不限于Port。
Port Restricted Cone NAT,仅仅是经过打洞的IP+端口号能穿越NAT。
Symmetric NAT 这种也是仅仅是经过打洞的IP+端口号能穿越NAT,但是它有一个最大的和Cone类型的NAT的区别,它对外的公网Port是不停的变化的:
比如A是一个对称NAT,那么A给B发信息,经过NAT映射到一个Port:10000,A给C发信息,经过NAT映射到一个Port:10001,这样会导致一个问题,我们服务器根本无法协调进行NAT打洞。
至于为什么无法协调打洞,下面我们会从STUN和TURN的工作原理来讲。
四. STUN和TURN的实现:
1.STUN Server主要做了两件事:
接受客户端的请求,并且把客户端的公网IP、Port封装到ICE Candidate中。
通过一个复杂的机制,得到客户端的NAT类型。
完成了这些STUN Server就会这些基本信息发送回客户端,然后根据NAT类型,来判断是否需要TURN服务器协调进行下一步工作。
我们来讲讲这两步具体做了什么吧:
第一件事就不用说了,其实就是得到客户端的请求,把源IP和Port拿到,添加到ICE Candidate中。
来讲讲第二件事,STUN是如何判断NAT的类型的:
假设B是客户端,C是STUN服务器,C有两个IP分别为IP1和IP2(至于为什么要两个IP,接着往下看):
STEP1.判断客户端是否在NAT后:
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、你的NAT拒绝一切UDP包从外部向内部通过。
当B收到此UDP后,把此UDP中的IP和自己的IP做比较,如果是一样的,就说明自己是在公网,下步NAT将去探测防火墙类型,我不想多说。如果不一样,说明有NAT的存在,系统进行STEP2的操作。
STEP2.判断是否处于Full Cone Nat下:
B向C的IP1发送一个UDP包,请求C通过另外一个IP2和PORT(不同与SETP1的IP1)向B返回一个UDP数据包(现在知道为什么C要有两个IP了吧,虽然还不理解为什么,呵呵)。
我们来分析一下,如果B收到了这个数据包,那说明什么?说明NAT来着不拒,不对数据包进行任何过滤,这也就是STUN标准中的full cone NAT。遗憾的是,Full Cone Nat太少了,这也意味着你能收到这个数据包的可能性不大。如果没收到,那么系统进行STEP3的操作。
STEP3.判断是否处于对称NAT下:
B向C的IP2的port2发送一个数据包,C收到数据包后,把它收到包的源IP和port写到UDP包中,然后通过自己的IP2和port2把此包发还给B。
和step1一样,B肯定能收到这个回应UDP包。此包中的port是我们最关心的数据,下面我们来分析:
如果这个port和step1中的port一样,那么可以肯定这个NAT是个CONE NAT,否则是对称NAT。道理很简单:根据对称NAT的规则,当目的地址的IP和port有任何一个改变,那么NAT都会重新分配一个port使用,而在step3中,和step1对应,我们改变了IP和port。因此,如果是对称NAT,那这两个port肯定是不同的。
如果在你的应用中,到此步的时候PORT是不同的,那么这个它就是处在一个对称NAT下了。如果相同,那么只剩下了restrict cone 和port restrict cone。系统用step4探测是是那一种。
STEP4.判断是处于Restrict Cone NAT还是Port Restrict NAT之下:
B向C的IP2的一个端口PD发送一个数据请求包,要求C用IP2和不同于PD的port返回一个数据包给B。
我们来分析结果:如果B收到了,那也就意味着只要IP相同,即使port不同,NAT也允许UDP包通过。显然这是Restrict Cone NAT。如果没收到,没别的好说,Port Restrict NAT.
到这里STUN Server一共通过这4步,判断出客户端处于什么类型的NAT下,然后去做后续的处理:
这4步都会返回给客户端它的公网IP、Port和NAT类型,除此之外:
如果A处于公网或者Full Cone Nat下,STUN不做其他的了,因为其他客户端可以直接和A进行通信。
如果A处于Restrict Cone或者Port Restrict NAT下,STUN还会协调TURN进行NAT打洞。
Paste_Image.png
如果A处于对称NAT下,那么点对点连接下,NAT是无法进行打洞的。所以为了通信,只能采取最后的手段了,就是转成C/S架构了,STUN会协调TURN进行消息转发。
Paste_Image.png
2.TURN Server也主要做了两件事:
为NAT打洞:
如果A和B要互相通信,那么TURN Server,会命令A和B互相发一条信息,这样各自的NAT就留下了对方的洞,下次他们就可以之间进行通信了。
为对称NAT提供消息转发:
当A或者B其中一方是对称NAT时,那么给这一方发信息,就只能通过TURN Server来转发了。
最后补充一下,为什么对称NAT无法打洞:
假如A、B进行通信,而B处于对称NAT之下,那么A与B通信,STUN拿到A,B的公网地址和端口号都为10000,然后去协调TURN打洞,那么TURN去命令A发信息给B,则A就在NAT打了个B的洞,但是这个B的洞是端口号为10000的洞,但是下次B如果给A发信息,因为B是对称NAT,它给每个新的IP发送信息时,都重新对应一个公网端口,所以给A发送请求可能是公网10001端口,但是A只有B的10000端口被打洞过,所以B的请求就被丢弃了。
显然Server是无法协调客户端打洞的,因为协调客户端打得洞仅仅是上次对端为Server发送端口的洞,并不适用于另一个请求。
最后的最后再补充一点,就是NAT打的洞也是具有时效性的,如果NAT超时了,那么还是需要重新打洞的。
写在最后:
本来这篇文章前几天就写完了的,想配个图再发上来,结果莫名其妙就没了。。然后又老老实实的在写了一遍,心塞啊。
千里之行,始于足下
原文链接:http://bbs.pediy.com/thread-131961.htm 作者:heyuehui 一、什么是NAT?为什么要使用NAT? NAT是将私有地址转换为合法IP地址的技术,通俗的讲就是将内网与内网通信时怎么将内网私有IP地址转换为可在网络中传播的合法...
一、什么是NAT?为什么要使用NAT? NAT是将私有地址转换为合法IP地址的技术,通俗的讲就是将内网与内网通信时怎么将内网私有IP地址转换为可在网络中传播的合法IP地址。NAT的出现完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部...
原作者是分为两篇发的,这里我整合成一篇 名称:STUN/TURN/ICE协议在P2P SIP中的应用 作者:大雪先生 链接:http://www.cnblogs.com/ishang/p/3810382.html
http://www.cnblogs.com/is...
原文链接 P2P实现的原理 首先先介绍一些基本概念:
NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT从历史发展上分为两大类,基本的NAT和NAPT(N...
Teredo 原理概述 http://www.ipv6bbs.cn/thread-144-1-1.html (出处: IPv6BBS,满天星发表于
22:40:00) 摘要 了解 Teredo (又成为面向 IPv6 的 IPv4 NAT穿越,是一项 I...
教育、自我成长、以及中国式众筹(176) 我一直努力,但为什么一直不成功? 最近开始明悟,原来成功需要在无为之处下功夫。 什么是无为之处?简单来讲就是我们没有直接做事的时候。 例如,销售员费力卖出去了一个产品,消费者使用产品的时候; 例如,老板管理着几个干部,这些干部管理手...
十二因缘如下:无明缘行,行缘识,识缘名色,名色缘六入,六入缘触,触缘受,受缘爱,爱缘取,取缘有,有缘生,生缘老死忧悲苦恼。
《说文解字》曰,“婚,婦家也。”“姻,壻家也。”壻,即女人依靠的对象。所以,婚姻即是女人及其依靠对象共同的家。所以,在婚姻中女人应该最有发言权。在男女婚姻中,婚姻即是夫妇之家,这当是常理了。 很多时候,我们遇到的情况是,女人嫁到”夫家“而已,传统“嫁娶”一直如此。无论轿队再...
关于老包总和包太的事,如鲠在喉,不吐不快。 《欢乐颂》2跟1相比,若要说有什么新的看点,老王觉得,包奕凡父母值得聊聊。 老包和包太,是一对典型的白手起家,共患难却不能同富贵的中国式夫妻。本以为一起经历了风雨到了笑看彩虹的年纪,谁曾想老了老了还要作,而且是作到了极致,相恨相杀...
用户登录 短信验证步骤 用户登录模块采用短信验证的方式,登录用户,所以采用sharesdk进行短信验证 1 短信注册获取验证码 1.1 配置初始化信息 1.2 注册按钮点击事件 1.3 监听验证码是否发送成功 1.4 验证码是否匹配 给指定手机发送的验证码和提交的验证码是否...

我要回帖

更多关于 彩虹六号nat设置open 的文章

 

随机推荐