成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用.NET開發的磁力搜索引擎:Btbook.net

開發 后端
去年10月份開始研究相關的協議與資料,中途亂七八糟的事情差點沒堅持下來,寒假里修修補補上禮拜把Btbook發布了,經過社交網絡的推廣之后,上線第三天UV就達到了兩萬多,也算是對這幾個月工作的一點肯定吧。

去年10月份開始研究相關的協議與資料,中途亂七八糟的事情差點沒堅持下來,寒假里修修補補上禮拜把Btbook發布了,經過社交網絡的推廣之后,上線第三天UV就達到了兩萬多,也算是對這幾個月工作的一點肯定吧。

如果你想下載對應的文件,電腦里面需要安裝一款支持磁力鏈接的軟件,例如迅雷,QQ旋風,BitComet等。

DHT Protocal

一個種子主要包含元信息(文件標題、文件大小、文件列表等)和Tracker服務器信息,每當一個用戶想要下載一個文件,客戶端會先詢問Tracker服務器,目前有哪些電腦正在下載這個文件,這些電腦被稱為“peer”,然后客戶端會向這些peer分別請求文件的各個片段,等每個片段都下載完成之后再組合成一個完整的文件,至此整個下載過程完畢。

由此可見,Tracker服務器相當于提供了一種“路由”服務,在整個下載過程中揮舞著指揮棒。但近年來由于打擊盜版等原因,一些Tracker服務器開始陸續關閉,沒有Tracker用戶還怎么用種子下載文件呢?后來bt協議進行了擴充,添加了DHT(Distributed Hash Table) ,它把Tracker的路由服務分散到了BT網絡中的每個節點,那么一個種子由哪個或哪些節點負責路由服務呢?

首先,每個種子都有一個對應的20字節的hash,這個hash有sha1算法得到,每個節點也有一個20字節的id,通常是隨機的20字節。如果這時有兩個節點A和B,怎么判斷這個種子放在A好還是B好呢?通過Kademlia算法計算種子hash和節點id的異或值(稱為距離),異或值最小(距離最近)的那個節點更適合提供這個種子的路由。

那整個網絡之間的節點是如何進行溝通的呢?根據DHT Protocal,主要有四種請求:ping,find_node,get_peers,announce_peer。這四種消息其實都是字典類型,要經過B編碼之后才能被對方正確的處理,使用UDP協議進行發送,這四種請求都會影響自己維護的一張路由表。

路由表

路由表主要用于存儲跟自己打過交道的節點信息,節點信息包含IP、Port和節點ID信息。而路由表由一個個的吊桶(Bucket)組成,在這里我簡稱它為“桶”。每個桶只能存儲一定節點ID在一定范圍的節點信息,并且桶的容量有限,一般規定一個桶只能存儲8個節點。起初路由表里面只有1個桶,這個桶能存儲的節點ID范圍在2^0至2^160,也就是任何節點它都能保存,等這個桶滿了之后怎么辦?——分裂。例如桶(min, max)分裂為兩個桶后,兩個桶能保存的范圍分別為(min, max/2), (max/2, max),原先的那個桶里面的8個節點也要重新分配到分裂后的兩個桶中。

偉大的毛主席說過,只要有一撥人,就分左中右。節點也是這樣,分為good、questionable和bad,“good”指過去15分鐘內該節點跟我有過聯系,如果15分鐘內該節點沒有跟我聯系過,它會變成“questionable”狀態,客戶端就會向它發出幾個ping,如果沒有收到回應,它就變為“bad”,可以把它從路由表中刪除。

KPRC Protocal

1. ping

注意這里的ping,不是你用cmd黑框框里面的ping。這個請求主要用戶詢問對方是否在線,比較簡單,主要用于維護自己路由表里面的節點。

2. find_node

顧名思義,find_node就是為了查詢節點,它根據對方節點的id詢問DHT網絡,收到這個請求的節點,會把自己路由表中與該節點距離最接近的8個節點返回。

3. get_peers

get_peers用于查找一個資源hash對應的peer,它詢問路由表中與該hash最接近的8節點,收到該請求的節點如果發現自己知道對應的peer,返回這些peer的信息,否則返回它自己路由表中跟該hash最近的8個節點信息。發起get_peers的節點在收到peer信息了,則跟peer建立連接,正式開始下載文件片段。如果收到的是節點信息,則選出這些節點中跟hash最近的幾個節點,遞歸的get_peers,直到發現peer。有兩種情況要控制這種遞歸的返回:1. 超時,在一定時間內如果沒有發現peer,則放棄。2. 已經發現了跟該hash最近的節點,但它沒有peer信息。

4. announce_peer

announce_peer用于在自己get_peers發現peers之后發送,發送的對象是先前回復過自己get_peers的節點,告訴對方自己發現了peer,你們也可以“備份”一下,減小整個網絡查詢該hash的次數。

磁力鏈接

以前一個種子對應一個文件,現在一個hash對應一個文件,通過hash構造的磁力鏈接就可以下載一個文件。磁力鏈接的構造方式如下:

  1. magnet:?xt=urn:btih:{hash} 

磁力鏈接中的hash就是一個40個字符組成的字符串,由20字節的hash計算得來:

  1. public static string ToHexString(byte[] hash)  
  2. {  
  3.     var sb = new StringBuilder();  
  4.     foreach (var b in bytes)  
  5.     {  
  6.         sb.Append(b.ToString("X2"));  
  7.     }  
  8.     return sb.ToString();  

例如構造了一個磁力鏈接:magnet:?xt=urn:btih:EAE833FFE5A06B42B9B8C3F239660B537579C8A3 ,用迅雷打開后,迅雷就會下載對應的種子,然后下載該資源。

Btbook是什么

Btbook主要由DHT網絡爬蟲,種子下載分析器,一個搜索網站組成。

DHT網絡爬蟲用一些“交友策略”,例如我可以遞歸的find_node,盡可能多的認識DHT網絡中的節點,讓自己加入到對方的路由表中。剩下的事情就是等待對方的請求,所有的請求都正常的給予回復,對于announce_peer請求,則記錄下資源的hash,交給種子下載分析器處理。

種子下載分析器通過hash下載對應的種子文件,從種子文件中獲取文件標題、文件列表、文件大小等元信息,保存到索引文件中。

搜索網站用ASP.NET MVC搭建,用于處理用戶的搜索,對用戶的搜索內容進行分詞,對一些敏感詞匯進行過濾,從索引文件中獲取標題與搜索內容最匹配的結果,默認按資源的創建時間進行排序,突出“新”。

因為整個過程是實時的,一旦網絡中有人分享了東西被我捕獲的話,我就能發現這個資源,所以一些最新的資源往往都能被索引,是“追劇者”的神器。

使用Btbook

如果你用電腦訪問btbook,你的電腦安裝了支持磁力鏈接的軟件即可。如果你使用的是移動設備,你可以安裝迅雷手機版之類的軟件(“手雷”),把btbook添加進收藏,在手雷中打開btbook,就可以直接在手機中下載文件了。Btbook的網址是:http://btbook.net/ ,考慮了移動版瀏覽器兼容性,have fun!

  

目前服務器配置較低,如果有園友有帶寬較好的VPS,愿意幫助提高btbook體驗的話,請與我聯系。

原文鏈接:http://www.cnblogs.com/technology/p/btbook.html

責任編輯:林師授 來源: 博客園
相關推薦

2011-06-20 18:23:06

SEO

2016-08-18 00:54:59

Python圖片處理搜索引擎

2009-02-19 09:41:36

搜索引擎搜狐百度

2009-05-06 14:35:17

搜索引擎PHP技術

2012-09-03 11:01:44

搜索引擎Polaris沃爾瑪

2022-03-31 20:15:21

圖像搜索引擎

2009-09-22 16:23:52

搜索引擎

2011-05-17 16:54:09

搜索引擎

2017-08-07 08:15:31

搜索引擎倒排

2020-03-20 10:14:49

搜索引擎倒排索引

2010-06-13 16:27:28

搜索引擎

2016-12-26 13:41:19

大數據搜索引擎工作原理

2022-10-08 09:13:18

搜索引擎?站

2012-09-07 13:22:21

搜索搜狗

2010-04-20 11:43:46

2020-02-19 13:38:42

開源索引互聯網

2010-03-10 09:28:41

Python標準庫

2015-08-17 10:34:30

2024-02-27 07:33:32

搜索引擎Rust模型

2015-08-31 10:41:58

搜索引擎Google云應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91视频进入 | 激情五月婷婷综合 | 免费xxxx大片国产在线 | ririsao久久精品一区 | a级片在线 | 在线观看免费观看在线91 | 国产日产精品一区二区三区四区 | 国产精品欧美一区二区 | 亚洲人成人一区二区在线观看 | 伊人电影院av | 日韩成人免费中文字幕 | 视频一区二区三区中文字幕 | 又黑又粗又长的欧美一区 | 一区二区在线不卡 | 中文字幕一区在线 | 99re在线视频 | www国产亚洲精品久久网站 | 四虎影音 | 国产精品一区二区视频 | 一区不卡在线观看 | 精品国产免费一区二区三区五区 | av在线免费网 | 亚洲欧美在线一区 | 午夜视频免费 | 国精产品一品二品国精在线观看 | 97国产在线观看 | 老牛嫩草一区二区三区av | 在线免费黄色小视频 | 可以免费观看的av | 国产午夜一级 | 国产小视频在线 | 老司机免费视频 | 国产在线精品一区二区三区 | 日韩成人在线观看 | 国产熟熟 | 国产精品国产成人国产三级 | 国产精品免费在线 | 久久久久91 | 日韩精品久久久久 | 色综合久| 成人影院在线 |