您的位置:首页 > 理论基础 > 计算机网络

BitTorrent网络中基于Kademlia协议到DHT无服务器泛互联网搜索软件推荐

2015-05-21 10:46 906 查看
本文转自 http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1515544



标题有点长,可能大家不理解什么意思,偶就慢慢地介绍一下,

        首先,大家对P2p网络现在应该是比较熟悉了,喜闻乐见的留邮箱求种子就是一种P2p下载的表现,那么现阶段最热门的P2p软件应该就是属于两类 (为Limeware和Frostwire默哀三秒钟)分别是Bt类软件和电驴类软件,分别是基于Bittorrent协议和Ed2k协议,在一开始,这 两类协议都有比较大的局限性,特别是他们都是依托服务器而存在,Bt下载必须有一个Bittorent Tracker Server来找到其他Peer(分享者),而电驴类软件也需要一个服务器列表,然后连接上服务器列表里的任意一个服务器,才能找到其他的文件分享者,下 载到自己所需的文件,最著名的电驴服务器列表网址在这http://ed2k.2x4u.de/list.html

       那么这种必须基于服务器的下载软件,局限性也就很明显了,一旦服务器出问题,被人为干预或软硬件方面出问题不能用的时候整个P2p网络也就会完全瘫痪,因 此电驴类软件,作为P2p软件中的先驱,一直在寻找没有任何特定服务器,不需任何特定Ip支持的一种资源搜索和下载方式和解决方案,曾经一度出现的 Overnet网络,不知道大家对这个还有没有印象,Overnet是最初的Edonkey2000开发者团队开发出的一款早期不依赖服务器的Ed2k下 载软件,就是对这种方向的下载软件的一个里程碑式的探索,
        
       很可惜,早期的Overnet在下载这块还是沿用的古老的Edonkey2000的代码,下载速度和时不时断流是硬伤,然后它的后继者电骡Emule由于 在下载模块大大优化了下载效率而迅速占领市场取代了Edonkey的位置,中国用户熟知的Verycd电驴其实就是一个挂了电驴名义抄着电骡代码的一个超 级伪电驴软件,而跟它宣传的“官方”一毛钱关系也没有,不论是电驴还是电骡,官方网站都是国外网站,恩,扯远了拉回来,总之,“电骡”由于优化了它的前身 “电驴”的下载机制,而受到广泛流传和使用,而在无服务器文件分布方面,它更是设计出了经典的Kademlia协议(具体关于Kademlia协议的技术 探讨,大家可以维基百科),模糊地来讲,这种协议就是能让你连接到一个Peer(分享者)的时候能不断地连接到其他分享者,最终实现在无服务器条件下对整 个Ed2k网络完成资源的搜索和文件的下载。

        然后在电骡发展到一定阶段时,Bittorrent也就是Bt软件出现了,Bt软件使用的协议自称一体,跟Ed2k完全不一样,在下载机制上优势极 大,远远地抛开了电骡和电驴,很快后来者居上,占据了P2p网络的半壁江山,但是同样在无服务器下载上有较大缺陷,基本就是要有一个Tracker Server才能下载,一旦Tracker被封或Tracker主动拒绝连接(比如公共用户使用Pt的tracker时),就连接不到任何的Peer,才 就下载不到任何文件,

       于是聪明的开发者们也开始把目光转移到无服务器Peer连接协议上,而当时电骡的Kademlia协议已经成熟,于是Bt的开发者就开始照搬电骡上的 Kademlia协议来实现下载时无需服务器的真正Peer To Peer技术,当然完全照搬肯定会落人口实,于是就把原本的协议拿来改了改,主要是脱离出了一个叫Kademlia算法的技术,原先的Kademlia协 议肯定有很多内容,而算法是其中最核心的一部分,在网络的茫茫人海中如何找到下载同一个文件的人,算法居功至伟,
       
        于是Bt开发者就照搬了这种算法,然后补充其他的一些内容,构成了一个完整的协议,名字叫Dht协议(Distributed Hash Table),利用这个协议,Bt软件能做到在下载的时候不依靠Tracker服务器到连接到别的分享者,同时找到这些分享者正在下载的文件都是些什么文 件,一些早期很有名的Bt软件,如Bitcomets、比特彗星,在加入了Dht协议的功能后,就纷纷推出了喜闻乐见的“种子市场”功能,为广大宅男所喜 欢,但是早期的Dht网络刚刚问世,各种功能还不完备,最重要的一个功能,就是根据关键词搜索相应内容,却缺失,这一功能在基于Ed2k网络的 Kademlia协议中发挥得淋漓尽致,
       
       打开电驴软件,在上方选择Kad,连接,马上就能进行泛网络的特定内容的搜索,相对于传统的基于服务器的搜索,优势相当巨大,首先摆脱了对服务器的依赖, 又大大扩大了搜索结果,以前只能对单个服务器里存在的文件进行搜索,现在可以对几乎所有网络上(当然这里指的是Ed2k网络)存在的文件搜索,可以说,电 驴软件,至始至终,就是一个以内容分享和文件下载为诉求而诞生的软件,这里内容分享和文件下载开发者认为是一样重要,所以一旦在电驴中加入Kad功能,绝 对不会忽略它在搜索方面的价值体现,而与此相反,Bittorrent协议本身,却是一点也不注重分享的一种协议,相对而言,它更注重的是私密性,独立 性,和对下载速度单方面的高度关注,表现在只有获得了一个Torrent文件,才能对其进行下载,而没有办法在全Bt网络中搜索含特定内容的 Torrent文件,然后再下载,因此,即便是在引入了Dht协议的情形时,也沿袭了这一相对保守的特点,Dht只能告诉你已经存在的某个 Torrent,还有谁谁谁也拥有这个Torrent,并能给你提供数据,但是却不能告诉你针对某一特定关键词,在整个Dht网络中一共有哪些 Torrent包含的内容匹配这个关键词,并让你下载到这些匹配关键词的Torrent,
       
        因此对于这些Bittorrent的开发者来说,如果想开发出能基于关键词搜索Dht网络的搜索软件,也是相当头疼,只能采取一些迂回的办法,相当 复杂,我们称之为“Dht网络爬虫”,就是一点点爬,从各个Peer节点中收集可用的“磁力链接”(磁力链接和Torrent文件总是一一对应的在Dht 节点信息中为了节省容量,都是放的Magnet链接也就是Torrent文件Hash信息)下载Magnet链接,得到Torrent,解析 Torrent文件,得到有关“标题”、“描述”、“文件名”等信息再归纳汇总,建立mdb或sql数据库,然后再做相关的数据库查询接口,当然建一个很 大的数据库必须要有空间支持,也就是钱支持,然后在做前端的客户端软件,也可以是网页,整个步骤相当繁琐。好吧这里偶已经尽量简略说了,具体请参照http://codemacro.com/2013/05/19/crawl-dht/, 总之,这样一套步骤下来如果你有相应的服务器并且各部分代码都没有编错的话,你就能实现基于Dht网络的资源搜索功能,而就算已经实现的一些Dht搜索网 站和软件,资源更新的速度和覆盖率和准确性,各个网站和软件都会有所不一样,这是由于上面整个这一整套环节在实现过程中处理和优化程度的不一样而造成,优 化得好的,更新速度快资源丰富描述准确性高,而优化的不是很好的就会相反,
        
        说了这么多,下面才是重要的部分,上面提到,对于Ed2k网络中基于Kad协议的搜索,几乎所有的电驴类软件都做得很好,如果你要使用电驴类软件,偶推荐你使用Xtreme Mod Emulehttp://www.xtreme-mod.net/,这款软件在各类电骡Mod中也是属于佼佼者,本人常年使用,品质有保证,
       
        而如果你想尝试基于Dht网络的搜索软件,偶推荐客户端类软件可以选择Btresource(Bt磁力搜索大师),下载地址http://www.dhtsearch.com/,如果你图方便,想直接在网页上实现Dht网络全局搜索,偶推荐你使用http://bt.shousibaocai.com/,也是一个以更新速度而驰名的好网站

                                                                                                                           By Asfrim 2014.5.31
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: