我需要在 NAT 后面实现一个简单的 P2P 应用程序。它应该通过可靠和安全的连接(通过 TCP 加密数据)发送数据。从理论背景来看,我知道在几个 RFC(5389、5769 和 5780)中描述了几种 NAT 遍历技术(例如 NAT 的会话遍历实用程序)。
虽然在实践中我找不到实现这样一个系统所需的工具/库(最好是用 C++ 编程语言)。我已经通过盲目搜索找到了:ICE、 TURN、 libnice、 libjingle和STUNTMAN
下图描述了它应该是什么样子。我有一个具有有效 IP 地址的 VPS、一个位于 NAT 后面的 PC 和一个位于另一个 NAT 后面的传感器。他们有私有IP。我希望我的传感器连接到服务器,找到监视器并向它发送连接请求。连接建立后,中继服务器不应用于引导数据流量。我希望我的传感器和监视器使用此路径进行通信:
Sensor <--> AP0 <--> R3 <--> {THE INTERNET} <--> R2 <--> Monitor
目前所有数据都是通过VPS传输的:
Sensor <--> AP0 <--> R3 <--> {THE INTERNET} R1 <-->
VPS <--> R1 <--> {THE INTERNET} <--> R2 <--> Monitor
</p>