这几天学习P2P,想使用UDP穿透来打洞,看了一下穿越中间设备(middleboxes)的P2P通讯文章,文章中说有Cone NAT和symmetric NAT两种
Cone NAT又分为多种,Cone NAT是比较容易打洞的,而且现在大多数都是Cone NAT。我就郁闷了,我在我家使用UDP打洞怎样都不通,后来写了一个工具测试了一下发现我的路由器居然是symmetric NAT,我怛心我的测试有问题前来问问
测试方法
1.写了一个服务端程序发在外网上,分别打开3个端口5556,5557,5558
2.在一个NAT后的计算机使用同一个UDP邦定接口内网如(192.168.1.23:1587)向外网的那三个端口发送UDP包。
3.在服务端程序收到的远程地址分别为125.62.49.229:54366,125.62.49.229:54367,125.62.49.229:54368
4.我根据Cone NAT定义如果使用同一个内网点192.168.1.23:1587发送出去的包都会使用同一个外部地址如125.62.49.229:54366来对应,而我的是分别成了不同的3个地址,所以我认为我的Nat是symmetric NAT,再想请问一下您们的NAT是什么类型的
Cone NAT又分为多种,Cone NAT是比较容易打洞的,而且现在大多数都是Cone NAT。我就郁闷了,我在我家使用UDP打洞怎样都不通,后来写了一个工具测试了一下发现我的路由器居然是symmetric NAT,我怛心我的测试有问题前来问问
测试方法
1.写了一个服务端程序发在外网上,分别打开3个端口5556,5557,5558
2.在一个NAT后的计算机使用同一个UDP邦定接口内网如(192.168.1.23:1587)向外网的那三个端口发送UDP包。
3.在服务端程序收到的远程地址分别为125.62.49.229:54366,125.62.49.229:54367,125.62.49.229:54368
4.我根据Cone NAT定义如果使用同一个内网点192.168.1.23:1587发送出去的包都会使用同一个外部地址如125.62.49.229:54366来对应,而我的是分别成了不同的3个地址,所以我认为我的Nat是symmetric NAT,再想请问一下您们的NAT是什么类型的
自已顶一下
http://www.cqcenter.cn:5559/P2PTestNatClient.rar
P2P打洞要做的是向同一个IP和端口发的两个包所得到的远端IP和端口是一致的就可以成功!(这个是关键),还有就是映射出的端口在一段时间是有效的,但时间长了就会失效,所以需要用心跳包来维持连接。
依我看来你的局域网是可以实现P2P的。
向3个端口发和向3台不同机器发是一样的,当然是映射3个端口出来
这个应当不一定吧,如果是Cone NAT,您使用同一邦定的端口到不同的IP和端口,都是一样的
我使用
stun.ekiga.net
stun.fwdnet.net
stun01.sipphone.com
stun.softjoys.com
stun.voipbuster.com
stun.voxgratia.org
stun.xten.com
stunserver.org
返回给我的都是
Primary: Dependent Mapping, random port, no hairpin
Return value is 0x000018
说明我是:Symmetric Nat而使用
larry.gloo.net
返回给我的是
Primary: Indepndent Mapping, Port Dependent Filter, random port, no hairpin
Return value is 0x000016
说明我是:
Port Restricted Nat请问一下我应当相信那一个