通信人家园

标题: 请教高手,对称式NAT的端口选取规则,如何穿越?  [查看完整版帖子] [打印本页]

时间:  2004-7-13 17:32
作者: com     标题: 请教高手,对称式NAT的端口选取规则,如何穿越?

急!


---
NAT分为两种,一种是非对称的,另外一种当然就是对称的了。

NAT的作用是地址转换,用于内网和外网之间的地址映射,具体点说就是:192.168.0.1:1234经过NAT发送信息访问202.119.0.1:80,于是192.168.0.1:1234就在NAT上面注册为218.109.3.5:54342(上述数字都是假设)。这个时候202.119.0.1:80看到的是218.109.3.5:54342这个EndPoint,因此会传的信息也自然发送到218.109.3.5:54342——实际上是NAT的地址,NAT经过查表,将这个信息转发到192.168.0.1:1234上面。

非对称的意思是:当192.168.0.1:1234在NAT上面注册了218.109.3.5:54342这个外网地址之后,外网的所有EndPoint都可以通过这个218.109.3.5:54342来访问192.168.0.1:1234。

而对称的意思是:注册的时候实际上还注册了对方的IP。因此在上例当中,除了202.119.0.1:80之外,任何其他的EndPoint要访问218.109.3.5:54342都会被拒绝!也就是达到了一定的防火墙的功能。

无论是非对称还是对称的NAT,如果我们希望不通过拥有固定IP的外网服务器进行跨NAT的P2P访问,都需要知道双方在NAT上面注册的映射EndPoint。这个问题比较好办,但是也离不开中间服务器的帮助:双方通过向中间服务器发送信息,使得中间服务器知道双方在各自的NAT上面注册的EndPoint到底是多少,然后就可以获得对方的NAT EndPoint,通过向对方的NAT EndPoint发送信息来达到P2P通信的目的。注意,在进行P2P通信的时候,实际上已经脱离了中间服务器的转发工作了。

问题是,如果是对称的NAT,光是向中间服务器发送消息是不够的,因为那样之能够让中间服务器和某个点进行通信,而无法P2P——因为点B的NAT EndPoint并没有在点A的NAT上面注册。而第一篇文章所说的方法,就是为了突破对称NAT的。方法就是设法让双方同时向对方NAT发送信息,利用网络延时提前注册对方的NAT EndPoint。这个方法的一个前提就是,同一个内部End Point在向不同外部End Point发送信息时,在NAT上面注册的NAT EndPoint是同一个End Point。还是在上面那个例子:如果192.168.0.1:1234往另外一个地方比如说202.0.0.1:1234发送信息的时候,NAT会分配另外一个EndPoint比如说218.109.3.5:31456,那么上面这种方法就不可能成功了。这也许就是第一篇文章当中提到的有可能失败的情况吧。

时间:  2004-7-14 13:37
作者: 四不象

你的问题好长,我看得累死
时间:  2004-7-14 13:45
作者: 四不象

看了半天没明白你的问题,说清楚一点啊
时间:  2004-7-14 14:42
作者: 家园客人

就是怎么穿越对称式NAT
时间:  2004-7-14 14:46
作者: 四不象

要么通过中间服务器,要么网关做端口映射,没有好办法
时间:  2008-12-1 15:15
作者: ecit

看看。
时间:  2011-11-29 18:07
作者: 撑死的懒鬼

同样纠结这个问题。。。




通信人家园 (https://www.txrjy.com/) Powered by C114