如果防火墙默认不接受传入连接,p2p网络如何工作?

时间:2013-02-17 22:25:46

标签: p2p firewall bittorrent

如果防火墙默认阻止所有传入连接,p2p技术如何工作?像种子一样,你如何连接到共享文件并从中获取信息的每个人?它是通过中继服务器还是什么?

4 个答案:

答案 0 :(得分:14)

我对BitTorrent的一切都不了解,因为我讲的是一般的P2P连接技术。通常,P2P网络中的客户端在公共信令服务器(例如,SIP,XMPP,跟踪服务器,网站)上会合以交换IP地址,其他元数据和消息以引导直接连接。然后使用以下任何一种技术进行通信会话:

  • 双方同时尝试相互连接 - 如果一方无法接受传入连接,但允许进行出站连接。防火墙场景就是这种情况。

  • 打孔(与上述配合使用)。继电器本身并不是必需的,但是当两个对等体都在难以遍历的网络设备后面时,确实有助于确保连接。有UDP Hole PunchingTCP Hole Punching技术。更多信息here

  • 当无法直接连接时,可以将包括TURN servers在内的中继部署到P2P网络中。所有您喜欢的视频通话应用程序都会针对这些情况部署中继,但要尽最大努力让同行直接连接以避免中继费用。

Bing有以下主题:STUN,TURN,ICE(交互式连接建立),libjingle,pjnath,libnice。

答案 1 :(得分:5)

如果防火墙(而不是NAT)打算阻止传入连接(我相信它们通常会这样做),那么你无能为力。你可以试试你喜欢的所有打孔。这是通过实现对称NAT来实现的,即每个针孔专门针对ip,端口四倍(源,目标端口和IP)打开。

BitTorrent不太可能因为你无法接收传入连接而停止工作,它只是表现稍差。有可能群中至少有一些人可以接收连接,你只需要连接它们。

This是一个古老的解释,说明如何防火墙主要意味着更糟糕的表现。

修改

“为什么”的简短回答是大多数同行不在防火墙之后(只是NAT)。

答案 2 :(得分:1)

后人:

简短的回答是,它是通过https://en.wikipedia.org/wiki/Hole_punching_(networking)

完成的

当您从计算机(很可能位于路由器和NAT后面)连接到google.com时,您的计算机IP地址和NAT的端口号将发送到Google服务器。 Google使用这些连接信息将搜索结果发送到您的计算机。

你可以认为google的服务器类似于p2p网络中的一个节点。即使您的路由器不接受传入连接,Google也能够从他们的服务器“接触”您。这是因为他们没有启动连接(他们不知道你的ip:NATedport组合来启动连接)。但是你的机器可以进行出站连接并将你的ip:NATedport组合发送/发布到外部世界。

因此p2p中的两个节点都将他们的ip:NATedport组合发送到第三方站点并交换此信息并开始连接(无论谁先获得信息)。

答案 3 :(得分:0)

设左 F =#防火节点,
O =打开传入端口的#节点,
T = F + O =节点总数,
P = O / T =具有开放端口的总节点数的比例,
每个防火墙节点都可以拥有 C f = max#connections,并且
每个开放节点可以有 C o = max#connections。

然后,
C f = O ∵防火墙节点只能连接到开放节点
C o = T - 1,∵开放节点可以连接到所有其他节点(并且所有防火墙节点首次连接后他们)
所以
C o / C f =( T - 1)/ O = 1 / P - 1 / O

如果 T 很大,则 C o / C f ≈1/ P

因此,例如,假设有一半节点具有打开的传入端口: P =½。然后,
C o / C f ≈2,
这意味着开放节点的连接数约为防火墙节点的2倍(意味着它们负担过重,但也意味着它们具有更高的可见性)。

因此,特定节点和整个网络的 P = 1更好;所有节点都同样可见并且负担同等。

如果 P = 0,网络根本不起作用∵没有人能够发起与其他同伴的连接。