通信人家园
标题:
请教高手,对称式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