处于nat后的主机主动连接公网上的机器能够成功,
但公网上的机器主动连接nat后的这台机器却不能成功,为什么??
处于nat后的主机连接公网上的机器以获取数据却能收到,公网上的这台机器是怎么把数据发送至内网的??

解决方案 »

  1.   

    强烈关注,以前在得公司是做p2p,他们好像还存了每个用户的公网ip与内网ip,我就是不知道内网ip是怎么得到的,他们有是怎样的方式通讯的。
      

  2.   

    公网a 得到nat 后面主机 发来的包 ,分析其ip和端口,用接受此包的socket可以向那个内网主机任意发送信息包。(注意要在nat的映射时间内),如果用其他socket发送到那个端口,内部主机都是接受不到的。。不知各位的情况是不是这样??
      

  3.   

    那两个都是在nat后面的机器是怎样互相通信的??
      

  4.   

    To: kxyes
    要看网关的nat具体是如何实现的,我写过一个网关,对于你所说的“如果用其他socket发送到那个端口”,在udp的映射时间内,是能够被转发的。
    To:jcaomao
    对于处于两个不同的nat网关之后的主机,只能通过第三方一个处于公网的主机做代理进行转发,实现通信。
      

  5.   

    内网主机连接外网的机器,其发送数据的端口值一般经过NAT映射为另外一个值,一般会维持一段时间,IP也是外网地址,从外面看内网的机器只能见到其外网地址,所以你主动去连接内网的这台机器,NAT中没有此映射,它不认识,肯定就连接不通,如果内网主动连接外网机器,则可以根据连接的地址信息回送数据存了每个用户的公网ip与内网ip:可以将内网IP放在用户数据包中送出去,这个IP应该是为了判断用户的上网方式的,以作“它用”
      

  6.   

    因为收到数据的机子得到的是wan ip and public port,
    只有Nat 有映射才行,或通过第三方才行。
      

  7.   

    如果NAT后面的机器使用的UDP建立套接字于SERVER通信,那么另一方(SERVER或者其他机器)也可以用UDP协议发送数据到那个IP和PORT(在NAT后面的那台机器在网关上映射的IP,PORT),
    NAT后的那台机器就会收到,TCP不行!
      

  8.   

    我想知道双方都处于严格的NAT后的两台主机怎么才能实现点对点的通信??