我正在构想手机上的主流消息传递应用程序,但没有集中式服务器。
通过移动网络连接到互联网的两部电话以某种方式匹配并在它们之间建立连接。然后,电话A移出其当前网络,并更改其IP。电话B的IP地址仍然相同,因此电话A尝试创建连接。电话B最有可能在NAT之后,那么如何创建此连接?电话A仅知道电话B的公共IP,并且“路由器”在其NAT表中没有电话A和B之间的连接。所以我怎么看,这是不可能的,但是希望有一些出路。
答案 0 :(得分:1)
使用IPv6(如果可用),它不会受到NAT的影响。
对于IPv4,您正在寻找的关键字是NAT traversal,对此存在许多方法。大多数都需要某种形式的集合点,这可以是双方都知道的第三对等点。但是还存在其他方法,例如基于时间的协调。
带有endpoint independent mappings(也称为full cone NAT)的NAT根本不需要任何协调,只要每个对等点通过常规ping保持映射开放。这是推荐的UDP CGNAT实现。
某些CGNAT实现也支持PCP,通过它您可以请求显式端口映射。