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