我正在想象手机上的主流消息应用程序,但没有集中式服务器。
以某种方式匹配了通过移动网络连接到Internet的两部手机,并在它们之间创建了连接。然后电话A移出当前网络,然后更改其IP。电话B的IP地址仍然相同,因此电话A试图创建连接。最有可能的电话B位于NAT后面,因此如何创建此连接?电话A仅知道电话B的公共IP,并且"路由器"在NAT桌上没有电话A和B之间的连接。因此,我如何看待它,这是不可能的,但希望有一定的出路。
使用IPv6,如果可用,它不会遭受NAT的困扰。
对于IPv4,您要寻找的关键字是NAT遍历,为此存在许多方法。大多数人都需要某种形式的集合点,这可以是两者都知道的第三个对等点。但是其他方法(例如基于时间的协调)也存在。
NAT具有独立端点映射(也称为完整锥体),只要每个同伴通过常规ping保持映射打开,就根本不需要协调。这是UDP CGNAT的推荐实施。
一些CGNAT实现还支持PCP,您可以通过该实现来索取明确的端口映射。