種子文件
副檔名 |
.torrent |
---|---|
網路媒體型式 |
application/x-bittorrent |
標準 | BEP-0003 (v1),[1] BEP-0052 (v2)[2] |
BitTorrent協議的種子文件(英語:Torrent file)是由BitTorrent協議所定義的,用於可以保存一組文件元數據的文件[1]。擴展名一般為「.torrent」。
結構
.torrent種子文件本質上是文本文件,包含Tracker信息和文件信息兩部分。Tracker信息主要是BT下載中需要用到的Tracker服務器的地址和針對Tracker服務器的設置,文件信息是根據對目標文件的計算生成的,計算結果根據BitTorrent協議內的Bencode規則進行編碼。它的主要原理是需要把提供下載的文件虛擬分成大小相等的塊,塊大小必須為2k的整數次方(由於是虛擬分塊,硬盤上並不產生各個塊文件),並把每個塊的索引信息和Hash驗證碼寫入種子文件中;所以,種子文件就是被下載文件的「索引」。
種子文件包含以下數據:
- announce - tracker的URL
- 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.0 1.1 BEP-0003: The BitTorrent Protocol Specification. Bittorrent.org. [2009-10-22]. (原始內容存檔於2014-02-08).
- ^ bep_0052.rst_post. bittorrent.org. [2023-02-09]. (原始內容存檔於2020-11-12).