DHT网路的介绍
DHT网路的介绍
评论:新版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用户端会自动连上别的用户进行下载和上传。