Прямое соединение клиент-сервер между двумя устройствами с CG-NAT - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу подключить два устройства, которые находятся в разных местах, но подключены к Интернету, компьютер под управлением Windows 10 и смартфон Android.Приложение представляет собой простой UDP-сокет для передачи данных между ними, но у меня есть разные сценарии.

1-й сценарий.ПК с общедоступным IP-адресом и смартфоном за 3G / 4G CG-NAT) ПК открывает разъем UDP и смартфон легко и быстро подключается к общедоступному IP-адресу.

2-й сценарий.ПК за NAT с общедоступным IP-адресом и смартфон за 3G / 4G NAT)

  • Вариант A) ПК настраивает переадресацию портов на NAT на свой внутренний IP, а затем на смартфонподключается к этому общедоступному IP.Легко, но не быстро, потому что клиент должен настроить NAT.

  • Вариант B) Используйте UDP HOUN PUNCHING, чтобы открыть дыру в NAT, а затем клиент подключается к нему.

3-й сценарий.ПК и смартфон оба поддерживают CG-NAT. Вот моя проблема: ПК иногда находится за CG-NAT, возможно, из-за того, что провайдер использует эту технику, или может быть подключен к Интернету с помощью точки доступа Wi-Fi с другого смартфона.Насколько я знаю, я не могу настроить CG-NAT с любым протоколом (UPnP, PCP и т. Д.), Поэтому я не могу выполнять переадресацию портов.UDP Hole Punching не является опцией из-за «рандомизации портов», поэтому интернет-провайдер меняет мой исходный порт, когда выходит за пределы CG-NAT, и это меняется для каждого соединения.

Я разрабатываю проект, который полагаетсяна этом прямое соединение между ПК и смартфоном без технических деталей и работа всегда, когда у обоих клиентов есть интернет, не говоря уже о брандмауэре, за NAT и т. д. Я думал об использовании 3-го облачного сервера с публичным IP для их соединения, НО простодля стабилизации соединения, а не для пересылки всего трафика, потому что это добавляет задержки и затраты на трафик для моего проекта, которые недоступны.Итак ... есть ли способ дать решение моей проблемы?

Спасибо!

...