如何提高 bittorrent 下载速度?
How to increase bittorrent download speed?
我正在用 Dart 开发一个 bittorrent 客户端。
现在这个客户端支持:TCP regular bittorrent protocal, DHT protocal, Peer Exchange, UDP/HTTP/HTTPS tracker.When 客户端尝试下载一些东西,它可以找到超过 1000 个对等地址,但是只能只连接了大约30个对等点,其中一些响应非常慢。
比如我用其他bt客户端(Bitcomet)下载东西,下载速度都在1MB/S以上,但是同样的资源,我客户端的下载速度只有100kb/s左右
我想知道如何提高客户端下载速度?试图找到更多的同行?实施更多比特流规范?
我们没有看到您的客户端在运行,所以我们不知道为什么它很慢。除了受支持的 bittorrent 功能和规范的正确实施之外,还有一些事情,例如低效实施的套接字编程可能会减慢您的速度。
因此,您将不得不从多个角度调查和比较您的客户。
首先,您需要使用具有非常细粒度日志记录的客户端作为参考,以便您了解它们的行为。 libtorrent and some clients based on it provide that, so does biglybt.
Wireshark is also a useful tool to look at bittorrent and TCP at the network level. To snapshot the current buffering state of sockets you can use ss -tie
.
When the client try to download something, it can find more than 1000 peer addresses, but just can connect only around 30 peers, and some of them response very slowly.
好吧,这就是我要开始比较的地方。您是否正确处理了对等源(DHT、跟踪器),即您是否正确获取了 IP 地址?
对等点是否会立即断开客户端连接(这表明您的协议实现中存在错误或缺失部分)或连接设置期间的其他网络错误?
您是否收到任何传入(远程启动)连接?如果不是,您将必须转发您的 TCP 侦听端口或在这种情况下实施 UPnP-IGD 或 PCP。或者 uTP + hole punching.
Implements more bittorrent specifications?
既然你已经实施了 PEX,你还必须有 BEP 10 implemented, make sure to honor the reqq
field in that case. Implementing the fast extension (BEP6) 也可以用来避免在处理未决请求时出现一些复杂情况。
我正在用 Dart 开发一个 bittorrent 客户端。
现在这个客户端支持:TCP regular bittorrent protocal, DHT protocal, Peer Exchange, UDP/HTTP/HTTPS tracker.When 客户端尝试下载一些东西,它可以找到超过 1000 个对等地址,但是只能只连接了大约30个对等点,其中一些响应非常慢。
比如我用其他bt客户端(Bitcomet)下载东西,下载速度都在1MB/S以上,但是同样的资源,我客户端的下载速度只有100kb/s左右
我想知道如何提高客户端下载速度?试图找到更多的同行?实施更多比特流规范?
我们没有看到您的客户端在运行,所以我们不知道为什么它很慢。除了受支持的 bittorrent 功能和规范的正确实施之外,还有一些事情,例如低效实施的套接字编程可能会减慢您的速度。 因此,您将不得不从多个角度调查和比较您的客户。
首先,您需要使用具有非常细粒度日志记录的客户端作为参考,以便您了解它们的行为。 libtorrent and some clients based on it provide that, so does biglybt.
Wireshark is also a useful tool to look at bittorrent and TCP at the network level. To snapshot the current buffering state of sockets you can use ss -tie
.
When the client try to download something, it can find more than 1000 peer addresses, but just can connect only around 30 peers, and some of them response very slowly.
好吧,这就是我要开始比较的地方。您是否正确处理了对等源(DHT、跟踪器),即您是否正确获取了 IP 地址?
对等点是否会立即断开客户端连接(这表明您的协议实现中存在错误或缺失部分)或连接设置期间的其他网络错误?
您是否收到任何传入(远程启动)连接?如果不是,您将必须转发您的 TCP 侦听端口或在这种情况下实施 UPnP-IGD 或 PCP。或者 uTP + hole punching.
Implements more bittorrent specifications?
既然你已经实施了 PEX,你还必须有 BEP 10 implemented, make sure to honor the reqq
field in that case. Implementing the fast extension (BEP6) 也可以用来避免在处理未决请求时出现一些复杂情况。