0

有人会知道这个问题的答案吗?

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

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

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

4

1 回答 1

0

她是我对 Jérôme 意思的理解。

假设对等点 A 是 WAN 可见的,对等点 B 是防火墙。对等体 A 可以向对等体 B 发送数据,当

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

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

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

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

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

  • 节点上的分布式哈希表 (DHT):每个节点都持有并共享部分注册表的副本。JXTA 有这样的机制,但请查看 Wikipedia 上的 Kademlia 以获得非常成功的算法。

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

于 2012-06-04T15:33:00.900 回答