这几天学习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是什么类型的

解决方案 »

  1.   

    http://community.csdn.net/Expert/TopicView3.asp?id=5562434
    自已顶一下
      

  2.   

    有些nat、防火墙规则严厉的话是无法打洞的.
      

  3.   

    测试程序:大家可测试一下,谢谢了,程序有点大,主要是使用ACE静态连接进去的(我以人格保证不是本马或病毒)
    http://www.cqcenter.cn:5559/P2PTestNatClient.rar
      

  4.   

    向3个端口发和向3台不同机器发是一样的,当然是映射3个端口出来。
    P2P打洞要做的是向同一个IP和端口发的两个包所得到的远端IP和端口是一致的就可以成功!(这个是关键),还有就是映射出的端口在一段时间是有效的,但时间长了就会失效,所以需要用心跳包来维持连接。
    依我看来你的局域网是可以实现P2P的。
      

  5.   

    P2P打洞要做的是向同一个IP和端口发的两个包所得到的远端IP和端口是一致的就可以成功!如果这个不成立,通信都是问题,还不要说打洞了
    向3个端口发和向3台不同机器发是一样的,当然是映射3个端口出来
    这个应当不一定吧,如果是Cone NAT,您使用同一邦定的端口到不同的IP和端口,都是一样的
      

  6.   

    我使用STUN进行测试了一下,有点晕
    我使用
    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请问一下我应当相信那一个