我想开发一个P2P游戏应用程序。实现NAT遍历和Peer发现的最快,最有效的方法是什么。我读过有关STUN和TURN服务器的信息。但是什么是可用的开源部件以及如何使用它们? 1.那些STUN服务器是否可以在3G网络上运行? 2. UDP HOLE PUNCHING是否适用于3G网络?
答案 0 :(得分:0)
如果您有视频游戏,您可能希望拥有一个包含所有游戏数据的中央服务器,并允许用户成为客户端。你知道,像Puzzles and Dragons,你有一个用户名和密码,并登录到服务器。
Google" Stun Client"和" ICE协议"。有很多开源实现
STUN在移动网络上失败,因为移动网络具有对称的大规模NAT。遍历那种nat并不适用于STUN(见下面的原因)
为何无法绕过移动宽带NAT?
归结为统计数据。为了建立连接,您必须将数据包发送到它们所在的端口,并且必须将数据包发送到您所在的端口。如果您发送错误的端口号或发送错误的端口号,您将错过并且未建立任何连接。如果你们两个同时绑定到一个端口并发送一个指向另一个IP地址的数据包,那么你在65535中的一个(65535是ip地址上的端口数)有机会将数据包发送到他们的端口,它们有大约1到65535的机会将数据包发送到您的端口。因此建立连接的机会是(1/65535)*(1/65535)或(1/65535 ^ 2)。
您无法知道任何后续连接的端口号,因为对于每个新的出站连接,路由器会在1024到65535之间的间隔内随机为您提供一个新的端口号。所以,如果你问服务器你的IP是什么和端口号是,它可以告诉你正确的IP(你的IP地址不经常改变,除非你关闭手机或类似的东西),但端口号将改变。如果您尝试猜测端口号有((65535-1024-1)/(65535-1024)),或者您认为错误的99.998%更改,假设可供选择的端口号的数量是( 65535-1024)。
因此,除非端口号是可预测的(在许多4G网络中它们不是这样),否则你没有机会 - 没有机会。
你最好的选择是使用stun而不支持邪恶的路由器。