![BitTorrent 客户端是否可以只为正在做种的下载者提供做种偏好?](https://linux22.com/image/1384642/BitTorrent%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%8F%AA%E4%B8%BA%E6%AD%A3%E5%9C%A8%E5%81%9A%E7%A7%8D%E7%9A%84%E4%B8%8B%E8%BD%BD%E8%80%85%E6%8F%90%E4%BE%9B%E5%81%9A%E7%A7%8D%E5%81%8F%E5%A5%BD%EF%BC%9F.png)
从协议/技术层面来说,我对 BitTorrent 不是很熟悉。
客户是否可以更喜欢为以下下载者提供种子(提供更多带宽,或完全连接):还是否对他们下载的任何部分进行播种?(例如,作为一种奖励方式,或只提供给那些也在分享的人,而不仅仅是吸血鬼。)或者协议是否使得无法知道另一个用户(吸血鬼)的播种活动。
我之所以问这个问题,是因为有时候当我取消上传上限并自由播种时,似乎下载速度会快得多——这种现象还有其他解释吗?——是我想象出来的吗?
答案1
是的,事实上这是大多数 bittorrent 客户端的默认行为。最常用于描述此行为的术语是“公平”,大多数客户端不允许您打开或关闭它。
答案2
我接受@ScottChamberlain的回答,因为搜索“公平”一词让我找到了另一组术语,“窒息”和“不窒息”,这反过来又让我找到了一个明确的答案BitTorrent 协议规范(科恩,布拉姆。2012 年 10 月 20 日。)
阻塞的原因有多种。当同时发送多个连接时,TCP 拥塞控制表现非常糟糕。此外,阻塞允许每个对等方使用针锋相对的算法来确保他们获得一致的下载速率。
下面描述的扼杀算法是当前部署的算法。[...]
目前部署的窒息算法每十秒仅改变一次被窒息的人,从而避免了心室颤动。它通过解除对其具有最佳下载速率并且感兴趣的四个对等点的阻拦来实现往复和上传次数限制。上传速度更快但不感兴趣的用户将获得解封,如果他们感兴趣,最差的上传者将获得解封。如果下载者有完整的文件,它会使用其上传速度而不是下载速度来决定解封谁。
那么,既然没有可供上传的片段,新的下载者该如何进行下载呢?乐观的疏通:
对于乐观畅通,无论上传速率如何,任何时候都有一个对等点是畅通的(如果感兴趣,则将其算作四个允许的下载者之一)。乐观畅通的对等点每 30 秒轮换一次。为了给他们一个完整的上传机会,新连接的启动概率是当前乐观畅通的三倍,是轮换中其他任何地方的三倍。
我找到了另一份文件,标题为BitTorrent 协议版本 1.0(Fonseca,J.,Reza,B.,和Fjeldsted,L. 2005 年 4 月)更详细地描述了该协议的这一方面(尽管基于该协议的旧版本)。
本节描述了推荐用于选择与之交换碎片的邻近对等体的阻塞算法。实现可以自由地实施任何策略只要遵守第 6.1 节中的准则。
[...]
所有连接都会定期评估其为客户端提供更好下载速率的能力。该评级可能会考虑到多种因素,例如远程对等方是否愿意在一定时间内与客户端维持畅通的连接、远程对等方向客户端的上传速率以及其他实施定义的标准。
[...]
上述算法唯一缺少的元素是确保新对等点有公平的机会下载某个片段的能力,即使它们在上述架构中评估不佳。一种简单的方法是确保定期随机选择一个对等点,而不管其评估如何。由于此过程以循环方式重复,因此它确保最终即使是新对等点也有机会被解封。
本文档强烈暗示该协议的早期版本没有明确指定“公平”方案 - 只有“指南”(上面称为“第 6.1 节”),其中包括:
算法的构建不应以减少上传数据量与下载数据量为目标。至少,对等端应上传和下载相同的数据量。
当处理刚刚加入群体且没有任何可提供的信息的远程对等点时,算法不应该使用严格的针锋相对模式。
答案3
据我所知,种子播种者不可能知道谁在共享、他们下载了什么,因此种子通常会上传给随机的种子播种者。
但是,在选择上传对象、已经拥有哪些部分时,其他下载者会优先考虑那些已经提供最多部分的人,因此取消你的上传上限可能会使你在其他下载者的优先级列表中排名更高,从而提高你的下载速度。