Bittorrent 端口,我为什么需要它们?

key*_*rai 6 bittorrent

我正在考虑在使用 Bittorrent 的分支机构之间进行文件分发。我了解 Bittorrent 客户端需要将 6881-6999 范围内的端口转发到 Internet 以加快传输速度。

我不明白的是:这如何使事情变得更快?我可以理解如果未能在客户之间提供适当的沟通方式会阻止他们相互交谈。但无论我看哪里,我都只看到“只需转发端口,传输速度就会加快”的建议。

对不起,如果这似乎偏离主题,但它让我觉得与网络有关。

dee*_*392 6

P2P 协议的常见示例是 Bittorrent。在该协议中,通信通常由跟踪器管理。这意味着对于数据传输,至少需要三个节点:

+-----+               +---------+      +------+      
|     |  1.1.1.1:500  |         |      |      |      
| You |<------------->| Tracker |<---->| Peer |
|     |               |         |      |      |      
+-----+               +---------+      +------+      
Run Code Online (Sandbox Code Playgroud)

您的连接首先告诉跟踪器您的 IP 地址和您可以连接的端口。然后跟踪器将其存储在状态表中:

+--------------+------------+
| Nodes        | Completion |
| 1.1.1.1:500  | 0%         |
| 2.2.2.2:1000 | 100%       |
+--------------+------------|
Run Code Online (Sandbox Code Playgroud)

Peer 已经确定他可以在端口 1000 上连接。我们将回到这个问题。

地址1.1.1.12.2.2.2代表NAT设备的外部地址。这些设备在当今的互联网中无处不在,因为几乎每个用户都安装了一个路由器来提供对多台计算机、手机、游戏机等的访问。

这意味着这些地址后面有更多地址,每个设备一个。

但是:由于一个地址只能连接到范围内的一个端口,1-65535您的路由器如何知道是否在运行 Torrent 客户端的情况下将端口 500 的请求连接到您的计算机?您指示它,为它提供一个叫做端口转发说规则“接收端口500的任何连接,我要被转发到我” -哪里me是你的内部地址(之一10.x.x.x192.168.x.x172.16.x.x)。

由于您刚刚通过向跟踪器宣布加入“群”,跟踪器将向您发送上述状态表。您知道您刚刚加入并且完成度为 0%,但Peer100% 完成度意味着您知道如果您连接到他,您将能够开始获取数据。

如果Peer没有“转发”他的端口(1000,正如他在宣布时向跟踪器报告的那样),但是您将无法连接并开始接收数据。这显然是不可取的,因为现在您无法完成种子下载,因为没有人可以共享它。

如果Peer自从你连接后还没有宣布,他还不知道你的存在。但是,如果您正确设置了端口转发,当他确实宣布并在其中获取新状态表时,他可以启动与您的连接。这将起作用,因为您的端口已转发。

如果双方的你没有端口转发启用,那么尽管你都宣布在跟踪,因为这些端口,你告诉了跟踪有关实际上并没有达到回你的机器,所有可能的数据连接是由你的路由器封锁/NAT 设备。

简而言之:端口转发通过使连接更容易建立来帮助P2P 数据交换的健康 - 除非每个成员都启用某种端口转发,否则不可能以 P2P 方式交换数据。


Cra*_*893 0

我可能是错的,但种子下载所需的端口更多地用于共享而不是下载端。