我正在考虑使用 Bittorrent 在分支机构之间分发文件。我了解到 Bittorrent 客户端需要将 6881-6999 范围内的端口转发到互联网以加快传输速度。
我不明白的是:如何这会让事情变得更快吗?如果未能提供客户端之间的正确通信方式会阻止他们相互交谈,我可以理解。但我到处都只看到这样的建议:“只需转发端口,传输速度就会加快。”
抱歉,如果这看起来偏离主题,但我觉得这与网络有关。
答案1
P2P 协议的常见示例是 Bittorrent。在此协议中,通信通常由跟踪器管理。这意味着对于数据传输,至少需要三个节点:
+-----+ +---------+ +------+
| | 1.1.1.1:500 | | | |
| You |<------------->| Tracker |<---->| Peer |
| | | | | |
+-----+ +---------+ +------+
连接从告诉跟踪器您的 IP 地址和可连接的端口开始。然后跟踪器将其存储在状态表中:
+--------------+------------+
| Nodes | Completion |
| 1.1.1.1:500 | 0% |
| 2.2.2.2:1000 | 100% |
+--------------+------------|
Peer
已经确认他可以在端口 1000 上连接。我们稍后会讨论这个问题。
地址1.1.1.1
并2.2.2.2
代表外部的NAT 设备的地址。这些设备在当今的互联网中无处不在,因为几乎每个用户都安装了路由器,以便访问多台计算机、手机、游戏机等。
这意味着这些地址背后还有更多的地址,每个设备都有一个地址。
但是:由于一个地址只能连接到 范围内的端口1-65535
,您的路由器如何知道是否将端口 500 的请求连接到正在运行 torrent 客户端的计算机?您可以通过向它提供一条称为端口转发的规则来指示它,说“我希望将您在端口 500 上收到的任何连接转发给我” - 您的内部地址在哪里( 、或me
之一)。10.x.x.x
192.168.x.x
172.16.x.x
由于您刚刚通过向跟踪器宣布加入“群组”,因此跟踪器会向您发送上述状态表。您知道自己刚刚加入,并且完成度为 0%,但Peer
完成度为 100%,这意味着您知道如果您连接到他,您将能够开始获取数据。
但是,如果Peer
尚未“转发”其端口(1000,正如他在宣布时向跟踪器报告的那样),您将无法连接并开始接收数据。这显然是不可取的,因为现在您无法完成 torrent,因为没有人可以共享它。
如果Peer
自您连接以来没有宣布,则他还不知道您的存在。但是,如果您正确设置了端口转发,则当他宣布并获取包含您的新状态表时,他可以发起与您的连接。这将有效,因为您的端口已转发。
如果两个都如果您没有启用端口转发,那么尽管您已经向跟踪器通告,但是由于您告知跟踪器的端口实际上并没有到达您的机器,所以所有可能的数据连接都会被您的路由器/NAT 设备阻止。
简而言之:端口转发帮助通过使连接建立起来变得更加容易,可以改善 P2P 数据交换的健康状况 - 除非每个成员都启用某种端口转发,否则不可能以 P2P 方式交换数据。
答案2
这个问题中有很多糟糕的数据。Bittorrent 采用“针锋相对”方案,即上传的客户端优先下载。要上传数据,其他客户端需要能够连接到您,如果您使用 NAT 或防火墙关闭,则无法实现这一点。因此,您打开端口以允许其他客户端连接,然后上传一些数据,并获得更高优先级的下载。
如果另一个客户端没有防火墙/NAT,那么其中就会有一些NAT规避内容,但至少一方必须有开放的端口。
如果这都是您的私人网络,您可以欺骗客户端不要进行优先发送,但这可能比仅仅打开端口要费力得多。
另外,您不需要使用这些端口。任何端口范围都可以工作,只要您的客户端知道哪些端口对它开放,以便它可以通知跟踪器。
答案3
我可能错了,但是 Bit Torrent 所需的端口更多是用于共享而不是下载。
答案4
我相信它允许跟踪器和客户端更准确、更快地轮询 Bittorrent 服务器(您的机器),因为它不依赖 NAT 转换来到达需要去的地方。