刘军红:Bitcomet里的DHT已连结数是什么意思?
武斌的回答:
已连接数就是你在DHT网络哩的有多少DHT可用链接 BT也嵌入了DHT网络 FAQ:什么是基于Kademlia技术的公有DHT(DistributedHashTable)网络? 比特精灵(http://www.bitspirit.com.cn/)从v3开始支持最新的BT技术:基于Kademlia技术的公有DHT网络。通过DHT网络,BT用户可以在不依赖传统的种子服务器的情况下进行正常的下载上传(Trackerless)。那么到底什么是Kademlia技术,什么又是公有DHT网络呢? 简单的说Kademlia只是一项技术准则(通常称其为第3代P2P技术),DHT则是该技术的具体实现。(如eMule中也有基于Kademlia技术的KAD实现)。KademliaisaP2PoverlayprotocoldesignedbyPetarMaymounkovandDavidMazières,fordecentralizedpeertopeercomputernetworks.Itspecifiesthestructureofthenetwork,regulatescommunicationbetweennodesandhowtheexchangeofinformationhastotakeplace.KademlianodescommunicateamongthemselvesusingthetransportprotocolUDP(seeOSImodel).KademlianodesstoredatabyimplementingaDistributedHashTable(DHT).OveranexistingLAN/WAN(liketheInternet)anew,virtualnetwork,iscreatedinwhicheachnetworknodeisidentifiedbyanumber("NodeID").Thisnumberservesnotonlyasitsidentification,buttheKademliaalgorithmusesitforfurtherpurposes.具体的技术细节这里不过多描述,有兴趣的用户可以自行参考相关的资料。那么,为什么要在BT里引入基于Kademlia的公有DHT网络?在传统的BT下载里,所有的种子文件都必须指定一个或多个种子服务器,即通常所说的Tracker或Announce地址。而一旦该种子服务器当机或由于其它原因停摆(比如:前不久我们的前服务商违约,强行拔掉我们的服务器的网线),BT用户很可能就无法完成该种子文件的上传与下载。在传统BT下载里,还有如下情况:有两个完全相同的种子文件,但是由于指定了不同的Tracker,所以不同Tracker的用户之间无法进行下载与上传,从而不能充分体现BT的下载/上传效率。而引入公有DHT网络后,即使种子服务器当机(或者说根本不需要种子服务器的参与),BT用户仍然可以通过DHT网络来获取连接,从而实现下载与上传。那么这些连接信息是保存在哪里的呢?简单来说,这些连接信息保存在根据一定的算法挑选出的DHT网络参与者(即DHT节点)之间,也就是说,一旦你加入公有DHT网络,你就会有一个ID(该ID只是程序生成的、虚拟的、完全随机的ID,与你的实际个人信息没有任何联系,请完全放心),根据一定的规则,你需要负责维护一部分种子文件的连接信息,相当于你同时也是一个轻量级种子服务器。由于涉及到一些数据通信流量,可能会对你的网络产生轻微的负担或影响,不过,与加入公有DHT网络带来的回报比起来,该影响是完全可以忽略的,只有在一种情况下才可能会对你的网络产生比较大的负担:你负责维护的种子文件正好是一个非常非常热门的种子,比如有几千甚至上万的BT用户在下载(如果遇到这种情况,我强烈建议您去买彩票)。当然,从心理回报的角度来看,你正在为几千甚至上万的BT用户提供桥梁作用,这是一件值得骄傲与自豪的事。所以,我强烈建议你打开比特精灵中的公有DHT网络功能(默认打开),当然,如果你的网络条件比较脆弱或你的服务商对你做出了很多限制(容易断流),你也可以关闭比特精灵的公有DHT网络功能(个人设置-其它选项-允许比特精灵...)以防止速度下降。前面说到了连接信息是在各个节点之间负责维护的,那么是不是每个BT用户所连接到的节点越多越好呢?其实不是的,因为连到越多的节点带来的网络流量和网络负担都会增加,通常情况下,拥有50个可靠节点或150个可靠节点与拥有上千个节点没有区别,都能快速、准确的定位所需要查找的节点与连接信息。所以,通常情况下,当程序查找到一定的节点后(如100个节点)就不会积极查找新的节点。 那么比特精灵的DHT网络功能与其它BT客户端的DHT网络功能有什么区别呢? BT中的基于Kademlia的DHT网络功能是由BitTorrent(Python版)4.1.0开始引入的,比特精灵的DHT实现完全兼容BitTorrent的DHT实现,并且,由于比特精灵是用C++写就的并经过了相当的算法优化,在程序性能、运行效率、节点定位效率上要好很多。另外,比特精灵还通过DHT网络全面提升了比特精灵的既有功能,比如种子市场,此外,比特精灵甚至于不要求BT发布站点必须提供种子文件的下载(能大大降低发布站的流量压力),而可以只提供一个类似于http://Kademlia/..(40B的哈希Hex串)....的链接即可(提示:在比特精灵里选中一个任务后通过右键菜单的“拷贝DHT链接”可以提取种子的链接)。 简而言之,DHT网络的引入使得BT不再必需种子服务器,可以说是天下从此无服,但从更深层次的角度来说,应该是天下从此无人不服。