如何提高bittorrent下载速度?

时间:2021-01-03 02:53:43

标签: dart bittorrent

我正在用 Dart 开发一个 bittorrent 客户端。

现在这个客户端支持:TCP常规bittorrent协议、DHT协议、Peer Exchange、UDP/HTTP/HTTPS tracker。当客户端尝试下载东西时,它可以找到1000多个对等地址,但只能连接30个左右同龄人,有些人反应很慢。

比如我用别的bt客户端(Bitcomet)下载东西,下载速度都在1MB/S以上,但是对于同样的资源,我的客户端下载速度只有100kb/s左右

我想知道如何提高我的客户端下载速度?尝试寻找更多的同龄人?实现更多的 bittorrent 规范?

1 个答案:

答案 0 :(得分:1)

我们没有看到您的客户端在运行,所以我们不知道为什么它很慢。除了支持的 bittorrent 功能和规范的正确实现之外,还有一些诸如低效实现的套接字编程之类的事情可能会减慢您的速度。 因此,您必须从多个角度调查和比较您的客户。

首先,您需要使用具有非常细粒度的日志记录的客户端作为参考,以便您了解他们的行为。 libtorrent 和一些基于它的客户端提供了这一点,biglybt 也是如此。

Wireshark 也是在网络级别查看 bittorrent 和 TCP 的有用工具。要快照套接字的当前缓冲状态,您可以使用 ss -tie

<块引用>

当客户端尝试下载某些东西时,它可以找到 1000 多个对等地址,但只能连接大约 30 个对等节点,并且其中一些响应非常慢。

嗯,这就是我要开始比较的地方。您是否正确处理对等源(DHT、跟踪器),即您是否正确获取 IP 地址?

对等点是否会立即断开与客户端的连接(这表明您的协议实现中存在错误或缺失的部分)或连接设置期间的其他网络错误?

您是否收到任何传入(远程启动)连接?如果不是,在这种情况下,您将不得不转发您的 TCP 侦听端口或实施 UPnP-IGD 或 PCP。或 uTP + hole punching

<块引用>

实施更多的比特流规范?

由于您已经实施了 PEX,因此您还必须实施 BEP 10,在这种情况下请确保遵守 reqq 字段。实现 fast extension (BEP6) 还有助于避免在处理待处理请求时出现一些复杂情况。

相关问题