Я представляю основные приложения для обмена сообщениями на мобильных телефонах, но без централизованных серверов.
Каким-то образом два телефона, подключенные к Интернету через мобильную сеть, сопоставляются и создают соединение между ними. Затем телефон А выходит из своей текущей сети и меняет свой IP-адрес. IP-адрес телефона B остается прежним, поэтому телефон A пытается установить соединение. Скорее всего, телефон B находится за NAT, так как же создается это соединение? Телефон A знает только общедоступный IP-адрес телефона B, а «маршрутизатор» не имеет соединения между телефоном A и B в своей таблице NAT. Так что, как я это вижу, это невозможно, но есть надежда на какой-то выход.





Используйте IPv6, когда он доступен, он не страдает от NAT.
Для IPv4 искомое ключевое слово — обход NAT, для которого существует множество подходов. Большинству требуется некоторая форма точки встречи, которая может быть третьим узлом, о котором оба знают. Но существуют и другие подходы, такие как координация на основе времени.
NAT с сопоставления, независимые от конечной точки (также известный как полный конус NAT) вообще не требует координации, пока каждый одноранговый узел поддерживает сопоставление открытым с помощью регулярных эхо-запросов. Это рекомендуемая реализация для UDP CGNAT.
Некоторые реализации CGNAT также поддерживают PCP, с помощью которого вы можете запросить явное сопоставление портов.
Спасибо за ответ, и извините за поздний ответ. IPv6 лично кажется невозможным, поскольку мобильные операторы здесь еще не реализовали их. Я думаю, что можно с уверенностью предположить, что MO не включали какую-либо конфигурацию, которая облегчила бы мою работу, поэтому они тоже вне окна. Подход Rendezvous напомнил мне о торрент-трекерах, которые я изучу, или я перестану преследовать цель P2P и начну сначала с программы C/S.