请教关于UDP穿透NAT的问题~~~~
最近在研究p2p中udp穿透nat的问题~遇到了一些小麻烦,实在搞不定了,CSDN上面所有带有NAT的帖子都被翻了一遍,还是没找到解决方案,悬赏……
情况是这样:
服务端具有公网可路由的IP:ip-s,udp监听端口:port-s
两个客户端:
A:通过带有路由功能的ADSL猫上网,内部IP:192.168.1.2,外部IP:ip-a,其udp监听port-a
B:具体连接方式我也不是很清楚,内部IP:10.2.64.230,外部IP:ip-b,其udp监听port-b,不过b的本地监听端口和port-b映射出去的端口是一样的。
C:具有可路由IP。ip-c:port-c
具体流程为:
1、
A发送UDP包到服务端,此时服务端获得ip-a,port-a1
B发送UDP包到服务端,此时服务端获得ip-b,port-b
C发送UDP包到服务端,此时服务端获得ip-c,port-c
2、
在A处向ip-c:port-c处发送UDP包,C可获得此包,但是在c处发现,此连接的port-a和与server连接的port-a是不同的。经过多次观察和反复试验,发现A与不同的IP:Port之间的连接每次都映射出不同的端口。
3、
在B处向ip-c:port-c处发送UDP包,C可获得此包,其ip-b:port-b与server获得的相同。
4、
在B处再运行一个client,第一个client:ip-b1:port-b1,第二个:ip-b2:port-b2
此时,通过b1向ip-b2:port-b2发送udp包,再通过b2向ip-b1:port-b1发送udp包,从理论上来讲,应该是互相打了洞,但是没有成功,后面的udp包互相仍然无法收到。
5、A与B完全无法通信。
目前的情况基本就是这样。。。。不知道是什么原因,请教解决方案,分不够可以加。谢谢:)