首页天道酬勤()

()

admin 12-02 23:25 201次浏览

前言

世界上没有LSP,或者说每个人都是LSP。

说到种子,你想到了什么?

是农民在春天播种,秋天收获的东西吗?或者是以。激流?

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

但今天我们说的不是自然的种子,而是LSP人爱看爱听的种子。

00-1010所谓的“种子”(或种子文件)实际上是以结尾的文件。种子,它被称为种子,因为它包含您需要获取的文件的相关信息。就像自然界中的种子一样,它含有未来形成果实所需的最基本的成分。

那个。torrent后缀实际上是指支持BitTorrent协议的文件。BitTorrent是BT的简称,俗称比特流。看到这个,你一定有印象。BT种子和我们常说的种子其实是一种东西。

那么这个BitTorrent协议是什么呢?

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

P2P 与 BitTorrent 协议

如上图所示,完成作业后kldzs会借给同学抄,但一次只能一个人,其他人只能抄kldzs的作业,所以要想让包括kldzs在内的7个人完成作业,就要看kldzs写作业的速度和每个同学抄作业的速度了。我们知道这样的效率肯定很低,所以聪明的kldzs想出了第二个解决方案。如下图所示:

Kldzs的方法是把作业分成几份,让大家抄不同的部分,比如A抄选择题,B抄选择题,C抄填空题.然后大家可以把自己抄的作业和别人抄的作业进行交换,这样大家就可以在规定的时间内把作业全部抄完,从而提高效率。

抄作业的例子

之所以要先提抄作业,是因为这两种方案和下载文件很像。

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

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

lass="pgc-img-caption">

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

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

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

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

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

在互联网,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 协议后,我们来说说他的原理吧。

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

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

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

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

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

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

如下图所示:

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

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

Tracker 没了怎么办?

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

有两种解决方案:

PT

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

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

不说了,这就去吃柠檬。

DHT 网络

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

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

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

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

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

发展

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

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

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

最后

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

Java设计模式之原型模式怎么实现Java0基础_day11-抽象类与接口雷士灯具管理系统
bittorrent下载中文版(bittorrent软件) 嫌弃表情包(大姨妈来了表情包)
相关内容