日常的网络冲浪中,我们经常会遇见各种各样的下载方式:种子磁力HTTPFTP等等等等,那么这些下载方式到底是什么?有什么区别?在这个博文中我会一一解释清楚。

HTTP - 最常广泛的协议

HTTP/HTTPS(HyperText Transfer Protocol)可以说是应用最广泛的协议了,翻译过来叫超文本传输协议,我们日常访问的网页基本上都是http协议的,这种协议传输方式是把一个文件放在服务器上,所有用户从服务器下载,不过这种方式的弊端很明显:由于服务器带宽的限制,同时下载的用户一旦过多就会导致下载速度变慢
http的下载链接结构一般由http协议头,网站地址,文件目录和文件名组成,例如:http://xxx.com/xxx/xx/xxx.zip,当然,这只是正常情况,但比如百度网盘这样性质的网站就需要生成一个临时加密的链接了,比如https://d.pcs.baidu.com/file/24eab7546g80b2eb7003b8906debe098不过如果没有加密,HTTP协议的文件岂不是人人都可以下载了?假如我需要在企业内部传一个文件,同时不想让外人下载怎末办?这时候就要看FTP协议了。

FTP- 能上传能下载

和HTTP协议一样,FTP也是把文件放在服务器上,由客户端来上传下载,不过FTP是文件传送协议需要验证用户名和密码来验证通信的安全过程(不过FTP服务端可以开启anonymous FTP,任何人就都可以下载了),但是也有弊端:传输不安全且速度慢,ftp的下载链接一般长这样:ftp://username@www.xxx.com/目录/文件.zip,不过不论是HTTP还是FTP都是需要有服务器才能进行下载的,而有一种不需要指定服务器就能下载,且下载的人越多反而越快:

BT - P2P的先行者

BT(BitTorrent)也被称为“种子”,BT应用了P2P(Peer-to-Peer)技术,可以理解为没有服务器,人人都是服务器,贯彻了“我为人人,人认为我”的共享精神,相比于前两者直接从服务器下载的协议来说,BT的原理可能会复杂些:BT软件先从种子文件中解析出Tracker地址,然后链接Tracker服务器,Tracker服务器收到请求后返回其他下载者的IP(包括发布者)下载者再连接其他下载者,两者相互告知自己已经下载的部分(块)

这是我下载的某个文件,能看到都是以“块”来分割的
这是我下载的某个文件,能看到都是以“块”来分割的

下载者每下载一个“块”都要计算出哈希值与种子文件中做对比,如果正确就保留,如果错误就重新下载。
如果你看上面的文字还是一知半解,可以了解一下几个基本的概念:
种子:就是.torrent文件,就是一个包含其他下载者及发布者IP和每个分块的哈希值的文本文件。
Tracker:Tracker就像一个中介,一个种子文件在开始下载和下载过程中会一直与Tracker保持通讯,以报告自己的IP和获取他人的IP。

磁力 - BT下载的新姿势

没错,BT和磁力不是同一个东西,这一点很多人会混淆,可以把磁力理解为BT的升级版,这一切都要从一个故事说起:
随着BT下载快速崛起,2003年瑞典反版权组织盗版党创办了至今都鼎鼎有名的“海盗湾”。

海盗湾LOGO
海盗湾LOGO

海盗湾拥有世界上最大的Tracker服务器,提供了海量的资源下载,而且这些资源都是盗版的。
这下子版权方坐不住了,从此版权方如同隔壁老赵头盯上了隔壁李寡妇一样,死缠烂打官司不停。不过版权方一看总这么耗下去也不是事,盯上了Tracker服务器,,心想着只要把Tracker给断了,你海盗湾就完了,结果没想到魔高一尺道高一丈,这次这次打击反而让BT涅槃重生,进化成了磁力链接(Magnet URI scheme),不过要注意的是:磁力链接并不是取代种子文件,而是在没有 Tracker 服务器的情况下,可以用一小段链接方便的在DHT中找到种子文件。
和BT的区别:BT对每个文件块做哈希值,磁力链接是对整个文件做哈希值。
相比于BT,磁力更方便传播。

其他 - 迅雷,旋风,快车

这几个都是把链接稍微做了一下编码,好让其他下载器无法识别,图一乐就行,别当真有啥技术,搜索引擎搜“迅雷链接解码”能搜出一大堆。

扩展 - 迅雷,“吸血雷”

想必大家或多或少都听说过迅雷的恶行,破坏了P2P的共享精神,我就长话短说,生动形象的表述一下:
你和一群网友在一个叫“P2P”的群里互相发学习资料,突然一个叫迅雷的进来了,只收不发,还总是讨要学习资料,消耗别人的精力。