本帖最后由 qldsrx 于 2009-09-10 14:28:26 编辑

解决方案 »

  1.   

    我认为QQ是强穿透 直接把NAT的防火墙干掉了
      

  2.   

    这分明是外行人说的话,NAT不是防火墙,两者不相干。NAT是负责将外网IP映射到内外IP的,这是路由的基本功能,但只有内部访问外部的时候会自动NAT映射,而外部主动访问内部的话不会,因为它不知道映射到那台内部主机,除非自己手动开端口。所以内网穿透防火墙或者穿透路由,其实是利用内网到外面产生的自动映射,让外部用这个通道访问进来。
      

  3.   

    仅对Symmetric NAPT,我想了一个方法,没条件试验,大家帮我试试:1,ClientA告诉Server自己的IP1和侦听端口;2,ClientB告诉Server自己的IP2和侦听端口;3,Server告知ClientB,ClientA的IP1(注意,仅仅需要IP,不需说侦听端口);4,ClientB向ClientA打洞,方法是开启一个端口M,对IP1的任意端口连发三个UDP包;6,ClientB在刚才的端口M侦听;7,ClientB生成一个GUID,告知Server,以便让Server明白,ClientB已经打过洞了,现在正在侦听;8,Server告诉ClientA,ClientB上线了,打过洞了,现在正在侦听,并且告诉ClientA,IP2和那个GUID;9,ClientA向IP2:端口N发送UDP包,N从0~65535增长,一共发3轮,即3*65536个包,包的格式为“Hello+端口N+GUID”;10,ClientB收到1个含GUID的包,断定是ClientA发来的,不是ClientX发来的,取出端口N,通过Server告知ClientA,(或许可以直接告知ClientA,这得看ClientA是什么情况)。我不经常上来,谁试成功了麻烦告诉我一下:[email protected],谢谢。
      

  4.   

    算了一下流量,有点不好意思。建议把包里的Hello去掉,也不要GUID了,流量上不合算。