NAT通过http连接移动时的遍历

时间:2012-06-01 13:19:43

标签: http mobile p2p nat ipv4

有人知道答案吗?

我正在阅读Practical JXTA II(也在http://www.scribd.com/doc/47538921/Practical-JXTA-II)。我对第92页关于与NAT后面的对等方建立通信的第2段的说法感到困惑:“这样的对等体仍然无法访问......直到......或者b)无法访问的对等体自发建立与远程对等体的连接。”

这似乎意味着IPv4本地地址到公共地址的NAT转换始终是相同的。如果路由器将一大组地址映射到一组较小的公共地址,结果是否会发生变化?收到HTTP响应后,会话将被终止,其他人可以使用该公共IP,对吧?一旦HTTP会话结束,路由器将不再记录使用的映射。

我正在尝试实现Web服务的一个想法,其中应用程序的一个方面是P2P(我需要两个节点有时充当客户端和服务器)。中央服务器可以有一个DNS注册地址,但各种潜在的移动节点可能在NAT后面等等。看完之后我想我会好的,如果我有NAT后面的节点在启动时建立连接,告诉中央DNS注册节点他们的公共地址,但现在我认为地址可能会改变。

1 个答案:

答案 0 :(得分:0)

她是我对Jérôme意味着什么的理解。

假设对等体A是WAN可见的,而对等体B正在攻击防火墙。

时,对等方A可以向对等方B发送数据
  • 对等A和对等B都建立到中继服务器的出站连接。对等体A在出站请求中向中继发送数据,该中继在同步响应(对等体B与中继的连接)上转发给对等体。

  • 对等体B建立与对等体A的连接,对等体A在同步响应上将数据发送回对等体B. “反向调用”机制。

对于JXTA,对等方向网络发布本地地址和可选的WAN地址(地址是耦合主机+端口)。如果要使用NAT建立与该对等体的直接连接,则每个对等体只能有一个WAN地址。

拥有中央服务器在P2P网络中是一个坏主意:你创建一个单点故障,这正是P2P网络擅长避免的。

然而,正如您所暗示的,仍然需要维护“地址/对等位置”的注册表。但是必须分发此注册表。这需要一本书,但这里有两种方法:

  • 节点上的分布式哈希表(DHT):每个节点都拥有并共享部分注册表的副本。 JXTA有这样的机制,但在维基百科上检查Kademlia是否有一个非常成功的算法。

  • 全球索引节点方法(我相信类似Skype):使用DHT或其他复制算法保存注册表的有限数量的专用对等体/节点。对等体使用防火墙友好协议(HTTP)连接到GIN以获取地址,并且GIN使用快速套接字到套接字相互通信(检查Hazelcast以快速实现GIN)。