从零开始到下载世界:Tracker服务器和DHT网络

0

如何获取下载客户端(Peer)

将下载同一个资源的客户端视为Peer,开始下载的时候第一个任务就是获取Peer,越多越好,越优质越好。
这时我们就需要从Tracker服务器和DHT网络中获取其他Peer。

什么是Tracker服务器

Tracker服务器可以使用UDP/HTTP协议通过资源特征码(InfoHash)获取Peer的地址和端口。
Tracker服务器很多时候都连接不上,所以使用优质的Tracker非常重要。

HTTP Tracker
代码实现

UDP Tracker
代码实现

优质Tracker服务器

什么是DHT网络

DHT网络中有许多的节点,每个节点存储InfoHash和Peer信息,还有其他节点信息。
每个节点都有一个自己的Hash值,我们通过InfoHash查找Peer时,会向节点Hash靠近InfoHash的节点进行查找。
如果节点没有Peer返回则需要返回更加接近InfoHash的节点,这样一直循环直到找到Peer。

如果Peer支持DHT协议也可以作为DHT网络的一个节点,这也导致了Peer关闭客户度后这个节点将会失效。

和Tracker相比DHT网络更加符合BT协议去中心化的分布式思想,但是使用到目前为止Tracker还是比DHT网络查找Peer更快。

DHT Protocol
代码实现

其他

除了以上两种方法获取Peer,还可以通过已经连接的Peer通过PEX协议、LSD协议、Peer主动连接获取Peer。

当然获取到的Peer或是防火墙,或是已经关闭了,或是拒绝上传不一定可以连接并使用。
所以找到优质的Peer是快速启动下载和获取快速下载非常重要手段。
蜗牛默认PEX/LSD/主动连接这三类Peer优先使用,其实还可以通过IP段来进行进一步优化,这个暂时还没有实现。

使用过程中我们可以对Tracker服务器和DHT进行管理和优化,这样可以获取更好的下载体验。

从零开始到下载世界