《Web 平台区块链开发》1.2. P2P 与 BT 技术

《Web 平台区块链开发》1.2. P2P 与 BT 技术

《Web 平台区块链开发》github.com图标

什么是 P2P

在中本聪的比特币白皮书标题中,就出现了 Peer-to-Peer 一词,通常缩写为 P2P,中文叫做“点对点”,顾名思义,就是不通过中心化服务器实现的通信。手机上的通讯 App 作为客户端,通常需要将信息发送到 App 开发厂商的服务器,再由服务器发送到目标手机的客户端。而使用 P2P 技术的通讯软件,本身既是客户端也是服务端,发送信息时,通过某种搜索技术直接找到信息接收目标直接发送。

Napster 是首个将 P2P 技术发扬光大的应用。1997年,年仅17岁的肖恩·范宁(Shawn Fanning)刚刚步入大学,那个年代的网络带宽很低,互联网上的 MP3 音乐没有统一的搜索引擎,下载一首想听的歌十分困难,范宁从问题中找到了需求,他放弃了自己的专业课程全身心投入到汇聚 MP3 音乐链接的网站的开发中,1999年6月 Napster 面世,并在短短的几个月内吸引了数十万用户。在随后的更新中,范宁使用 P2P 技术让用户之间互相传递 MP3 音乐文件,Napster 的服务器只记录在线的用户和其下载的音乐,需要下载音乐的用户通过 Napster 搜索到拥有该音乐文件的用户,通过 Napster 客户端提供的 P2P 方式直接下载音乐。

Napster 这种用户之间 P2P 互传的方式大大节约了服务器的存储和网络资源,用那个年代的互联网资源也能服务爆发式增长的数十万用户。虽然 Napster 随后陷入到音乐版权纠纷中并且衰退,但也证明了 P2P 技术所带来的可能性。


BT 技术开启海盗时代

时势造英雄,21 世纪初爆发式增长的多媒体数据规模和互联网用户数,与当时的网络带宽形成了不可调和的矛盾。Napster 使用 P2P 技术解决了 MP3 文件的下载难题,但还有视频、游戏这类更大的文件需要点对点技术的解放,这个时候,一个英雄站了出来。

1975 年,布拉姆·科恩(Bram Cohen)出生于纽约的一个普通家庭,拥有惊人天赋的他5岁时就用父亲的计算机学习 C 语言,18岁进入大学,痴迷计算机的他主攻网络技术。像很多天才一样,智商奇高性格怪异,布拉姆判断自己得了自闭症,在大学就读2年后布拉姆辍学专心开发程序。之后的几年布拉姆混迹于多个大大小小的公司,但工作内容始终不如他所意。2001年4月他辞职在家专心设计 BitTorrent 软件,区别于传统的所有用户从一个服务器上下载,用户使用这个软件下载资源的同时也在上传资源给其他下载的用户。最初布拉姆使用几部色情电影供人们免费下载以测试程序的效果,BitTorrent 第一次得以大规模推广是在2003年,红帽公司(ReHat)发布 Red Hat Linux 9 的时候,服务器被用户挤爆,一个下载到完整资源的用户使用 BitTorrent 把文件发布到 BBS 里,人们蜂拥而至,短短三天时间网友交换了高达 21150GB 的数据。BitTorrent 的前景超过了任何人的预期,短短两年时间就成为了资源发布和下载的首选软件。

BT 下载的流程与 Napster 有几分相似,但更通用:

  1. 资源发布者对资源生成哈希码,添加资源名、文件块大小、Tracker 服务器地址等元信息,生成 .torrent 种子文件。
  2. 发布种子文件。
  3. 用户下载种子文件,使用 BT 客户端打开。
  4. 下载客户端根据种子文件请求 Tracker 服务器得到做种列表。
  5. 下载客户端与做种客户端进行 P2P 通信,下载文件块。
  6. 有完整的文件块后,下载客户端也在做种进行上传。
BT 下载图解

与此同时,在当时互联网并不发达的中国,BT 下载也悄然兴起。2004年,笔者在上小学刚接触互联网,当时使用比特精灵(BitSpirit)下载容量很大的游戏。之后的一两年国内也一度风靡了多个符合 BT 协议的国产下载工具,包括网络蚂蚁 [1](NetAnts)和网际快车(FlashGet)。网络蚂蚁会把传输的文件块进行可视化,每个蚂蚁代表点对点连接的一名上传的用户,下载完一个块蚂蚁就爬一格,笔者当时常常沉迷于看蚂蚁爬格子。到了 2006 年中国最热的 BT 下载工具是迅雷。如今,腾讯的 QQ 旋风、个人开发者开发的红极一时的网络蚂蚁和网际快车等 BT 下载工具都已成为历史的浪花。

网络蚂蚁

BT 技术带来的便捷性催化了盗版视频的传播,BT 站点的火爆给各个国家的正版电影市场带来沉重打击。随着网络带宽的提升,在线视频的清晰度得到极大改善,在线看电影、电视剧逐渐成为主流渠道,同更早的 Napster 一样,BT 站点们在正版化潮流中被关停。不可否认的是,BT 下载在互联网早期大大降低了了视频和大型游戏的流通成本。如今,BT 下载依然作为高清视频爱好者的秘密武器在传播。


协议标准化、DHT 与 PT

BitTorrent 作为基于 TCP/IP 协议上层的应用协议,由 BitTorrent 社区协会 [2] 进行维护,所有相关扩展协议和提案都称为 BEP(BitTorrent Enhancement Proposals),每个 BEP 都有特定的编号。每个人都可以对 BT 协议进行扩展,将扩展的协议交由社区委员会进行审核,审核通过后收纳为 BT 协议的扩展协议,而后再成为标准协议的一部分。

分布式哈希表 DHT(Distributed Hash Table)是 BT 的扩展协议,在不需要 Tracker 服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个 DHT 网络的寻址和存储。

PT(Private Tracker)也是 BT 的一个扩展协议,其最大的特点是可进行私密范围内的下载,它可统计每个用户的上传及下载流量。从技术上可以认为由 Tracker 服务器对用户的下载上传进行统计,上传流量不够则会禁止用户下载,在一定程度上可以防止只下载而不上传的 “吸血” 用户存在。PT 最大的问题是资源不公开导致资源容易断档(无人做种),PT 站点会用各种激励的措施尽可能减少文件断档,例如即使没有其他用户在下载,开启客户端对资源进行分享也能够得到上传奖励。中国部分大学有自己的 PT 站点。


P2P 与区块链

区块链中的节点通信都属于 P2P,因此诸如地址搜索的问题都可以参考 BT 的解决方案,BT 技术毫无疑问是区块链的前置技术。

有趣的是,BT 技术的发明者布拉姆发起了区块链项目 [3],该项目与硬盘空间有关,也算继承了 BT 技术的特点。笔者加入该项目社区,布拉姆经常在社区与社区成员交流,想必他的自闭症有了很大缓解。


[1] 网络蚂蚁开发者 洪以容:蚂蚁背后的故事
[2] BitTorrent 社区↩
[3] BT 发明人 Bram Cohen 发起的区块链项目
发布于 2018-04-08

文章被以下专栏收录