如果大家想要下載一個(gè)具有付費(fèi)權(quán)限的文件,大家會(huì)怎么做呢?最簡(jiǎn)單的方法當(dāng)然是找一個(gè)有資源的哥們兒,讓他把這個(gè)文件分享給你。早期互聯(lián)網(wǎng)大家就是這么共享文件的,但是這樣也有很多問題,比如下載的人一多每個(gè)人分享到的下載帶寬就變小了,下載速度就會(huì)變的很慢。更危險(xiǎn)的是這個(gè)文件是版權(quán)資源,你的這個(gè)哥們兒本來就不應(yīng)該分享給你。如果你的這個(gè)哥們兒被抓了,大家也都別下載了。
針對(duì)上面蒼鷹提到的這些問題,美國軟件工程師布萊姆·科恩(Bram Cohen)在2001年4月設(shè)計(jì)了BitTorrent 文件共享協(xié)議,BitTorrent 文件共享協(xié)議的原理是資源不再由一個(gè)人或一個(gè)中心服務(wù)器提供,而是由所有人提供給所有人,這樣下載的人越多下載速度也就越快。這種模式也叫pear to pear,也就是我們現(xiàn)在常說的P2P下載。
BitTorrent的核心思想是把文件分割成很多個(gè)小塊讓下載者互相連接,蒼鷹這里以一個(gè)117.3MB的文件為例,被分割成了895個(gè)128KB的文件塊后,下載了第20塊的用戶A就可以和下載了第11塊的用戶B交換彼此下載好的部分,參與的人越多文件塊互相交換的就越密集,下載速度也就越快。為了做到這一點(diǎn),BitTorrent協(xié)議需要資源共享者生成一個(gè)包含下載信息的種子文件,這也就是現(xiàn)在大家常說的BT種子,文件格式為torrent。
這個(gè)種子文件包含文件的名稱、大小、分塊后每塊文件的大小、哈希值以及tracker服務(wù)器的地址,tracker服務(wù)器在這里很重要,通過tracker服務(wù)器我們才能找到其他在線的下載者。當(dāng)你用下載軟件打開這個(gè)種子文件就會(huì)開始聯(lián)系種子文件里內(nèi)置的tracker服務(wù)器,服務(wù)器會(huì)記錄下你的網(wǎng)絡(luò)IP并把其他正在下載或下載完的人的網(wǎng)絡(luò)IP返回給你,這樣大家就可以愉快的組隊(duì)下載文件了。但是如果沒有找到正在下載的人或者資源發(fā)布者不在線,那么你就只能以0KB/s的下載速度等待了,不難發(fā)現(xiàn)tracker服務(wù)器是BitTorrent協(xié)議的弱點(diǎn),如果tracker服務(wù)器被關(guān)閉或封禁就無法下載這個(gè)文件了。
為了擺脫對(duì)tracker服務(wù)器的依賴軟件工程師對(duì)種子文件進(jìn)行了改進(jìn),也就是今天最流行的下載方式磁力鏈接或磁力種子,通常是一串的神秘代碼,前面的代碼都是標(biāo)準(zhǔn)格式,最重要的是后面的40個(gè)十六進(jìn)制的數(shù)字。任何文件丟進(jìn)哈希算法都能得到一串40位十六進(jìn)制的字符,大家可以把它當(dāng)成一個(gè)文件ID。它能幫我們找到我們要下載的東西,磁力鏈接的本質(zhì)是把所有下載的人都變成一個(gè)tracker服務(wù)器,每個(gè)人都拿著一份動(dòng)態(tài)更新的地址和文件信息。
這些天才們的設(shè)計(jì)讓我們擁有了一個(gè)無法被審查和追蹤的去中心化網(wǎng)絡(luò),這催生了龐大的盜版軟件產(chǎn)業(yè),讓很多內(nèi)容有機(jī)會(huì)避開審查,因?yàn)榫W(wǎng)站可以被隔離、被拔線、被禁止訪問,但種子文件不會(huì),只要種子文件不死,那些不存在的音樂、圖片和視頻就還活在互聯(lián)網(wǎng)上,沒有任何人可以毀掉。