P2P打洞中遇到的问题

场景:

设备A通过一台联通的路由器上网,设备A通过有线连接路由器

设备B是一台手机是移动2G

协助服务器是电信网络

附:设备A和设备B经过ip.cn网站测试发现各自的外网地址是:

设备A: 221.4.212.2,联通IP,相对固定

设备B: 117.136.33.128,移动IP,手机网络经常变动

 但是通过服务器打印通信地址发现:

设备A: 113.76.153.234,电信IP

设备B: 14.215.29.119,电信IP

 貌似设备A和设备B的通信地址会全部转换成电信的

遇到的问题:

设备A借助外网服务器获取到设备B的外网地址,设备B也借助外网服务器获取到设备A的外网地址,此时向对方设备的外网IP:Port发送数据包,双方都收不到对方的数据包,开始完全不知道哪里有问题


思路:

(1)开始观察服务器对设备A和设备B的地址打印,可以发现手机的端口经常会变动,怀疑手机是对成型NAT,但是协助服务器的NAT测试结果又显示不是的,这里思考了很久,不得其解(后来证明确实是对称型NAT,是NAT测试结果有问题)。

(2)此时有点怀疑移动2G是对称型NAT,但是NAT测试结果又与怀疑相悖,后来想到了一个解决思路,就是设备B(移动2G手机)对服务器的两个地址61.11.11.23:3478和61.11.11.23:3479通信,然后观察服务器的对端(设备B)地址打印,发现打印的结果是,设备B的通信地址类似:110.0.0.2:3456和110.0.0.2:5678,此结果正好对应的是对称型NAT的特征

(3)还是不清楚到底什么地方有问题,只能看代码,跟踪服务器的NAT测试代码,结合打印发现,和服务器的主地址通信,设备B是有收到回应的,但是,设备B跟服务器的副地址通信没有收到回应,问题找到。

(4)多次测试发现,原来是服务器的主网卡设置正常,副网卡没有设置网关,不能正常通信,被服务器坑了,所以一定要确保服务器的两个地址通信是OK的


结论:

服务器的两个地址不能正常通信的话,移动2G网络(设备B)的NAT类型测试失败,之前是测试成了端口限制型NAT,后来测试的是对称型NAT,正是因为设备A是端口限制型NAT,设备B(手机)是对称型NAT,所以对端发包打洞是不能通的。


下一步:

找个能打洞的场景,继续测试,看能否打洞成功


你可能感兴趣的:(P2P)