我对 BitTorrent 协议很感兴趣。很多软件都实现了这个协议,比如 µTorrent、Vuze、qBittorent...
每个软件都有一个功能:速度限制。
例如,如果我的最大下载速度是 3000 KB/s,我可以将速度限制在 1500 KB/s 或 500 KB/s,而不会减少源(种子)的数量。这个速度限制如何工作?
答案1
我不能肯定地说所有这些程序是否都以相同的方式执行此操作,但几年前我查看了 libtorrent 源代码(这是大多数程序用来实现 BitTorrent 协议的库),libtorrent 是这样处理的:
该库在工作时会保持平均上传和下载数量。当达到限制(上传或下载)时,软件会暂停操作一小段时间,直到平均上传/下载量略低于限制,然后再次恢复。达到限制时,
它不会直接丢弃流量。特别是在下载限制生效前开始的块下载仍会收到。
这也意味着它永远不会完全达到限制,但会略微超过限制,低于限制,再次超过限制,等等。
对于下载,暂停操作意味着:不向任何对等方请求下载新块。对于上传,它意味着拒绝来自其他客户端的上传请求。(BitTorrent 协议规定告诉另一端“我有那个块给你,但现在不行。稍后再试。”)
PS 上述逻辑也有一些例外。特别是对于“慢速移动者”,他们的对等点数量非常少,在某些情况下,无论如何他们都会获得通过,因此他们有更好的机会通过 BitTorrent 网络进行传播。
PSPS 三四年前我浏览过 libtorrent 源,但据我所知,它并没有发生太大变化,我的信息仍然有效。