前段时间快播案的一句“技术本身并不可耻!”在技术行业圈里流传了起来。

文章虽然有点老,但原理差不多。

快播使用的是P2P(peer to
peer)分享传输技术,实际上是在基础应用层上每天都在使用的东西,只不过大部分人每天都在用却完全不知道:BT下载和“种子”、电驴和迅雷、youtube和优酷、爱奇艺、暴风影音和百度影音等等非常非常多的应用,都用的是这项技术。

继上一篇文章()介绍了BT的原理,现在来看下BT服务端搭建的原理。

“种子”是怎么来的?为什么P2P会有如此广泛的应用?它和快播一案有什么关系?我们需要了解一下P2P传输技术的发展历史,以及有关P2P技术的著名案件。

一、BT原理介绍

“网络就是计算机”?

十几年前的互联网很简单,接入速度也很慢。不过在用户量较少数据交换量也小的情况下,一台服务器面对几百个用户基本上绰绰有余。随着互联网用户的飞速增长,网上提供服务的网站服务器的压力也变的越来越大,满足不了成几何级数增长的用户需求。那时候别说网上在线看视频,在线语音聊天都是奢望,最火的是在线文字聊天室和email。

当时著名的Sun公司首席执行官斯科特·麦克尼尔利(Scott
McNealy)
提出了“网络计算机”的概念。这个概念实际上并没有被广泛应用,但它后来被引申成为了完全不同的另一种概念:“网络就是计算机”。

简单来说,就是每一台接入网络的计算机的键盘都是这个巨型计算机的输入设备,每一台计算机的显示器就是这个巨型计算机的输出设备,每一台计算机的硬盘(包括服务器和个人电脑)都是这个巨型计算机的存储设备。当基础网络线路和硬件设备达到一定普及程度时,网络就不再是由网线和光纤连接成的一台台独立的计算机设备,变是成了一个整体,整个网络便成为了一台巨大的计算机。

美高梅4858mgm 1“整个网络是一台计算机”的概念催生了最早的P2P软件Napster。制图:大炮小白兔

前言:

Napster:最早的P2P、“种子”的种子


“互联网就是一台超巨型计算机”的概念提示之下,1999年,美国波士顿东北大学有一位怪才学生肖恩•范宁为了解决自己和舍友下载音乐速度慢的问题,把当时已很成熟的“即时消息传输技术”、“微软的网络映射技术”、“搜索引擎技术”和“筛选技术”等,揉在一起拼成了一个名叫Napster软件,这便是最早的P2P(peer-to-peer,对等网络/点对点)分享技术,也是现在各种P2P分享传输技术的雏形。

它的基本原理是,当电脑上启动Napster软件,Napster软件就会将你的计算机变成一台可提供上传下载服务的微型服务器,既可以为你下载文件,同时也为其他使用Napster软件的用户提供下载。

Napster有一个中央索引服务器。除了文件名列表以外,不提供任何一个文件下载。所有的文件下载,文件的互相传输都是在Napster软件用户的计算机上,由Napster用户来完成。即是说,我的计算机可以从加州大学保罗的计算机上下载一首《凤凰传奇》,也可以从哈佛大学林肯的计算机上下载一首《小苹果》。与此同时我的计算机还为耶鲁大学的霍华德提供《最炫民族风》的下载。

美高梅4858mgm 2Napster软件界面。
图片来源:tg24.sky.it

但这里面有几个问题:如果我用Napster免费下载了别人电脑里的付费内容,这算不算侵权呢?如果是违法内容呢?

传统的文件下载服务都是基于客户机/服务器模型,被下载的文件放在服务器上,用户登录服务器,将该文件下载到本地。在文件下载的过程中,被传输文件的来源和目的端并不对等,服务器只是单向地将文件传送给客户端。

Napster的侵权案件

就上面的例子而言,Napster本身作为工具,即不生产mp3音乐,也不复制mp3音乐文件,用户是直接从其他用户的计算机上下载mp3音乐文件。而这种分享行为自然引起了音乐版权所有者的不满,美国唱片业协会和美国音乐出版商协会联合向法院起诉Napster公司。

法院认定:

(1)Napster知道在其系统上存在着侵犯原告版权的文件,但没有阻止提供侵权材料者登陆其系统,反而提供“网站和技术”等服务支持,方便其用户搜索和下载文件,Napster的行为已构成辅助性侵权。

(2)Napster没有对其系统中的文件列表进行监控,并且不断从其系统上可以获得的侵权文件中获利,从而认定Napster应该承担代理侵权责任。Napster尽管不是MP3音乐文件的提供者,但是它自始至终都处于一种参与终端用户相互交流MP3文件的地位。

2000年7月,在旧金山地区法院裁定,Napster对唱片业版权构成了侵权,并下达了关闭Napster公司的预禁令。2001年2月,美国第九巡回上诉法院对此案作出判决,要求停止把Napster软件透过互联网供人免费下载,理由是该软件让网友透过互联网交换Mp3音乐档,涉及侵犯著作权。Napster提出上诉,二审依然判其败诉。

这种传统软件下载模式的缺点是显而易见的,整个系统的瓶颈位于服务器。由于受到服务器处理能力、互联网接入链路带宽等多种环境的制约,当下载量非常大时,服务器往往不堪重负。而用户下载完毕后就和服务器没有任何联系,其它用户也无法从以前用户下载的版本得到任何帮助。

BitTorrent和“种子”的诞生

就在Napster二审败诉的当年,纽约州立大学布法罗分校的辍学生布拉姆·科恩(Bram
Cohen)编写了首款BitTorrent客户端,其主要依靠的是BitTorrent内容分发协议,这比Napster更为细致。

BitTorrent协议允许用户把文件分解成许多许多小块并给每一个碎块生成一个标识码,每个用户可以分别从不同的其他用户处下载一个个小块,最终依据标识码拼成完整的一个文件。

举个例子吧:一列火车10节车厢,每节车厢有100个座位,那就是满载的话是1000名乘客。这些乘客每人都有自己的名字,自己的座位号,凭票上车,分别从不同的车厢入口上车,直到坐满(即下载完成)。然后到站时下车也是分别从不同的车厢出口下车,从火车站不同的出口离开,最终各自回到自己所在地门牌编号皆不同的家中(即分布式上传)。每个BitTorrent用户都是一个微型的服务器节点,在自己下载的同时也成为让其他用户下载的服务器。
“人人为我,我为人人。”

发展到最后BitTorrent不再需要索引服务器的支持,只要有完整文件的标识码,即可开始加入分享网络,每个BitTorrent用户自己既是服务器又是客户端,想分享什么文件了,只需要按统一规则给文件制作完整的标识码,再把标识码发给其他的BitTorrent用户即可——

这就是你们求的BT种子。

美高梅4858mgm 3BitTorrent软件界面。别问了,那些wmv结尾的是正经影片。图片来源:wiki.smu.edu.sg

当然,和Napster类似,BitTorrent也面临这样的问题:版权和用户上传的违法文件。

随着互联网技术的不断发展,P2P(Peer To
Peer,点到点)技术逐渐成为文件交换和下载的成熟技术。P2P技术将互联网“自由、平等、互助、共享”的精神发扬光大。

BitTorrent的相关案件

BitTorrent发明人布莱姆·科恩声称他从来没有侵犯过用BitTorrent来传输的文件的版权,事实上也从来没有被正式起诉过。但BitTorrent的用户和BT种子搜索引擎均曾被起诉。

香港海关曾指控陈乃明在家中上载3套未经版权持有人授权的电影。陈乃明的辩护律师指出陈的行为只是使档案“可供取用”,而非“发布”。此案的终审法院法官认为,复制行为不一定牵涉实物,也不同意陈乃明声称过程被动的讲法。因为他一直让电脑在线,又启动BT软件,确保下载者得到完整电脑档案,犹如有人提供汽水机,由市民付款买汽水一样,属于主动发布的侵权行为。

BT种子搜索引擎ISO
Hunt也曾被美国电影协会所起诉。ISO
Hunt运营者加里·方表示,ISO
Hunt与谷歌一样,只是提供了一种检索服务。但法官威尔逊仍然裁决ISO
Hunt的行为违法。他表示,被告的技术无非是“新瓶装旧酒”,ISO
Hunt与Napster和Grokster等传统P2P分享网站无异,只不过BT技术更加高级,而且明显增加了侵权的可能性。这是美国法官首次裁定BT搜索引擎非法。

美高梅4858mgm 4BitTorrent的原理简图。制图:大炮小白兔

最早的P2P技术是音乐交换软件Napster,目前最流行的P2P文件交换技术则是BT(BitTorrent,比特流)。越来越多的人使用BT共享和
下载软件,互联网上提供“种子”的网站及BT客户端软件随处可见,但是互联网上有关架设BT服务器的文章大多针对Windows平台,而且往往没有涉及
BT原理,这使得希望使用Unix/Linux平台架设BT服务器,并提供“种子”下载的管理员们无从下手。本文从应用者角度讨论BT原理,并详细说明如
何在Unix/Linux平台下架设一台BT服务器,并提供“种子”下载服务。

P2P在视频网站的应用雏形

虽然仍有许多问题,但BitTorrent解决了过去从同一个服务器下载的用户越多,带宽越拥挤,下载速度越慢的问题。反而形成了“同一个文件下载用户越多,微型服务器越多,下载速度则会变的越快”的现象。如此以来整体互联网的下载速度岂是成倍提升,简直是从自行车到飞机的跨越。

随着BitTorrent协议的推广,越来越多的技术人员发现了P2P技术的发展前景,也看到了互联网发展的曙光。过去由于服务器带宽成本问题无法提供的在线流媒体视频播放,得益于P2P技术而得以实现。而为了能够最大程度的获得商业利益,同时又不惹上官司,大部分网站都会采用会员制,必须注册会员才能上传视频。

这里是上传到视频分享网站的服务器上,并不是直接通过P2P技术进行分享。经过网站审核后,才可以发布到视频分享网站。这里也会显示上传人,也就是责任人。只有在用户打开网页的时候视频才会开始播放,刚开始播放时也是直接使用传统方式从网站服务器进行下载播放,这时候基于文件分块标识的技术开始作用,即使没有把视频文件完整下载,也可以开始播放。**这个未完成下载就已经可以播放的文件,被称之为“缓存文件”。**

当播放到一定程度时,也就是缓存文件达到一定大小时,P2P技术开始起作用,将已下载的缓存文件中的小块上传,提供给其他用户下载。这就是在刚打开在线视频会提示“正在缓冲”然后非常卡顿的原因。然后多看一会儿就不再卡顿时就进入了P2P技术开始起作用的阶段,周围缓冲量多的用户开始为你提供下载,而你同时也开始为其他用户提供下载,达到一定的用户数量,用户数量越多,速度越快,就越流畅。

BT原理:

P2P应用的发展和改良

刚打开在线视频的“正在缓冲”,这一开始的卡顿也是非常影响体验的,于是缓存服务器技术出现了。视频分享网站事先在某些用户量较少的区域布置较大带宽的缓存服务器,其中只缓存最近时段点播最多的视频文件。然后,这个视频分享网站吸引了越来越多的用户,用户越多,速度就越来越快,看视频就越来越流畅。

然后视频分享网站服务提供商逐渐发现仅仅是在网页看单个视频时使用P2P技术,远远达不到某些高清视频的播放速度需求,如果要再提高,那么缓存服务器成本及带宽成本也会随之提高。于是服务商开发了自己的P2P客户端

它会将用户看过的视频缓存到用户的计算机里,在使用客户端看视频的同时,也会将看过的视频缓存文件进行上传,给其他客户端用户提供下载。

这些影片不仅仅限于当前观看的,也包括以前观看过缓存过的视频文件。客户端会开启独立的p2p传输进程,即使在未开启客户端时也会保持运行。用户在使用客户端观看视频的同时,也成为了其他用户的微型服务器,使用客户端的用户越多,微型服务器也就越多,下载速度也就越快,播放也就越流畅。

最初各个视频分享网站之间是互相敌视的,装了这家的客户端,再装另一家的客户端,那么两家看视频都会出现严重卡顿。但是服务商们很快意识到了问题,开始允许自己的客户端识别对方的缓存文件,并给自己的用户传输,于是更具规模的P2P分享网络诞生了。

P2P作为一项技术,其本身并不可耻。但失控的P2P分享网络可能引发一系列问题。目前最著名的案例,就是快播了。

美高梅4858mgm 5快播一案掀起轩然大波,这和它使用的技术有关系吗?图片来源:wikipedia.org

BT是BitTorrent(比特流)的简称,BT的特点是用户下载的同时,也在为其它用户提供上传,所以不会像FTP服务器那样随着用户数的增加而导致下载速度降低。恰恰相反,对于BT下载而言,下载的人越多速度越快。

P2P视频软件的相关案件:快播

快播的确使用的是P2P分享式传输技术。快播并没有建视频分享网站,也就是所谓的自己本身不制作不提供视频文件,只是一个视频分享的工具。所以快播软件实际更接近于BitTorrent,甚至可以直接打开BT种子文件进行下载。任何一个快播软件用户都可以直接分享一个种子文件,然后由其他快播用户来互相传输。所不同的是,快播软件在提供分享式传输的同时,还可以进行视频文件播放。

不过谁分享了什么,谁播放了什么,快播自己并不能控制因为快播最初没搞会员制,不注册都能使用快播来分享视频文件,任何人只要下个快播软件就能成为快播的微型服务器,在观看视频的同时给其他用户提供视频文件下载。

任何有点网龄的人都会知道,“种子”是一个多么“神奇”的东西。而P2P的一大特点就是用户越多,流畅资源越丰富。于是许多盗版和色情视频网站站长直接把快播拿过来开始用于分享自己网站上的非法视频,快播立刻就火了。2008年底快播的单日用户量突破了1500万,后期活跃用户总量大概是4亿。对于一个软件来说,破亿的用户量是怎样一种情况? 

仅凭快播员工,这破亿的用户根本无法管理无法控制。然后网警就开始介入,快播这时候发现自己的P2P分享播放软件,已经完全处于一种失控的状态,开始试图改变。快播更新版本开启了会员注册审查制度,同时建立了与网警相连接的110系统。

但快播已经失控了。

快播发布新版本,用户并不买账,依旧用旧版本。这些用户里也有懂技术的程序员,甚至有人将快播早期的客户端修改之后使用,完全跳过更新指令,照样免费分享。甚至有些色情网站的站长,直接修改出了自己网站版本的快播软件。这个巨大到恐怖的分享网络,想一朝一夕立即改变现在的状况,除了关门,恐怕再也没有更好的办法了。快播完全没意识到恢复控制需要下多少功夫,花费多少时间。然后,有关部门等不及了要求全面封禁。

美高梅4858mgm 6

快播一案的思考

我们注意到,在庭审中有两项关键证据:四台服务器和2万多淫秽视频文件。但这就可能有问题了:之前不是说P2P是把所有用户作为微型服务器吗,为什么自己也有服务器?而且快播自己也不需要储存缓存文件啊?那么在庭审中作为关键证据那四台服务器是什么?认定的2万多淫秽视频文件又是什么?

如果说这四台服务器是用作初始种子发布使用,那么对于已拥有4亿用户,拥有4亿微型服务器的快播来说,这似乎完全没必要。 要是个新开的色情网站站长的话还是有可能的,不过没有哪个站长会把片源文件都放到本地同一组服务器里。

缓存文件也是。有人看有人用有人下载才会缓存,没人看的片,缓存它又占带宽又占存储,缓存它的意义何在?那么这几台服务器是仅面向本区域的缓存服务器吗?很难想象这个区域的用户没事儿整天都在看淫秽视频。

不过庭审里,我们能发现两个关键词:“网联光通”和“小区宽带”。其实早年经常去网吧的都知道,有一段时间,各大网吧为了网速会购置一台服务器,上面放满电影什么的让用户看,免的用户再开BT下载占用别人玩游戏的带宽。也许这四台服务器也是此种功能?

无论是何种原因,随着互联网的发展以及信息数据交流速度的提高,技术也再不是闷头憋在小黑屋里做的事情了。(编辑:Jerrusalem)

传统的文件共享服务,如FTP、HTTP等工作原理如图1所示。这种方式随着用户数的增多,对带宽的要求也随之增多,用户过多就会造成瓶颈,所以很多下载网站都有并发用户数的限制及下载速度的限制等。

而BT下载采用一种共享的方式来传输文件,其工作原理如图2所示。

美高梅4858mgm 7

BT下载首先在第一个共享端(或称为Downloader)把一个文件分成N个部分,A用户可以从Downloader上随机下载第M个部分,B用户可以
在Downloader服务器随机下载第K个部分。而A用户的BT客户端下载程序会根据情况从B用户下载第K个部分,同样的,B用户也可以从A用户下载第
M个部分,通过这种方式减轻服务器端负荷,加快用户的下载速度。例如,C用户直接从服务器下载,速度可能只有几Kbps,而从A、B用户处下载,速度将快很多。用户在下载的同时,也在上传文件,在享受别人提供下载服务
的同时,每个用户也同时在上载并贡献自己的带宽,所以造成使用BT下载服务的人越多,大家的速度就越快。BT下载的优越性就在这里体现。

原理的通俗版本解释,参考:

BT组成:

从构建BT服务器的角度来看,整个BT系统由四个部分组成。

1.BT客户端

BT客户端是安装在用户PC机上的客户端软件,目前有很多BT客户端可用,这里推荐BitComet()。它是一个类似FlashGet界面的BT下载客户端软件,简洁易用。

BitComet在下载的同时,还负责将下载的内容共享给其它用户,这个过程完全不需要用户参与。如果不知道如何使用BT客户端下载,那么安装BitComet后去访问BT中国网站,试一试就知道如何使用了。

2.BT“种子”文件

BT“种子”文件是一个名为.torrent的文件,它是由第一个发布共享文件者根据源文件制作出来的源文件的指纹信息。“种子”文件很小,一般在几十
KB到几百KB之间,其中包含文件所在的BT端地址信息及目标文件的校验码。当BT用户获得“种子”后,直接在BT客户端软件中运行“种子”文件,BT软
件将根据“种子”文件包含的信息,自动查找到该文件所有可用的下载源,并进行下载。

详细结构分析,参考:

3.Tracker

使用BT服务不需要指定服务器,虽然在BT服务里面仍然有服务器的概念,但使用BT服务的人并不需要关心服务器在哪里。BT服务器称为Tracker,准确地说,Tracker是指运行于服务器上的一个程序,这个程序能够追踪到底有多少人同时在下载同一个文件。BT客户端连接上Tracker服务器,就会
获得一个下载人员的名单,根据这个名单,BT客户端会自动连接网络中其它节点进行下载。

4.种子

BT服务把提供完整文件的用户节点称为“种子”(Seed),正在下载的用户称为客户(Client)。某一个文件现在有多少“种子”、多少“客户”是可以看到的。只要有一个“种子”就可以放心地下载。当然,种子越多、客户越多的文件下载的速度会越快。

如果发现“种子”数为0,那么就不需要去尝试了。当某个用户下载完成后,如没有选择关闭,其它人就可以从该用户处继续下载文件。所以当下载的人多起来,通常做“种子”的人也会随之增加,下载速度也会加快。

二、配置安装

安装前先确定我们已经安装了能够解析html的中间件。如apache,nginx都可以

1.下载BT

BitTorrent是一个开源免费软件,它使用Python语言编写。Python是一种脚本语言,这意味着BitTorrent具有出色的跨平台特
性。用户不仅可以在Windows中使用BT,也可以方便地在Linux/Unix平台下使用。BitTorrent的官方网站地址为,当前最新版本为3.4.2。

2.安装BT

在安装BitTorrent以前,首先要确保系统已经安装有Python版本: