评论:新版Bitcomet发布,DHT加深反盗难度

本文已发表于《电脑商情报·家用电脑》

2005年6月8日,著名的BT下载软件Bitcomet升级到版本0.59。这次的升级与以往不同,它包含着里程碑式的改变——其开始“支持连入公用DHT网络,实现无Tracker下载”。联想到此前另一著名BT客户端Azureus从2.3.0.0,以及BT官方的BitTorrent从Beta 4.1.0开始使用的"trackerless" torrents,BT下载已经进入崭新的DHT时代。

那么,DHT究竟为BT带来了什么?我们采访了Bitcomet的作者灿烂微笑,并将在此文中加以剖析。

一、实战新版Bitcomet

目前国内用户使用最多的BT客户端就是Bitcomet,因此我们在这里也以它为例讲解DHT网络的使用。

默认情况下,无须做任何设置BitComet即可自动连接并使用DHT网络。启动软件,它会使用和TCP端口号相同的UDP端口进行DHT网络连接。此时,用户可以在Bitcomet的状态条上得到DHT网络连接的状态。

当然,如果要顺利使用DHT功能,除了连接DHT网络之外,还需要文件的发布者在制作种子的时候就打开DHT选项。单击菜单“文件”-“制作Torrent文件”,在弹出的窗口中,就可以调节是否让种子使用DHT网络,共有三种选择。

“使用公用DHT网络(推荐)”表示种子同时使用Tracker服务器和公用DHT网络来寻找用户,列表框中可以填写传统Tracker服务器地址或者DHT网络节点地址,也可以只填其中一种,也可以什么都不填。什么都不填代表仅仅使用DHT网络,自动连接节点;只填写DHT网络节点代表仅仅使用DHT网络,而且默认连接这几个填写的节点;只填写Tracker代表同时使用Tracker和DHT网络,自动连接Tracker服务器和节点;同时填写Tracker和DHT网络节点代表同时使用Tracker和DHT网络,而且默认连接这几个Tracker服务器和节点。总之,此种方式下的BT种子将采取尽可能多的方式进行连接,因此建议种子制作者保持这个默认选项,列表框中像往常一样填写一两个普通的Tracker服务器地址。

另外两个选择:“不使用公用DHT网络(优先使用Tracker服务器)”表示在不能链接上Tracker服务器的情况下使用DHT网络功能,如果能链接上Tracker服务器,就不使用DHT网络功能;“仅从Tracker服务器获取用户信息(禁用DHT及用户来源交换)”则代表禁止使用公用DHT网络以及用户来源交换来寻找用户,完全禁用DHT网络功能,相当于Azureus软件的“安全Torrent”。

如果你不想用Bitcomet的DHT网络功能,则可以在“选项”-“高级设置”中去掉“自动添加DHT网络作为备用Tracker”,并在其下的“网络连接”中去掉“允许加入到公用DHT网络”前面的勾。

在Azureus和BitTorrent Beta中制作支持DHT功能的种子,以及使用DHT网络同样简单,只不过它们的DHT网络功能都没有Bitcomet这么强大。因此Bitcomet可以同时支持DHT网络和Tracker服务器,而其它两种软件同时只能支持这两者之一。

有关BT之DHT网络的使用,还请参看我的另外一篇文章--实战BT之DHT网络。

二、DHT技术让反盗版更加困难?

在多数人眼中,任何P2P技术的改进都与版权的博奕脱不了干系,DHT网络能够引起如此注目亦是如此。

确实,BT采用DHT网络后,反盗版将变得更加困难。因为在此之前,用户进行BT下载时,必需首先连接上Tracker服务器,根据所获得的正在进行下载和上传的用户列表,才能够进行正常的文件交换。这样的话,只需封禁掉提供Tracker服务的网站,便可以截断盗版传播的途径。DHT网络则不同,由于此时互联网中任何一个运行BT客户端的用户都可以作为DHT网络中的节点,因此即使封禁掉那些提供Tracker服务的网站,用户还是能够通过全球范围的逻辑DHT网络分享文件,反盗版就无从谈起。除非让世界上的人都不上网,或宣布使用BT软件为重罪。

不过,在我们对Bitcomet作者的采访中,他否认了DHT网络是为了更好的传播盗版。他指出,DHT网络的“主要优势是稳定性,本来Tracker服务器人多了很容易宕机,但是DHT网络没有这个问题,再多的人也没事”。

这一切还是印证着那句话——“技术从来都是一把双刃剑”。在批判BT助长盗版气焰的同时,我们也应该看到,BT也正在日渐成为合法作品传播的途径。由于无法承受大流量的访问,一些免费和共享软件(如Foobar2000等)开始采用BT方式分发,大型的合法软件——Linux系统,更是将BT作为主要的分发渠道。这种良性的应用可能会为BitTorrent带来一定的法律保护,使BT下载商业化甚至合法化。

而随着DHT技术的采用,这种应用还将向纵深发展。虽然它加重了反盗版的难度,但也将使合法分发各种文件更加容易。事物就是如此辩证,但笔者相信P2P软件一定能够寻求到一个更加合理的应用。

三、主要优势在于稳定--采访Bitcomet作者“灿烂微笑”

Bitcomet 0.59发布笠日,我们有幸通过MSN Messenger采访了Bitcomet的作者“灿烂微笑”(网名),请他来谈一下使用DHT网络后的BT:

问:BT的各个客户端软件是从什么时候开始用DHT的?它与eMule中的Kad有何不同?
答:BitTorrent是5月份开始测试DHT的,Azureus比较早,但糟糕的是它们两个不互通。eMule中的Kad也是DHT的一种,不过它的实现协议与BT中的并不相同,所以不能互通。 Bitcomet中的DHT与BitTorrent是兼容的。

问:为何会出现不互通的现像呢?
答:开发者不同,而且在这个DHT问题上互相之间没有协调好,所以就成了现在这样。更糟糕的是Azureus的DHT代码很长,我却找不到协议文档。

问:对一个用户来说,它获得一个使用DHT网络的种子后,启动Bitcomet进行下载,这时软件是如何连接的?
答:用户打开软件以后就连入网络了,启动使用DHT网络的种子的任务后,Bitcomet就会在DHT网络中搜索。种子上如果有默认节点,那么可以帮助没有连入网络的用户通过那些节点连入网络,如果下载者已经联入DHT网络了,种子里填写的节点就不需要了。Bitcomet内置了2个节点,分别是node://router.bittorrent.com:6881和node://router.bitcomet.net:554。其实任何一个长期在线的用户都可以做个好节点。

问:如果这两个长期在线的内置节点出现问题时,是不是就连接不上DHT网络了?
答:不会,这个只是最初的连接用的,如果它们都失效了,那么1.曾经连上过DHT的用户保存了其他节点,所以只要不要很长时间不用,应该还可以连上;2.新的用户可以通过打开带有DHT节点的种子连入。

问:那么,DHT网络相比Tracker服务器来说,有什么主要的优势?是不是以前下载时,种子只是同时连接同一台Tracker服务器的下载者,而现在却可以搜索整个DHT网络中,得到更多的源?
答:主要优势是稳定性,本来Tracker服务器人多了很容易宕机,但是DHT网络没有这个问题,再多的人也没事。如果是单个文件的种子,确实也有你说的好处。

问:刚才你说Emule也用DHT,那么相比之下,BT协议在技术上的优势是什么呢?
答:应该说BT的DHT才刚开始,eMule应该测试了有1年左右了,BT的优势可能还是原来的吧,就是对新的东西分享比较快。

问:你是如何看待BT下载和软件版权问题的?
答:这个……有难度啊!BT本来只是一种不错的P2P网络技术,我觉得它的流行也代表了一种市场需要吧,说明通过互联网分发作品的可能的价值。虽然目前BT有些被滥用了,不过我想这种P2P技术应该能够寻求到一个更加合理的应用,就像Skype的创始人原来做的是Kazza一样。

问:再问一个读者关心的问题,你认为BT伤硬盘么?
答:软件刚出来的时候,没有任何缓冲,完全大范围随机地按16K来读写硬盘,所以确实对硬盘不好(不过要速度快的时候才有影响)。当然后来就在软件里面做缓存了,这个问题就基本不存在了。

问:最后一个问题,你自己经常使用BT下载吗?
答:我很久没用了(很出乎意料吧),不过感觉DHT很好玩,现在的乐趣更多是在编写软件上了。

附录

DHT网络

DHT的全称是Distributed Hash Table,即分布式哈希表技术,是一种分布式存储方法。这种网络不需要中心节点服务器,而是每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。和中心节点服务器不同,DHT网络中的各节点并不需要维护整个网络的信息,而是只在节点中存储其临近的后继节点信息,大幅减少了带宽的占用和资源的消耗。DHT网络还在与关键字最接近的节点上复制备份冗余信息,避免了单一节点失效问题。

形象地,我们可以把整个DHT网络想象成一个大城市,那么每个客户端,就好比城市里各个角落的地图,上面绘制了附近区域的地形情况,把这些地图一汇总,城市的全貌就出来了。

而DHT所采用的算法中最出名的是Kademlia,eMule早在一年多前就开始采用,Bitcomet、Azureus和BitTorrent只是步其后尘,同样使用Kademlia算法的DHT。不过它们各自的实现协议不尽相同,因此不能相互兼容(BitComet与BitTorrent兼容,Azureus更像eMule,但与其它都不兼容)。

Tracker

Tracker是指运行于服务器上的一个服务程序,也称Tracker服务器。这个程序能够追踪到底有多少人同时在下载或上传同一个文件。客户端连上Tracker服务器,就会获得一个正在下载和上传的用户的信息列表(通常包括IP地址、端口、客户端ID等信息),根据这些信息,BT客户端会自动连上别的用户进行下载和上传。

相关网站:

Bitcomet:http://www.bitcomet.com
BitTorrent:http://www.bittorrent.com/
Azureus:http://azureus.sourceforge.net/
eMule:http://www.emule-project.org
Kademlia:http://en.wikipedia.org/wiki/Kademlia

Technorati Tags: , , , , ,