人人都是 LSP?—— 种子与文件下载的相爱相杀

image

前言

世界上根本没有 LSP,又或者,人人都是 LSP。

说起种子,你会想到什么?

image

是农民伯伯春天播下,秋天就会收获果实的东西?还是以.torrent结尾的文件?

如果是前者,那你一定是一个热爱大自然的人。如果是后者,你一定是一个“热爱生活”的人。

不过今天我们要聊的不是大自然的那个种子,而是 LSP 们喜闻乐见的这个种子。

P2P 与 BitTorrent 协议

所谓“种子”(或者叫种子文件),其实就是以.torrent结尾的文件,而他之所以叫种子,是因为这个文件里包含了你需要获取的文件的相关信息。就和自然界中的种子一样,包含了日后形成一颗果实所需要的最基本的成分。

而这个.torrent后缀其实指的是支持 BitTorrent 协议的文件。BitTorrent 简称 BT,俗称比特流。看到这,想必你已经有些印象了吧,我们常说的 BT 种子和种子其实是一种东西。

那么这个 BitTorrent 协议是什么?

不急,在介绍 BitTorrent 之前,先让我们梦回高中课堂,回想一下以前抄作业的时光。

抄作业的例子

image

如上图所示,学霸在写完作业后,要把作业借给同学抄,但是一次只能借给一个人,且其他人只能抄学霸的作业,那么如果想要让学霸在内的 7 个人都写完作业,取决与学霸写作业的速度和每个同学抄作业的速度。我们知道,这样的效率一定是很低下的,所以聪明的学霸想出了第二个办法。如下图所示:

image

学霸的办法就是,把作业分成几块,让每个人抄不同的部分,比如 A 抄单选题、B 抄多选题、C 抄填空题……然后每个人再把自己抄到的作业和其他人抄到的作业互换,这样,所有人都可以在规定时间内把所有的作业都抄完了,以此实现效率的提升。

P2P 与文件下载

image

之所以要先提抄作业这个事情,是因为这两种方案和下载文件颇为相似。

传统的文件下载就和上面的第一种方案类似,如上图所示,客户端向服务器发送“我要下文件”,服务器便将文件再发给客户端,这是一个很常见的场景,在这个场景中,客户端下载文件的速率取决于两个因素:服务器的上传带宽和客户端的下载带宽。带宽是指在单位时间(一般指的是 1 秒钟)内能传输的数据量。

而一旦需要下载的文件数量是多个时,下载的总时间便受到下载数量 N 的限制,即越多的人下载某一个文件时,理论上所需要的下载时间就越长,如下图所示:

image

这种用户体验显然是很糟糕的,那么有没有什么好的方法解决这个问题呢?这就要请出我们本期的“天降猛男”——P2P(peer-to-peer)

这里的 P2P,和点对点(point-to-point)的协议程序不同,它是用户群对用户群(peer-to-peer),当然也不是我们前几年经常听见的暴雷的 P2P(互联网金融点对点借贷平台)。

本文所说的 P2P 是一种架构模式,就和我们之前说过的 C/S(客户端/服务端)架构类似。

在 P2P 模式中,服务和资源分布化,资源不集中存储在某些设备上,而是分散存储在运行 P2P 程序的设备上,每一个对等方都可以为其他对等方提供服务。

还是拿抄作业这个例子来说,学霸的第二个方案就是一个很典型的 P2P 模式。他将自己的作业分成填空、选择、单选、多选等部分,然后分别送给 6 个人,这样当每个人都有自己的一部分副本后,就可以不用再找学霸本人要作业了,直接找其他拥有和自己副本不同的人索取然后互换资源即可。

在互联网,P2P 模式也有一个非常重要的,乃至影响了所有 LSP 的应用,即 BitTorrent,也就是本文开篇所说的种子。

BitTorrent 协议

维基百科对 BitTorrent 的解释是:

BitTorrent 协议(简称 BT,俗称比特洪流、BT 下载)是用在对等网络中文件分享的网络协议程序。和点对点(point-to-point)的协议程序不同,它是用户群对用户群(peer-to-peer)。

BitTorrent 协议是架构于 TCP/IP 协议之上的一个 P2P文件传输通信协议,处于 TCP/IP 结构的应用层。

简而言之就是 BitTorrent 是一个用来传输文件的协议,和第二个抄作业案例的特性类似,该协议的特点是,用户越多,即下载同一文件的人越多,下载该文件的速度越快。且下载后,继续维持上传的状态,就可以“分享”,成为其用户端节点下载的种子文件(.torrent),同时上传及下载。

在大多数人感觉中 BitTorrent 与 P2P 成了对等的一组概念,而它也的确将 P2P 技术发展到了近乎完美的地步。

原理

介绍完 BitTorrent 协议后,我们来说说他的原理吧。

其实和学霸将作业分成选择题、填空题等给其他人抄的道理一样,BitTorrent 协议也是将需要下载的文件虚拟分成大小相等的块,这些块的大小被要求成 2k 的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和 Hash 验证码写入 .torrent 文件(即种子文件,也简称为“种子”)中,作为被下载文件的“索引”。 下载者要下载文件内容,需要先得到相应的 .torrent 文件,然后使用 BT 客户端软件进行下载。

而.torrent 文件其本质就是一张信息清单,存储了一些信息,如下图所示,其中就包括了文件大小、哈希值、tracker 地址等信息。

image

下载时,BT 客户端首先解析 .torrent 文件得到 Tracker 地址,然后连接 Tracker 服务器。Tracker 服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的 IP。或者,BT 客户端也可解析 .torrent 文件得到 nodes 路由表,然后连接路由表中的有效节点,由网络节点提供下载者其他下载者的 IP。

下载者再连接其他下载者,根据 .torrent 文件,两者分别对方告知自己已经有的块,然后交换对方没有的数据。此时不需要其他服务器参或者其他网络节点的参与,分散了单个线路上的数据流量,因此减轻了服务器负担。

下载者每得到一个块,需要算出下载块的 Hash 验证码与 .torrent 文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。

因此,下载的人越多,提供的带宽也越多,种子也会越来越多,下载速度就越快。

如下图所示:

image

从 BT 客户端角度考虑,下载原理分为以下几步:

  1. 根据 BitTorrent 协议,文件发布者会根据要发布的文件生成提供一个 .torrent 文件。客户端可从 Web 服务器上下载种子文件,并从中得到 Tracker 服务器 URL。
  2. 根据 Tracker URL 与 Tracker 服务器建立连接,并从服务器上得到 Peers 信息。
  3. 根据 Peers 信息与一个 Peer 建立连接,依据 Peer wire 协议完成握手,并从 Peer 端下载数据文件。同时监听 Peer 的连接,并给 Peer 上传数据文件。

Tracker 没了怎么办?

从上面的分析中我们得知,想要利用种子下载资源,第一步就是根据种子里的信息获取到 Tracker 地址,那么这时候问题就来了,如果运营商掐断了你和 Tracker 服务器间的连接了怎么办?

image

有两种解决方案:

PT

第一种是采用一种不会被运营商掐断的 Tracker 服务器,PT(英语:Private Tracker),即私有种子服务器。他与 BT 最大的不同点为:可进行私密范围下载。由于是私有的,所以一般的 PT 网站都是采用的邀请制,由已注册的用户向自己所信任的人发送邀请,以确保用户质量。例如紫荆站就是南大人专属的网络资源的 PT 站点(需要在连接到校园网的状态下登录)。

说个题外话,紫荆花的花语是矢志不渝,而这个网站之所以叫紫荆,是因为开发者曾约定和他的女朋友一起在南大种一朵紫荆花,虽然最后因为学校的原因没有种成,但意外诞生了紫荆 PT 来纪念他们的爱情。就像紫荆的作者说的,紫荆是胡同写给他的领导“紫荆 MM”的一封情书,即“你的心里,刻着我的名字”。

不说了,这就去吃柠檬。

image

DHT 网络

image

第二种解决方案便是 DHT 网络了,维基百科对他的解释是:

DHT 全称为分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个 DHT 网络的寻址和存储。使用支持该技术的 BT 下载软件,用户无需连上 Tracker 就可以下载,因为软件会在 DHT 网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。

不知道上面这种解释能否理解,我换个说法,大家可能就清楚了。

曾经有一个非常著名的理论:最多通过五个人你就能够认识世界上任何一个陌生人,即六度分离理论。在 DHT 网络中,每个节点就跟人一样,你可以通过你的朋友,或者你朋友的朋友,或者你朋友的朋友的朋友,只需要不断递归即可找到你想要的资源地址。这样的话,在一个网络中也就不需要 Tracker 服务器了,又或者说,在这个网络中,所有的机器都充当了 Tracker 服务器。再回顾开篇说的那句,世界上根本没有 LSP,又或者,人人都是 LSP。这么一想,是不是有那味了。

image

而这也是磁力链接的原理。所以其实磁力下载和种子下载的本质都是 P2P 下载,都是让每个下载者分享资源片段,从而拼凑出一个完整的资源,下载者既是资源的消费者,又是资源的传播者。他们之间的区别仅仅是寻找其他下载者的方式不同。由于篇幅的原因,本文便不详细介绍磁力链接查找下载者的方式了,有兴趣的小伙伴们可以搜索相关的资料学习下。

发展

看到这想必你对 BT 种子已经有了一定的了解了。其实 BT 技术早已涉及我们生活的方方面面了,以在线游戏为例,有些在线游戏的在线更新(如魔兽世界)就是采用 BT 的技术。所以当每次有改版时,动辄数百 MB 的更新档,透过游戏厂商所提供的更新程序,以 BT 的方式进行下载分流。这为以往的其他种在线游戏,每次重大改版就必须重新压制光盘,或是等待单一下载点的下载方式,带来另一种节省成本的经营模式。

技术是把双刃剑,利用 BT 传播非收费性内容的好处有目共睹,但利用 BT 免费发布著作权内容肯定损害著作权所有者的合法权益,因此是否应因此立法全面禁止 BT 仍然是一个焦点问题。

image

对于大多数 85 后,90 后来说,第一次接触 BT 种子想必和一个名为“快播”的播放器是脱不了干系的,我至今仍然记得王欣的那句技术本无罪。其实 Facebook 创立之初就是为了找到好看的女生,BT 的也是靠着他的作者科亨收集了些免费的色情电影才吸引到更多的人来测试他的程序,不得不说,某种程度上,ghs 真的促进了互联网技术的发展。

最后

以上就是本文的全部内容了,如果你觉得还不错的话,欢迎点赞关注转发支持一波,你们的支持是我肝文的最大动力。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容