Мне нужно реализовать простое приложение P2P за NAT. Он должен отправлять данные по надежному и безопасному соединению (зашифрованные данные через TCP). С теоретической точки зрения, я знаю, что существует несколько методов NAT-Traversal (например, Session Traversal Utilities для NAT), описанных в нескольких RFC (5389, 5769 и 5780).Реализация NAT-Traversal для подключения P2P
Хотя на практике я не могу найти необходимые инструменты/библиотеки для реализации такой системы (желательно на языке программирования на С ++). То, что я уже нашел прибегая к помощи вокруг вслепую: ICE, TURN, libnice, libjingle и STUNTMAN
Ниже изображения описывает то, что он должен выглядеть. У меня есть VPS с действующим IP-адресом, ПК за NAT и датчик за другим NAT. У них есть частные IP-адреса. Я хочу, чтобы мой датчик подключался к серверу, находил монитор и отправлял ему запрос на соединение. После установления соединения сервер ретрансляции не должен использоваться для прямого трафика данных. Я хочу, чтобы мой датчик и монитор, чтобы использовать этот путь для общения:
Sensor <--> AP0 <--> R3 <--> {THE INTERNET} <--> R2 <--> Monitor
В настоящее время все данные передаются через VPS:
Sensor <--> AP0 <--> R3 <--> {THE INTERNET} R1 <-->
VPS <--> R1 <--> {THE INTERNET} <--> R2 <--> Monitor
Я знаю, что я не должен даже спрашивать, но перенаправление портов или поддержка UPnP не могут быть и речи? –
@ AnthonyAccioly Нет, я просто забыл упомянуть. Я совершенно смущен. Невозможно повернуть голову и найти начальную точку ... –