我正在考虑使用BitTorrent的分支机构之间的文件分发。 据我所知,BitTorrent客户端需要6881-6999范围内的端口才能被转发到互联网,以加快传输速度。
我不明白的是:这是如何使事情变得更快? 我可以理解,如果客户之间未能提供适当的沟通方式,就会阻止他们相互交stream。 但是在我看来,我只是看到了build议“只要转发端口,转移速度就会加快”。
对不起,如果这似乎脱离主题,但它打击我作为networking相关。
P2P协议的常见例子是Bittorrent。 在这个协议中,通信通常由跟踪器pipe理。 这意味着对于数据传输,至less需要三个节点:
+-----+ +---------+ +------+ | | 1.1.1.1:500 | | | | | You |<------------->| Tracker |<---->| Peer | | | | | | | +-----+ +---------+ +------+
您的连接从告诉跟踪您的IP地址和您可以连接的端口开始。 跟踪器然后将其存储在状态表中:
+--------------+------------+ | Nodes | Completion | | 1.1.1.1:500 | 0% | | 2.2.2.2:1000 | 100% | +--------------+------------|
Peer已经build立起他可以连接到1000端口。我们将回到这个。
地址1.1.1.1和2.2.2.2表示NAT设备的外部地址。 这些设备在当今的互联网上无处不在,因为几乎每个用户都安装了路由器,以提供对多台电脑,手机,游戏机等的访问。
这意味着在这些地址的后面有更多的地址,每个设备都有一个地址。
但是,由于一个地址只能连接到1-65535范围内的一个端口,您的路由器如何知道在您的torrent客户端正在运行的情况下是否将端口500的请求连接到您的计算机? 你指示它,通过提供一个叫做端口转发的规则来说“你在端口500上接收到的任何连接,我想被转发给我” – 在这里me是你的内部地址( 10.xxx , 192.168.xx或172.16.xx )。
正如你刚刚通过跟踪器join“swarm”一样,跟踪器会向你发送上述状态表。 你知道你刚刚join并完成了0%,但Peer已经完成了100%,这意味着如果你连接到他,你将能够开始获取数据。
如果Peer没有“转发”他的端口(1000,当他宣布时向跟踪器报告),但是您将无法连接并开始接收数据。 这显然是不可取的,因为现在你无法完成洪stream,因为没有人可以分享它。
如果Peer自你连线之后还没有宣布,他还不知道你还存在。 但是,如果您已经正确设置端口转发,那么当他宣布并获得新的状态表时,他可以启动与您的连接。 这将工作,因为你的端口被转发。
如果你们两个都没有启用端口转发function,那么尽pipe你们都告知跟踪器,因为你告诉跟踪器的端口实际上并没有回到你的机器上,所有可能的数据连接都被你的路由器阻塞/ NAT设备。
简而言之,端口转发通过使得build立连接更容易,从而有助于 P2P数据交换的健康 – 除非每个成员都能够实现某种端口转发,否则不可能以P2P方式交换数据。
这个问题有很多不好的数据。 Bittorrent与“针锋相对”scheme一起工作,其中正在上传的客户端获得下载的偏好。 要上传数据,其他客户端需要能够连接到您,这是不会发生,如果你NAT或防火墙closures。 因此,您打开端口以允许其他客户端连接,您上传一些数据,并获得更高的优先级下载。
如果另一个客户端没有防火墙/ NAT,那么在那里有一些NAT规避的东西,但至less有一方必须有开放的端口。
如果这是你的私人networking,你可以欺骗客户端不要做这种优惠的发送,但这可能比开放端口更多的工作。
这是这个行为的一个简单的参考。
另外,您不需要使用这些端口。 任何端口范围将工作,只要您的客户知道什么是开放的,以便它可以通知跟踪。
我可能是错的,但比特下载方面更多地使用比特洪stream需要的端口共享。
这是为了连接,以便其他BitTorrent客户端可以“看到”你的机器。 如果他们能看到你,那么可以发送或接收你的数据。
如果你只是传输私人文件,我不会担心。 客户会看到对方如何。 其实你应该closures其他DHT或发现。
我相信,它允许跟踪器和客户端更准确,更快地轮询Bittorrent服务器(您的机器),因为它不依赖于NAT转换来获取所需的位置。
当您通过Bittorrent下载时,您可以通过代理传输数据,或通过与其他用户build立直接连接。 由于用户正在连接到您的机器,他们需要打开端口。 否则,它将使用NAT来parsing连接到你的机器 – 这是较慢的,并不是所有的客户端都支持。 因此,较less的客户端等于较慢的下载
为了BitTorrent能够下载块,它首先需要连接到一个客户端,他们需要的块。 有两种方法可以build立此连接
对于第一个工作,需要设置防火墙,以允许Bittorrent监听端口上的传入连接。 这是没有什么不同,那么如果你build立一个networking或FTP服务器。
第二个通常用作后备,因为大多数防火墙都configuration为限制传入连接,但允许任何传出连接,并继续允许在两台计算机之间build立的连接。