0%

关于下载的那些事儿

前言

相信下载东西大家都会,平时下个软件的安装包、下个歌曲电影啥的,或者有人用种子、磁力链接下载一些资源,这篇博客我打算从自己实际的使用出发,简单介绍一下各种下载协议、下载软件以及资源之间的关系,最最重要的其实是看完之后让人了解,我下载资源应该去哪里找,怎么下载?

下载协议

首先先从枯燥的协议开始。我们需要明白一点,下载的本质就是把数据从一台机器或者多台机器上通过网络传输到你的PC上。

常见的下载协议有:HTTP、FTP、BitTorrent、Magnet(磁力链接),其它比较常见的还有ed2k、thunder,除了HTTP和FTP协议之外,其余的都可以称为P2P下载,即它们不是去一个服务器进行下载,而是从多个用户的设备中,由这些用户设备把资源发给你。

HTTP协议

由于HTTP协议用的范围极其广泛,故这里并不打算深入介绍。我们这里假设你需要下载一张图片,那么HTTP就会在自己的协议头部中加入Content-Type和Content-Length,然后在自己的body中加入对应的数据,这样一张图片就通过HTTP(TCP)传输到你的PC中了。

image-20210610212204439

FTP协议

FTP协议目前其实用的不算是很多了,它采用两个 TCP 连接来传输一个文件,一个控制,一个数据。它和HTTP我个人觉得最主要的区别就是它可以说就是为了传输文件而开发的,所以可以有对应的账号密码来进行验证(当然其实HTTP也可以)。

不论是HTTP还是FTP协议,我们在Linux上一般都会使用wget进行下载(如果你使用curl的话,需要使用--output来指定文件)。

BitTorrent

之前的HTTP和FTP都是比较简单的协议,就是你的PC去问服务器索要对应的数据,服务器把数据发送给你。下载本来也就是那么简单,不是吗?但是如果资源非常热门,那么服务器的带宽就不足以支持很多人同时下载;或者说要是哪天服务器不小心把数据丢了,那么好了,大家就都别下载了。所以在这个前提下,peer to peer 这一概念诞生了,简称P2P,也就是所有人都是服务器,你把你的数据发我,我把我的数据发你。

BitTorrent就是p2p最好的一个代表,在这个前提下,下载的人越多,那么下载的速度会越快。这是因为理想状况下,每个用户将已下载的数据提供给其他用户下载,分担了中心资源服务器的访问压力。

BitTorrent会有一个种子,该种子由资源拥有者创建,种子内含有文件的大小、分块信息等,还有最最重要的Tracker服务器的地址。

Tracker服务器可以理解为是中心服务器,你如果要下载资源,那么首先需要找到它,然后通过它来访问其他的用户,获得他们的信息,进而进行下载。

Magnet(磁力链接)

从上面的描述中我们不难发现,BitTorrent最为重要的是种子,而种子中最重要的是tracker服务器,如果tracker服务器挂掉了,那么整个P2P下载还是会完蛋。于是就有了磁力链接。

简单理解磁力链接,就是文件的哈希值,但是有了文件的哈希值,我该怎么下载这个文件呢?

DHT

DHT的全称是Distributed Hash Table,分布式哈希表,它能够帮助我们找到拥有相同资源的人。其核心思想就是每个人都负责整个庞大网络中的一小部分,这样就算是任何人掉线了,都不会影响到整个网络。

磁链连接的格式为:magnet:?xl=[字节大小]&dn=[文件名(已编码URL)]&xt=urn:btih:[ BitTorrent Info Hash (Hex) ]

这其中其实只需要哈希码即可,其余剩下的全部是为了使用方便而设计的。


协议部分就到这里了,因为说实话,下载的协议无非就是把数据传输过来,然后保存一下,最多增加一个哈希码用来确认数据的正确性,我们只需要简单了解这些协议的工作原理即可。

下载工具

我们为什么需要下载工具?在我看来,一是为了更加方便管理资源,二是可以通过多线程进行下载速度的提升,三是为了提升用户的体验。

FDM

下载工具我首推这个。Windows和macOS平台都有对应的产品。该软件清爽整洁,没有广告。可以直接下载youtube视频、直接下载种子、支持磁力链接。

image-20210610215101608

qBittorent

专业用来下载torrent和磁力链接的。

image-20210610220121039

迅雷

绕不开的迅雷。不多解释,最好找那种极速版的,用起来还可以。而且有些资源别的下载工具没有速度,迅雷却有速度(理由见之后)

youtube-dl

这是一款命令行工具,可以方便下载各种网站的资源,别看名字带了YouTube,其实国内非常多的网站也是支持的。但是我个人觉得它的速度不太行…..主要还是它可以配置的实在是太多了,导致用起来不是很方便。

annie

和上面的YouTube-dl一样,但是它的速度更快,更加方便。

为什么我的下载速度那么慢?

相信用过种子或者磁力链接的用户肯定会有过这么一种体验,一直卡在获取种子的元信息这块,加载不出来资源的信息;或者是速度一直是零;又或者是速度奇慢无比,下面我们来分析一下这些情况发生的原因,以及如何针对它们。

无人做种

当整个互联网都没有人为某个资源开启上传的话,那么自然而然是不可能下载的。

发生这种情况基本上就是种子太古老了,或者是该种子太冷门了,所以解决办法基本只能去迅雷、115那里去碰碰运气,看看它们的服务器上面有没有该资源,没有的话基本就没办法了。

下载过慢

本来应该很火热的一个种子,为什么下载速度那么慢?很有可能是你的tracker服务器有问题,导致你寻找到peer不够多,这样下载速度就上不去。那么