打开 115 离线下载的窗口,看到支持这么多种链接,你都清楚他们是什么原理嘛?接下来我们一个一个说。
一、HTTP(超文本传输协议)/ HTTPS
将文件放到服务器上,然后由服务器传送到不同的用户机器上,称为 Client–Server Model 简称 C/S 模式,或者叫一对多模式。
如果同一时刻同一文件下载的用户太多,会影响到下载速度。
例如:华军软件园下载比特彗星:
得到下载链接:
二、FTP(文件传输协议)/ SFTP
跟 HTTP 一样,将文件放到服务器上,然后由服务器传送到不同的用户机器上。
不同的是,FTP 需要输入用户名和密码来验证通信安全的过程。 不过大多的 FTP 下载站会采用 Anonymous FTP 来跳过验证的过程。这样也就跟 HTTP 差不多的体验了。
例如:电影天堂下载《阿甘正传》:
得到下载链接:
ftp://4:4@dx.dl1234.com:8006/阿甘正传BD双语双字[电影天堂www.dy2018.com].mkv
三、BT
BitTorrent 是用于对等文件共享(P2P)的通信协议,其用于通过因特网分发数据和电子文件。很多网友戏称为“变态下载”。
注1:不要跟点对点协议 PPP(Point-to-Point Protocol)混淆,那个为拨号上网协议。
注2:P2P借贷(Peer-to-Peer Lending)也是基于 Peer-to-Peer 模式。
问:什么是 P2P(Peer-to-Peer)?
答:性质:
(1)它是无中心服务器的对等网络系统,而上文说的 C/S 模式是有中心服务器的中央网络系统。
(2)对等网络的每个用户端既是一个节点,也有服务器的功能。所以用户即可以下载文件也可以上传文件给别人。
(3)所以它叫用户群对用户群( peer-to-peer )模式。用户越多,下载同一文件的人越多,下载该文件的速度就越快。
注:BT 下载讲究共享精神,这跟互联网的共享精神一脉相承。所以建议不要限制上传速度。
一般的 BT 客户端程序,默认设置都未对下载速度和上传速度进行限制,这是因为BT 软件会给上传速度较快的用户优先提供服务,也就是说上传速度越快,下载速度也越快,因此如果你带宽过剩的话,下载时就不要去限制上传速度了。
好处:
(1)快。减少了网路传输节点。适合用在类似 VoIP( Voice over Internet Protocol - 基于 IP 的语音传输)等对数据通信实时性要求比较高的应用场合。
(2)保护隐私。与有中央服务器的网络系统不同,BT 下载节点能遍布整个互联网,给包括开发者在内的任何人、组织、或政府带来监控难题。
(3)减轻服务器压力。如果某公司有新版本软件推出(如魔兽世界游戏更新新版本)时,服务器必定会人山人海,而使用 BT 能大大减轻服务器的负担,节约服务器的购置成本。
坏处:
(1)盗版泛滥,你懂的。
下载原理
下载者要下载文件,需要先得到相应的种子文件,然后使用BT 客户端软件(迅雷、比特彗星等)进行下载。
下载时,BT客户端首先解析种子文件得到 Tracker 地址,然后连接Tracker 服务器。Tracker 服务器回应下载者的请求,**提供其他下载者(包括发布者)的IP **。下载者再连接其他下载者,根据种子文件,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。
下载者每得到一个块(块通常是非顺序下载的),需要算出下载块的哈希值与种子文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。
注:哈希值即 Hash 值,是通过散列函数(又称哈希函数)对某个文件内容创建小的数字“指纹”的方法,可以用来甄别接受到的文件是否是原文件。
例如我们在 17173 网站下载 LOL 的客户端,红框所示就是一个把客户端软件进行散列函数计算后得出的哈希值,然后等你下载完毕后,可以同样通过它提供的 MD5 验证工具计算出文件的哈希值,两者做一个对比,如果相同,证明下的文件是完整的,即没有出现误传漏传的现象。
同样,BT 下载也天然支持断点续传功能。
总结几个关键概念
(1)种子:即 .torrent 文件。种子文件本质上是文本文件,包含Tracker 信息(上面提到的提供其他下载者(包括发布者)的 IP )和文件信息(上面提到的下载块的哈希值`)两部分。
(2)Tracker 服务器:Tracker 服务器是 BT 下载中必须的角色。一个BT client 在下载开始以及下载进行的过程中,要不停的与 Tracker 服务器进行通信,以报告自己的 IP 信息,并获取其它下载 client 的 IP 信息。
(3)做种:分为两种,第一是你作为首位发布者发布,供给别人下载,这叫原始种子)第二种就是在你完成了 BT 下载任务后不关闭BT client,提供上传供别人下载。
注:关于如何自己制作种子文件,看这里的介绍:
三、磁力链接 —— BT 下载新形式
随着 BT 下载在全世界的风靡,也诞生了海盗湾这样的巨头,它是一个由瑞典的民间反版权组织海盗署成立于 2003 年的网站,号称拥有世界最大的 BT 种子服务器,提供海量的资源下载,而这些资源大多都是盗版的。
这引起了版权拥有方们的强烈不满,从此双方官司不断。具体可以看这部纪录片:
俗话说,“打蛇打七寸”,于是 Tracker 服务器成为了版权组织打击的重点,他们的想法很明确,只要除掉了 Tracker,BT 下载就完了。于是从 2009 年开始,很多 BT 服务器被关,不仅很多种子无法找到, Tracker 服务器也断开解析工作,使得 BT 下载成为很大难题。
然而魔高一尺道高一丈,这反而促使了 BT 技术的一次大升级。
1、DHT 网络技术,可以在无 Tracker 服务器的情况下下载。
DHT 全称为分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个 DHT 网络的寻址和存储。使用支持该技术的 BT 下载软件,用户无需连上 Tracker 就可以下载,因为软件会在 DHT 网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。
有些软件(如比特精灵)还会自动通过 DHT 搜索种子资源,构成种子市场,即搭建曾经形式的 BT 服务器。
2、磁力链接
为了实现无需连上 Tracker服务器 即可下载这个新方式,磁力链接(Magnet URI scheme)应运而生,注意,磁力链接并不是取代种子文件,而是在没有 Tracker 服务器的情况下,可以用一小段链接方便的在 DHT 中 找到种子文件
原理
不同于之前的 BT 对每个文件块做哈希值,磁力链接是对整个文件做哈希,来唯一标识这个文件。
特点
(1)磁力链接是基于文件内容的,属于统一资源名称,理论上每个文件都对应不同的 URI ,且不会重复。
(2)任何人都可以通过一个磁力链接来确保该链接指向的资源就是他想要的,而和得到该资源的方式无关,所以整个下载网络的可靠性提高了,因为每一个节点都是可以被替代的。
(3)Magnet URI 只是一个字符串,天然具有跨平台性,天然容易传播。
注:2012年2月14日,据美国科技博客 Mashable 报道,海盗湾宣布从2012年2月29日起将不再提供 BT 种子下载,全面转向磁力链接。
例如:海盗湾下载一部电影:
得到下载链接:
magnet:?xt=urn:btih:761185c0724de8db4362941571ea2c1e16ea950b&dn=Love%2C+Simon+%282018%29+%5BWEBRip%5D+%5B1080p%5D+English&tr=udp%3A%2F%2F;tr=udp%3A%2F%2F;tr=udp%3A%2F%2F
注:推荐一个磁力链接和种子互转的工具:
[拓展]
BitTorrent 也可以用来实现文件同步:
Resilio Sync(曾经名为“BitTorrent Sync”)是由 BitTorrent 公司开发的专有的对等网络数据同步工具,可在 Windows、OS X、Linux、Android、iOS 和 FreeBSD 上使用。其可在局域网、互联网上通过安全的、分布式的 P2P 技术在不同设备之间同步文件。
尽管 Resilio Sync 开发者不认为这是传统文件同步工具(如Dropbox)的竞争者或替代品,但已有人开始注意到这个与众不同的同步工具了。这主要是由于 Resilio Sync 没有常见的文件同步工具中所含有的问题,如文件存储容量限制、私有/安全性、价格因素、同步速度因素,这正是它另辟蹊径带来的优势。
四、电驴 / 电骡 —— BT 曾经的挑战者
很多人曾经都用过电驴 / 电骡 ,但你知道它们的区别吗,你知道它们前世今生吗,你知道这里面有李逵李鬼的故事吗?
1、电驴
eDonkey2000(又称 eDonkey,可缩写为 eD2k,中文一般称电驴,因为 Donkey 在英文中就是驴子的意思)是电驴最早的前身,它是由 MetaMachine 公司开发的一个可跨平台运行于 Windows、Mac OS、Linux 等操作系统的闭源免费的 P2P 文件共享软件。正如它的名字,他是在 2000 年发布的。
注: eDonkey2000 比 BitTorrent 还要早一年诞生,BT 是由美国的程序员布莱姆·科亨于2001年4月时发布,并于2001年7月2日时首次正式应用。
这里需要理清 eDonkey 是由三个部分组成:
(1) eDonkey 网络:基于 P2P 的文件共享网络,目前使用最广的文件共享网络之一,后升级为HDT网络(下文会提到)
(2) eDonkey 软件:即 eDonkey 网络客户端,所有可连接 eDonkey 网络的客户端软件的统称。包括 eDonkey2000、eMule(下文会提到)、aMule 等
(3) eD2k 链接:用于指示 eDonkey 网络上文件的链接。是对文件内容提取出的哈希值。
因为电驴跟 BT 的技术很相仿,这些概念可以放在一起做比较:
例如:在电影港下载《河畔》:
得到下载链接:
ed2k://|file|%E6%B2%B3%E7%95%94.720p.BD%E4%B8%AD%E5%AD%97[%E6%9C%80%E6%96%B0%E7%94%B5%E5%BD%B1www.66ys.tv].mp4|1284891202|5052C583C3EC5A5BC626F45847CB0340|h=5QE3DFPQBGH5JXPBSZ4P5IHVAUS3HWPY|/
然而2005年9月28日,在遭到美国唱片业协会的侵权控告并败诉后,MetaMachine 公司关闭了 eDonkey2000 官方网站,之后又停止了 eDonkey2000 软件的开发。但是 eDonkey2000 软件的主要 P2P 网络,同时也是 MetaMachine 公司为 eDonkey2000 原创研究出的 eDonkey 网络和 eD2k 链接,至今仍被广泛使用。
2、电骡
虽然 eDonkey2000 倒下了,但是后起之秀其实在它刚诞生1年就已经出现了,那就是 eMule,因为 eMule 在中文是骡子的意思,所以中文正式翻译是电骡。它是一款开源软件,它可以看作是是商业软件 eDonkey 的同人作品。
它除了支持 eDonkey 的网络和 eD2k 协议之外,还新增了很多不一样的功能,特别是 KAD 节点(类似 BT 的 HDT 网络)的支持,让 eD2k 彻底成为了完全的 P2P 网络。eDonkey 电驴所使用的 eDonkey 网络,虽然也是基于 P2P 共享,但是仍然离不开中央服务器。一群人使用 eDonkey 电驴进行文件共享,必须要有中央服务器来作为通讯中心,为用户提供查找文件等服务。而 KAD 则是更彻底的 P2P,只需要用户作为节点,用户之间能够直接连接,完全脱离了中央服务器。这种方式其实也因此经受住了版权商的压力而巍然不动,因为用户之间共享盗版可以推脱给用户的自发行为。
eMule 和 eD2k 很早就在国外广为流行,但由于 eMule 是开源软件、缺乏商业推广的原因,在国内长时间内只是小众的玩物。
3、easyMule —— VeryCD 电驴
上文提到国内的 eMule 发展的不温不火,于是上海维西(VeryCD)公司看到了商机,因为 eMule 是开源的,所以2007年起开始将 eMule 的代码拿来开发,改名叫 easyMule。easyMule 第一版为 eMule Mod,修改自官方 eMule,因而遵循 GNU GPL v2 协议,开放源代码;第二版声称完全自主开发而闭源,但其是否真正完全自主开发尚存在争议。VeryCD 公司宣传称 easyMule 为“电驴”,此名称存在较大争议,因为明显跟 eDonkey 电驴容易起混淆。
在起初,VeryCD 电驴还保留着 eMule 的大量功能,但到了后来,VeryCD 电驴将最精髓的 KAD 资源搜索等功能重重阉割(KAD 可以搜索全球e Mule 共享的资源,VeryCD 电驴后来只能搜索自己官网的资源),而且宣传上更是将自己当做是正牌电驴。在好长一段时间内,搜索引擎搜“电驴”、“电骡”、“eMule”,排名首页的一度是 VeryCD官网而非 eMule-Project 官网。VeryCD 官网通过把 eD2k 资源进行了整合,建立起了 eD2k 分享平台,一度成为了中国大陆浏览量最大的资源分享网站之一。
实际上,国内抄袭 eMule 的并不止 VeryCD 电驴一家,比如一些所谓的“种子搜索神器”,而且为了省事还在功能上做劣化和阉割,并在界面当中加入了广告。
所以,eMule 不愧算是被国产软件抄得最惨的开源项目之一了。
从 2009 年开始,中国加强了网络版权把控,VeryCD 被迫转型,撤下了几乎所有的 eD2k 共享链接。但只要有人在用 eMule 共享文件,eDonkey 和 KAD 网络就仍会在运行。
问:为什么电驴 / 电骡凉了,而 BT 在今天大行其道
(1)电驴 / 电骡 软件使用复杂
eD2k 对应的客户端如 eMule 电骡是共享软件,而 Magnet 磁链对应的BT软件则是下载软件。这让它们在使用上,有着很多根本性的区别。
比如,开启 eMule 后,第一件事做的并不是什么下载,而是设置共享目录,该目录中的所有文件,都会实时共享到 eDonkey 和 KAD 网络中。目录中共享了的文件都会生成 eD2k 链接,所有人通过相应的 eD2k 链接,都能够拿到你共享的文件,一旦有人下载相应文件,那么你的 eMule 客户端就会上传数据。我们平时使用 eD2k 链接下载,资源也是来自他人 eMule 所共享的文件的。当然,共享目录中也可以啥都不放,但很多 eMule 客户端都拥有队列优先级机制,上传得少,下载速度也会被限制。
(2)eD2k 链接要比 Magnet 磁链更加先进
具体体现在两方面:
A. eD2k 链接基于文件的,而 BT 链接基于文件夹。
只需要一条 Magnet 磁链,就可以下载到整堆的文件,这点 eD2k 链接做不到。
所以如下图,要下载电视剧的话,很多集就对应了很多的 eD2k 链接,很累赘:
B. eD2k 网络不仅可以共享文件,还支持资源搜索、通讯等功能,可谓是个能脱离 HTTP 存在的理想 P2P 网络。
六、其他
迅雷链接、快车链接、旋风链接都不是协议,只是单纯对字符串做一些编码操作,好让别的下载软件识别不了,而自家的软件因为知道解码规则所以可以。
但是网上有可以解码的工具:
例如:把 FTP 协议下载地址转成这三个软件各自支持的专有链接:
七、拓展 —— 关于 BT 、电驴下载损害硬盘的问题
起初 BT 和 eMule 下载对硬盘都有损的。
后来这个问题慢慢不被人提起了,因为伤害已经降低了很多可以忽略不计了,具体原因是:
1、SSD(固态硬盘) 逐渐取代了传统机械硬盘
BT 和 eMule 等 P2P 下载对硬盘有损的原因是通常会在下载同时上传数据,造成硬盘不间断读写。
而机械硬盘由于需要高速旋转,会出现过热情况,对硬盘寿命造成影响。但由于 SSD 不需要旋转,所以事实上 BT 下载对于 SSD 的影响主要就是集中在读写寿命上了。
但是网上有人做过测试,对于一般用户来说(毛细血管而非大管),日常的 BT 等 P2P 下载对 SSD 的读写寿命影响微乎其微。实际上,操作系统比 BT 软件对磁盘的操作更多,更毁硬盘。所以大家可以打消这个顾虑。
2、缓存机制的应用
现代的 BT 软件一般都会尽量开辟更大的内存缓存,而避免频繁读写硬盘。
3、况且下载软件也会自带上传的限制
如迅雷的设置里:
七、拓展 —— 尽惹是非的迅雷
小时候看着迅雷的诞生让我很惊喜,一个下载速度很快的软件,体验真的不错。但后来慢慢发现,迅雷原来之前惹出过那么多是非。
1、吸血问题
迅雷有吸血机制,例如从 eMule 拿数据,但并不回传数据给 eD2k 网络,不符合共享精神下完就跑,这让很多 eMule、BitTorrent 客户端封杀迅雷。这就导致不少人发现迅雷下 eD2k、磁链下不动,讽刺的是迅雷有错在先。
2、开源问题
例如,有 eMule 用户认为迅雷于2007年加入的连接下载 eDonkey 网络的功能可能使用参考了 eMule 的源码,但未按协议开源,所以可能违反了该协议。这也是 eMule 官方屏蔽迅雷的除吸血外另一个理由。
3、盗链问题
由于迅雷的 P2SP(Peer to Server and to Peer,即“点对服务器和点”技术)网络需要搜集来源,即用户使用迅雷打开一个 URL 下载地址时,迅雷会将该 URL 来源上传给迅雷服务器并储存,将目标文件数据发送至迅雷服务器进行比对检索,并在短时间内返回大量拥有该文件的目标来源。这些目标来源可能是存有该文件的传统 HTTP/FTP 服务器或普通计算机。随后,迅雷创建大量连接,从这些目标来源上下载目标文件。这有可能会对一些与此次下载无关,却拥有同样文件的服务器或普通计算机产生不必要的流量,将 URL 来源储存于迅雷服务器上也可能侵犯了原文件所在服务器或普通计算机的隐私。
注:所以 P2SP 技术会让迅雷的下载速度比 BT 还要快
迅雷的“盗链”也曾经导致有用户暴露了不想公开的服务器。而 2006 年也因此发生了抵制迅雷事件,但最终迅雷与华军软件园等站点和解。
由于迅雷的“盗链”问题,有用户开发出了“反迅雷”的服务器端插件,它能够识别出迅雷软件的请求并进行阻止。
4、阉割问题
迅雷不像标准的 BT 客户端那样(例如 utorrent)具备全部 BT 的功能,只有下载 BT 功能, 缺少了做种、添加 Tracker、下载私有的 BT(又称 PT - Private Tracker,这里就不延伸介绍它了 )等支持。