我初略看了看  “P2P 之 UDP穿透NAT的原理与实现”  这篇文章,
不过对打洞还不是很明白,对于cone NAT在互相发送UDP打洞包的时候,是否要明确发送到对方公网的IP的那个端口上,或者是发送到对方公网IP的任意端口?而对于Symmetric NAT又该怎么处理呢?难道没有办法解决这种NAT么?

解决方案 »

  1.   

    还有一问题就是一个NAT后面有多个内网机器,如果每个机器都开启同样的客户端,他们在各自的机器上用的端口号一样,而且都连接同一个服务器,会不会在NAT上面出现端口错误的问题呢?
      

  2.   

    1. 不过对打洞还不是很明白,对于cone NAT在互相发送UDP打洞包的时候,是否要明确发送到对方公网的IP的那个端口上,或者是发送到对方公网IP的任意端口?任意端口。这个UDP包最终是会被对方的网关丢弃掉的, 发送这个UDP包的目的中是为了在自己的网关上打个能让对方的UDP包穿透自己的网关的"洞"。
    2. 还有一问题就是一个NAT后面有多个内网机器,如果每个机器都开启同样的客户端,他们在各自的机器上用的端口号一样,而且都连接同一个服务器,会不会在NAT上面出现端口错误的问题呢?
    多个内网机器,它们在网关上打的洞的NAPT端口号是不同的(由网关分配),所以不会出现问题。