種子檔案

BitTorrent協定種子檔案(英語:Torrent file)是由BitTorrent協定所定義的,用於可以儲存一組檔案元數據的檔案[1]副檔名一般為「.torrent」。

種子檔案(Torrent file
副檔名
.torrent
網路媒體型式
application/x-bittorrent
標準BEP-0003 (v1),[1] BEP-0052 (v2)[2]

結構

.torrent種子檔案本質上是文字檔案,包含Tracker資訊和檔案資訊兩部分。Tracker資訊主要是BT下載中需要用到的Tracker伺服器的地址和針對Tracker伺服器的設置,檔案資訊是根據對目標文件的計算生成的,計算結果根據BitTorrent協定內的Bencode規則進行編碼。它的主要原理是需要把提供下載的檔案虛擬分成大小相等的塊,塊大小必須為2k的整數次方(由於是虛擬分塊,硬碟上並不產生各個塊檔案),並把每個塊的索引資訊和Hash驗證碼寫入種子檔案中;所以,種子檔案就是被下載檔案的「索引」。

種子檔案包含以下數據:

  • announce - trackerURL
  • info - 該條對映到一個字典,該字典的鍵將取決於共用的一個或多個檔案:
    • name - 建議儲存到的檔案和目錄名稱
    • piece length - 每個檔案塊的位元組數。通常為  = 256KiB = 262144B
    • pieces - 每個檔案塊的SHA-1的整合Hash。因為SHA-1會返回160-bit的Hash,所以pieces將會得到1個160-bit的整數倍的字串。和一個length(相當於只有一個檔案正在共用)或files(相當於當多個檔案被共用):
    • length - 檔案的大小(以位元組為單位)
    • files - 一個字典的列表(每個字典對應一個檔案)與以下的鍵:
      • path - 一個對應子目錄名的字串列表,最後一項是實際的檔案名稱
      • length - 檔案的大小(以位元組為單位)

作用

根據BitTorrent協定,檔案發佈者會根據要發佈的檔案生成提供一個種子檔案。下載者要下載檔案內容,需要先得到相應的種子檔案,然後使用BT客戶端軟件進行下載。

下載時,BT客戶端首先解析種子檔案得到Tracker地址,然後連接Tracker伺服器。

下載者每得到一個塊,需要算出下載塊的Hash驗證碼與種子檔案中的對比,如果一樣則說明塊正確,不一樣則需要重新下載這個塊。這種規定是為了解決下載內容準確性的問題。

為了解決某些用戶「下完就跑」的現象,在非官方BitTorrent協定中還存在一種超級種子演算法

參見

參考資料

  1. ^ 1.0 1.1 BEP-0003: The BitTorrent Protocol Specification. Bittorrent.org. [2009-10-22]. (原始內容存檔於2014-02-08). 
  2. ^ bep_0052.rst_post. bittorrent.org. [2023-02-09]. (原始內容存檔於2020-11-12). 

外部連結