我做了一些阅读,虽然我是 iPhone 网络的新手,但我想知道 TCP 打孔是否可以通过 NAT 连接两个 iPhone。我还阅读了一些关于 uPnP 和发夹的有用内容,但我对这些内容并不熟悉,所以如果有人对这是否可能有任何想法。
我的目标是能够在大范围内连接多部 iPhone(因此切换到某种类型的 GPSR 可能会更好),但现在我只使用两部 iPhone,3G NAT Traversal 似乎是最简单和最可靠的理论。
我做了一些阅读,虽然我是 iPhone 网络的新手,但我想知道 TCP 打孔是否可以通过 NAT 连接两个 iPhone。我还阅读了一些关于 uPnP 和发夹的有用内容,但我对这些内容并不熟悉,所以如果有人对这是否可能有任何想法。
我的目标是能够在大范围内连接多部 iPhone(因此切换到某种类型的 GPSR 可能会更好),但现在我只使用两部 iPhone,3G NAT Traversal 似乎是最简单和最可靠的理论。
nat traversal 是通用术语,用于在会合服务器的帮助下直接连接两个节点。节点可以是计算机、智能手机或任何其他设备。就 3g 而言,它只是传输数据的媒介之一。
如果您在同一 NAT 下的对等设备使用公共 IP 相互连接,则发夹会出现,因为某些路由器不支持发夹,如 cisco 路由器等。如果您使用私有 IP 而不是公共 IP,则可以克服此问题。我不能就你的情况说一下关于发夹的任何事情,因为我没有关于你的网络的技术细节。
用您正在使用的 3g 之类的技术细节更新您的问题。那么只有我可以说关于 3g 上的头发固定。
我已经在 2g 上实现了 udp/tcp 打孔。我使用了三台 PC(一台集合服务器和两个节点)来执行此操作。
开发一个可以在一台 pc 上运行的会合服务器程序。该程序应该能够交换两个 iphone 设备的公共 ip。
开发安装在 iphone 中的客户端程序。将 iphone 连接到服务器,这会将 iphone 的公共 ip 暴露给服务器。对第二个 iphone 重复相同的过程。现在服务器将交换公共 ip/port 到两个 iphone。现在每个人同时开始同时向对方发送数据包,这将在 NAT 中打孔。
有关打孔的详细信息,请访问 http://www.brynosaurus.com/pub/net/p2pnat/
最好尝试使用易于开发的 UDP 打孔。TCP 打孔有点棘手。一旦实现了 UDP 打孔,就很容易实现 TCP 打孔。
了解 STUN、ICE、NAT 类型、Nat Maping
https://www.rfc-editor.org/rfc/rfc5389
http://en.wikipedia.org/wiki/Network_address_translation
蜂窝网络使用大规模 NAT。只有三种方法可以绕过它。
不要使用蜂窝网络或使用连接到蜂窝网络的家庭/Wifi。
获取 TURN 服务器。
使用多 UDP 打孔(高级技术)。对于多 UDP 打孔,请尝试: https ://drive.google.com/file/d/0B1IimJ20gG0SY2NvaE4wRVVMbG8/view?usp=sharing