6

我做了一些阅读,虽然我是 iPhone 网络的新手,但我想知道 TCP 打孔是否可以通过 NAT 连接两个 iPhone。我还阅读了一些关于 uPnP 和发夹的有用内容,但我对这些内容并不熟悉,所以如果有人对这是否可能有任何想法。

我的目标是能够在大范围内连接多部 iPhone(因此切换到某种类型的 GPSR 可能会更好),但现在我只使用两部 iPhone,3G NAT Traversal 似乎是最简单和最可靠的理论。

4

2 回答 2

10

nat traversal 是通用术语,用于在会合服务器的帮助下直接连接两个节点。节点可以是计算机、智能手机或任何其他设备。就 3g 而言,它只是传输数据的媒介之一。

如果您在同一 NAT 下的对等设备使用公共 IP 相互连接,则发夹会出现,因为某些路由器不支持发夹,如 cisco 路由器等。如果您使用私有 IP 而不是公共 IP,则可以克服此问题。我不能就你的情况说一下关于发夹的任何事情,因为我没有关于你的网络的技术细节。

用您正在使用的 3g 之类的技术细节更新您的问题。那么只有我可以说关于 3g 上的头发固定。

我已经在 2g 上实现了 udp/tcp 打孔。我使用了三台 PC(一台集合服务器和两个节点)来执行此操作。

  1. 开发一个可以在一台 pc 上运行的会合服务器程序。该程序应该能够交换两个 iphone 设备的公共 ip。

  2. 开发安装在 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

于 2011-06-22T06:06:24.370 回答
0

蜂窝网络使用大规模 NAT。只有三种方法可以绕过它。

  1. 不要使用蜂窝网络或使用连接到蜂窝网络的家庭/Wifi。

  2. 获取 TURN 服务器。

  3. 使用多 UDP 打孔(高级技术)。对于多 UDP 打孔,请尝试: https ://drive.google.com/file/d/0B1IimJ20gG0SY2NvaE4wRVVMbG8/view?usp=sharing

于 2015-08-14T17:16:22.693 回答