BT種子的原理是什麼?
就是.torrent文件
謝邀。本人遊戲行業,網上搜了下相關資料,僅從技術角度分析其實現方式,不足之處還請多多指正。
其實前面答案也大都說過了,種子文件包含的是要下載的文件基本信息以及資源伺服器列表目錄。
我們可以把torrent文件用記事本打開,會看到一些亂碼和部分可識別內容。其中有資源文件名,文件大小,文件創建時間等簡介信息。還有就是一堆ip地址,其中包括迅雷的主伺服器地址,以及其他伺服器(包括下載中的用戶機器)IP地址及下載目錄。
迅雷應用在用戶啟動時就會生成一個可供聯網下載的資源的分享介面(包括當前用戶下載已完成的內容,用戶的資源分享網址等信息),並同步給主伺服器,其他用戶下載資源文件時,會從主伺服器獲取到當前可用的其他用戶資源列表。
當然,大的文件都是分成小塊進行的,用戶之間不同的資源塊可以互補。亂碼內容應該是用戶的資源塊信息。應用會自動篩選可用的且速度最快的資源塊優先下載。同時本地內容一直在與主伺服器通信保持最新索引。
當所有數據最終下載完成之後拼接成整個的數據,最後根據源文件(類似md5碼)進行快速校驗。最後一步有可能校驗失敗,那就要逐塊去比對。也有可能先比對小塊,最後比對拼接完的。所以才會出現那麼多99.9%死活完不成的,估計就是最後校驗出問題了。如果是視頻音樂文本圖片等流媒體,少一塊可能不影響整體感受,但是類似於壓縮文件的話,本身就是被處理過的,一旦對不上基本就廢了。
另外,迅雷主伺服器並不是一台,應該說必然是分散式的一組或n組。其中一部分僅負責資源索引同步等功能,響應速度快,但數據量不大。還有一部分資源伺服器(cdn)分布在各個機房,當某資源可用用戶共享數量過少時應該會到它自己的資源伺服器上去下載。
手機碼字,想到哪裡寫到哪裡,以上。
這個可以分兩個層面來解釋下:
1、torrent文件的原理:如果您這個問題是指torrent文件本身,那麼,當您對一個文件(或者文件夾)製作成.torrent文件,實際上生成的.torrent文件裡面主要包括了這些信息:
A)這個文件(文件夾)中數據的SHA1值,比如一個1G的文件,如果按1M每塊進行分塊,則會被分為了1000塊,torrent中就會有這1000個數據塊的指紋值(SHA1的hash值),這個佔據了torrent文件的絕大部分空間。這些值的目的是為了下載的過程中進行數據校驗,確保數據收到的和當時源頭製作torrent時的源文件100%一致,防止惡意數據攻擊。
B)一般製作torrent文件時,還會要指定一個或者多個Tracker的地址,比如http://www.a.com:8080/announce這種地址。torrent裡面一般也會存儲了這個信息,這個其實也尤為重要。相當於記錄了一個問詢伺服器的地址,這個問詢伺服器的作用,後面我再解釋。
C)文件或者文件夾內每個文件的名字,方便下載文件時,磁碟上直接命名好跟原始數據一樣的目錄結構、文件名。
D)其它一些輔助和可擴展的信息,比如可以配置一個P2SP的http地址輔助下載,比如製作軟體的名字、備註……。
E)上面信息生成後,torrent會把A)裡面的這些信息,以及torrent裡面的文件名等關鍵信息,再進行一次Hash,生成一個新的SHA1值,作為torrent的HASH值,也就是我們經常看到的下載軟體裡面對這個種子命名的一個唯一的hash值,也有的在magnet這種磁力鏈接中可以看到這個值,這就是torrent的唯一標記。
以上就是.torrent文件的內容,可以用記事本打開,但可能看到亂碼。這個文件的編碼遵循了bencode編碼規則。但實際內容就主要是上面這些。所以,torrent可以理解為對原始數據的一些記錄。
2、如果您的問題是指,BT是如何通過.torrent開始進行下載的,那麼這個的原理大概是這樣的:
A)下載軟體拿到.torrent文件後,先進行打開,讀取裡面的這些信息,載入內存。
B)torrent中有Tracker的地址,下載軟體拿到後,會去跟Tracker進行通訊,告訴Tracker:我要下載這個文件(通過hash值作為標記); Tracker收到請求後,會記錄這個客戶端的公網IP(記錄這廝在下載這個文件),同時呢,會返回給他:我這邊還知道哪些人也在下載這個文件,一般是會返回200個IP(如果不夠,當然就有多少返回多少)。
當然了,如果下載過程中,協議要求你必須5分鐘跟tracker通訊一次,如果太久不通訊,tracker就認為你下線了,會把你從節點列表中刪除的。
C)客戶端拿到了一堆IP後,就開始挨個去嘗試連接,連上後就開始互相通訊了。比如告訴對方,我有哪些分塊,問問對方有哪些,然後把我有的給對方;讓對方把他有的某一塊給我,這樣就你來我往開始了下載。當然,如果很悲催的情況下,此時沒別人在線,那就只能沒速度了,就只能不停的找啊找啊找朋友,直到找到一個好朋友。
D)當然,如果torrent中有一個P2SP的Http地址輔助下載,那麼也可以同時從這個Http伺服器要數據,也會把這個伺服器當成一個普通的節點,每次要1塊數據,通過Http協議裡面的Range標記,指定只要一部分數據過來輔助下載。
整個BT的基本原理和過程就是這樣,當然,這只是BT的基本原理,要做好一個完善的BT還是有很多路要走的。比如:
1)如果Tracker伺服器出問題了,連不上這個問詢的伺服器,就拿不到周圍的鄰居節點,怎麼辦?---NB的BT發明者提出了DHT的概念,就算Tracker連不上了,也可以通過分散式哈希表DHT技術,通過DHT網路慢慢的尋找志同道合的鄰居節點,只是沒有Tracker那麼直接那麼快速,但慢一些總還是有機會找到鄰居的。
2)網路是複雜的,特別是我們聰明的各個運營商,為了不讓自己的用戶消耗太多帶寬,很多地區的運營商對P2P是有封鎖的,比如我知道的包括某城寬頻等。他們的做法早期是分析協議裡面的握手消息,BT的握手消息是明文的Bittorrent Protocol,粗暴的運營商看到剛建立完連接就發這個明文會立即斷開連接;文明點的運營商看到後不斷開連接,但會限速到20K讓你慢慢下載。當然,BT後來也發明了加密協議,運營商也升級了封鎖的設備,也開始模擬自己是一個客戶端,嘗試分析加密後的協議,精彩紛呈。所以,要做一個穩定的靠譜的P2P系統還是有不少坑要趟的。
3)還有很多很多,比如BT對磁碟的調度、緩存的機制、文件分塊的調度演算法、伺服器對幾百萬幾千萬用戶量時的性能提升等等。
以上是看到問題隨便想到的一些,希望能有所幫助,解決您的困惑。
說句題外話來佐證我是對BT系統比較熟悉的,我本人2004年就從事P2P的研發,是點量BT的核心開發人員之一。如果您需要一個完整的BT系統或者P2P分發數據下載系統,也不妨看看點量BT http://www.dolit.cn,已經歷經10幾年的改進和上百家用戶的使用,包括搜狐暢遊、上海征途等眾多知名的大公司。目前應該是最穩定和完善的P2P商業內核,很方便內嵌到自己的軟體系統中,不再需要從頭製造輪子 :)
謝邀
種子就是提供你下載的網友,而這個文件有多少種子就是有多少個網友在下載同時上傳。
BT首先在上傳者端把一個文件分成了Z個部分,甲在伺服器隨機下載了第N各部分,乙在伺服器隨機下載了第M個部分,這樣甲的BT就會根據情況到乙的電腦上去拿乙已經下載好的M部分,乙的BT就會根據情況去到甲的電腦上去拿甲已經下載好的N部分,這樣就不但減輕了伺服器端負荷,也加快了用戶方(甲乙)的下載速度,效率也提高了,更同樣減少了地域之間的限制。比如說丙要連到伺服器去下載的話可能才幾K,但是要是到甲和乙的電腦上去拿就快得多了。所以說用的人越多,下載的人越多,大家也就越快。
就是一種下載的人越多,下載速度越快的一種技術,當然這個速度是趨向某個極限值的,不會無限增大。
簡單的原理理解就是,一共有n個用戶在某一個伺服器上下載同一個文件,那麼就將文件分成n份,分別傳給不同的用戶,用戶一邊下載自己的那份,一邊與其他n個用戶交換各自的那份。
如果我講的不清楚,建議看下中國大學mooc,哈爾濱工業大學《計算機網路》第四周 網路應用下,2.6 p2p。
這裡有詳細的講解計算機網路_哈爾濱工業大學
謝邀。
p2p的原理大學時候學的,我憑記憶說,可能不完全正確。
p2p就是點對點的傳輸,你的下載,需要有另一台提供服務的機器,將你需要下載的東西,和你點對點的進行傳輸。
這裡的數據並不是放在統一的ftp伺服器上,而是由用戶(暫且這樣稱呼)來提供,每個資源只有資源的節點位置。
那麼問題來了,如果資源節點電腦關機了,是不是就下不到了。
所以就有了種子的概念,每個下載的人,同時做著種子的備份,第一是可以選擇較近種子節點來下載資源,第二是多個種子節點存在的時候,下載速度會提升(一個節點下一部分,早期迅雷的下載進度圖,是很多小格子,而並不是順序載入,中間好幾個節點會同時往後載入)。種子代表著一種分享的精神,你使用的同時,也在做著分享者,這就是p2p的精神吧~
torrent文件會記錄文件名稱,大小,摘要等信息,這樣你就能在下載開始前選擇需要的文件。
下載的過程就如同之前回答所說,有該文件的人互相傳送信息,這樣人越多越快。
但是下載軟體不知道當前誰有文件,這就需要tracker伺服器來提供當前有這些文件的人的列表,這樣下載軟體就能根據列表找到對應的用戶建立連接,獲取文件內容。
tracker伺服器還能對用戶進行簡單的身份驗證,並根據下載軟體返回的信息統計每個用戶的上傳下載量,用於私有站點(也就是PT)的賬戶管理。
瀉藥
不相關,這是計算機科學吧,我是工管營銷。
不過看了前幾位的回答大概有個數
讓我裝下:所謂存在即合理。
有些東西在FTP伺服器上是不給放的,那咋辦,大家很饑渴啊。公家不給,只能找私家了。於是當我需要一部動作片,名叫深夜食堂.avi。大小1個雞。公家FTP不給你下的時候,我找到了種子。我就能從別的有深夜食堂的人家那裡下載(比如父親的電腦)。
這個別人叫做節點?反正全網有100個人有這個玩意兒,那麼好,我就能從這100人中得到。他們上傳,我來下載。這樣我就有了。
於是有了新情況,這100個傢伙不一定都online呀,所以我下載時候呀就會分開都去找這100個中在線的人。在線幾個,深夜食堂.avi就會被分成多少份同時下載。假設極端情況100人全都在線,那麼我的下載速度100/100杠杠的,深夜食堂.avi被分成100份同時下載,從這100人上傳中獲得。速度極限莫非是ISP分配的物理帶寬?
萬一100人都不在線,可能下載速度很慢?我也不知道該怎麼辦了…需要計算機大神蟹蟹求輕噴,畢竟隔行如隔山。
你可以問我馬斯洛需求層次理論,波士頓矩陣,波特五力模型什麼的…反正我也沒聽說過,但是要裝的像個學霸不是么。
裝嗶結束
GE矩陣就是個狗屁
以上農大畢業生被邀過來一臉懵逼
謝邀,這個不是很清楚呢.以後了解再來答.
推薦閱讀:
※如何將電影中人的聲音與背景聲音分開,即去掉人的聲音只保留環境的聲音?如何將音樂人聲去掉伴奏留下?
※如何禁止 USB 移動設備訪問 Windows 電腦?
※qlv格式的視頻有沒有什麼軟體可以轉換?