gpt4 book ai didi

c++ - P2P 连接的 NAT-Traversal 实现

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:39:37 25 4
gpt4 key购买 nike

我需要在 NAT 后面实现一个简单的 P2P 应用程序。它应该通过可靠且安全的连接(通过 TCP 的加密数据)发送数据。从理论背景来看,我知道在几个 RFC(5389、5769 和 5780)中描述了几种 NAT 遍历技术(例如 NAT 的 session 遍历实用程序)。

虽然在实践中我找不到实现这样一个系统所需的工具/库(最好是用 C++ 编程语言)。我已经通过盲目搜索找到了:ICE , TURN , libnice , libjingleSTUNTMAN

下图描述了它应该是什么样子。我有一个具有有效 IP 地址的 VPS,一个 NAT 后面的 PC 和另一个 NAT 后面的传感器。他们有私有(private)IP。我想让我的传感器连接到服务器,找到监视器并向它发送连接请求。建立连接后,不应使用中继服务器来引导数据流量。我希望我的传感器和监视器使用此路径进行通信:

Sensor <--> AP0 <--> R3 <--> {THE INTERNET} <--> R2 <--> Monitor

目前所有数据都是通过VPS传输:

Sensor <--> AP0 <--> R3 <--> {THE INTERNET} R1 <--> 
VPS <--> R1 <--> {THE INTERNET} <--> R2 <--> Monitor

Network

最佳答案

基本上,如果可以的话port forward ,那么这更像是一个基础设施问题而不是编程问题。您只需要将路由器配置为将流量从公共(public) IP/端口定向到私有(private) IP/端口,例如:

R2: Port 500 - TCP -> Laptop-PT - Port 500
R3: Ports 16000/16500 - TCP/UDP -> PDA-PT - Port 16000/16500

如果你想要花哨的并且你的路由器支持UPnP , 只需求助于实现 IGD protocol 的库(例如 MiniUPnP ),以使您的应用程序控制端口映射。 This article提供了一个很好的起点以及一些示例代码(尽管我真的会推荐一个强大的库)。

关于c++ - P2P 连接的 NAT-Traversal 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16341177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com