Обмен сообщениями P2P через Интернет

Я представляю основные приложения для обмена сообщениями на мобильных телефонах, но без централизованных серверов.

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
579
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте IPv6, когда он доступен, он не страдает от NAT.

Для IPv4 искомое ключевое слово — обход NAT, для которого существует множество подходов. Большинству требуется некоторая форма точки встречи, которая может быть третьим узлом, о котором оба знают. Но существуют и другие подходы, такие как координация на основе времени.

NAT с сопоставления, независимые от конечной точки (также известный как полный конус NAT) вообще не требует координации, пока каждый одноранговый узел поддерживает сопоставление открытым с помощью регулярных эхо-запросов. Это рекомендуемая реализация для UDP CGNAT.

Некоторые реализации CGNAT также поддерживают PCP, с помощью которого вы можете запросить явное сопоставление портов.

Спасибо за ответ, и извините за поздний ответ. IPv6 лично кажется невозможным, поскольку мобильные операторы здесь еще не реализовали их. Я думаю, что можно с уверенностью предположить, что MO не включали какую-либо конфигурацию, которая облегчила бы мою работу, поэтому они тоже вне окна. Подход Rendezvous напомнил мне о торрент-трекерах, которые я изучу, или я перестану преследовать цель P2P и начну сначала с программы C/S.

Emre İyican 19.03.2019 18:14

Другие вопросы по теме