互联网上的 P2P 消息传递

P2P messaging over internet

我在想象手机上没有集中式服务器的主流消息应用程序。

通过移动网络连接到互联网的两部手机以某种方式匹配并在它们之间建立了连接。然后 Phone A 移出当前网络并更改其 IP。 Phone B 的 IP 地址仍然相同,因此 Phone A 尝试创建连接。很可能 Phone B 在 NAT 后面,那么这个连接是如何创建的? Phone A 只知道 Phone B 的 public IP 而 "router" 在它的 NAT Phone A 和 B 之间没有连接 table .所以我怎么看,不可能,但希望有出路。

尽可能使用 IPv6,它不受 NAT 的影响。

对于 IPv4,您正在寻找的关键字是 NAT traversal,存在许多方法。大多数需要某种形式的会合点,它可以是双方都知道的第三对等点。但也存在其他方法,例如基于时间的协调。

具有 endpoint independent mappings (also known as full cone NAT) 的 NAT 根本不需要协调,只要每个对等方通过常规 ping 保持映射打开即可。这是 UDP CGNAT 的推荐实现。

一些 CGNAT 实现还支持 PCP,您可以通过它请求显式端口映射。