在多种设备类型的防火墙和NAT后面进行p2p传输的方法

时间:2014-03-18 21:27:12

标签: sockets p2p ipv6 libjingle stun

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

即使用户位于不同的防火墙/ NAT以及移动或桌面设备上, 没有 要求用户手动打开端口,此系统也需要工作。

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

如果我正确地接近这一点,我会感到困惑。所有这些选项都能独立解决这个问题吗?或者我接近这个错误?即使在IPv4路由器后面,直接的IPv6连接也会直接连接吗?

1 个答案:

答案 0 :(得分:1)

无法保证P2P连接始终成功。它可能由于以下原因而失败: 1)两个对等体落后于对称NAT。 (尽管如果一个对等体落后于对称nat,则Teredo可以工作。)2)UDP被阻止 3)如果对等体落后于代理。 4)双NAT场景。 有三种类型的ipv6地址 - 链接本地,私人地址和全球。如果两个对等体具有全局地址,则可以通过互联网直接连接。全局地址前缀是(200:....)。如果你的构建P2P系统,你应该有回退机制,在这种情况下,中央服务器应该在对等体之间中继数据。通过这种方式,您可以使应用程序在大多数同行使用p2p时更快地建立连接。