我正在构建一个依赖中央服务器的系统,该系统将第一个用户(在移动或桌面应用程序上)的IP地址和端口发送给第二个用户(在移动或桌面应用程序上)。第二个用户使用中央服务器发送的IP地址和端口与第一个用户建立P2P加密连接,以直接发送大文件(理想情况下,实际文件不会通过中央服务器)。

即使用户位于不同的防火墙/NAT之后以及在移动或台式设备上,此系统也需要正常工作,而不是要求用户手动打开端口。

我一直在研究NAT穿越协议(protocol)(Teredo IPv6),libjingle(Google的开源套件),STUN,直接套接字连接以及用户之间的直接VPN。

如果我正确地解决了这个问题,我会感到困惑。所有这些选项都可以独立解决此问题吗?还是我要解决这个错误?即使在IPv4路由器后面,直接的IPv6连接也能直通吗?

最佳答案

不能保证P2P连接总是成功。它可能由于以下原因而失败:
1)两个对等方位于对称NAT之后。 (尽管如果一个对等节点位于对称nat之后,Teredo可以工作。)2)UDP被阻止
3)如果对等方位于代理之后。
4)双NAT方案。
ipv6地址有三种类型-链接本地,专用地址和全局。如果两个对等方具有全局地址,则可以直接通过Internet连接。全局地址前缀为(200:....)。如果您正在构建P2P系统,则应具有备用机制,在这种情况下,中央服务器应在对等方之间中继数据。这样,您可以同时使应用程序可靠,从而使使用p2p的大多数对等节点的连接速度更快。

关于sockets - 在多种设备类型的防火墙和NAT之后进行p2p传输的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22491423/

10-13 04:06