<p>BitTorrent協定的<b>種子檔案</b>（英語：<span lang="en">Torrent file</span>）是由BitTorrent協定所定義的，用於可以儲存一組檔案元資料的檔案。副檔名一般為「.torrent」。
</p>


<h2><span id=".E7.BB.93.E6.9E.84"></span><span id="结构">結構</span></h2>
<p>.torrent種子檔案本質上是文字檔案，包含Tracker資訊和檔案資訊兩部分。Tracker資訊主要是BT下載中需要用到的Tracker伺服器的位址和針對Tracker伺服器的設定，檔案資訊是根據對目的檔的計算生成的，計算結果根據BitTorrent協定內的Bencode規則進行編碼。它的主要原理是需要把提供下載的檔案虛擬分成大小相等的塊，塊大小必須為2k的整數次方（由於是虛擬分塊，硬碟上並不產生各個塊檔案），並把每個塊的索引資訊和Hash驗證碼寫入種子檔案中；所以，種子檔案就是被下載檔案的「索引」。
</p><p>種子檔案包含以下資料：
</p>
<ul><li><tt>announce</tt> - tracker的URL</li>
<li><tt>info</tt> - 該條對映到一個字典，該字典的鍵將取決於共享的一個或多個檔案：
<ul><li><tt>name</tt> - 建議儲存到的檔案和目錄名稱</li>
<li><tt>piece length</tt> - 每個檔案塊的位元組數。通常為<span><span><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 2^{8}}">
  <semantics>
    <mrow class="MJX-TeXAtom-ORD">
      <mstyle displaystyle="true" scriptlevel="0">
        <msup>
          <mn>2</mn>
          <mrow class="MJX-TeXAtom-ORD">
            <mn>8</mn>
          </mrow>
        </msup>
      </mstyle>
    </mrow>
    <annotation encoding="application/x-tex">{\displaystyle 2^{8}}</annotation>
  </semantics></math></span></span> = 256KiB = 262144B</li>
<li><tt>pieces</tt> - 每個檔案塊的SHA-1的整合Hash。因為SHA-1會返回160-bit的Hash，所以<tt>pieces</tt>將會得到1個160-bit的整數倍的字串。和一個<tt>length</tt>（相當於只有一個檔案正在共享）或<tt>files</tt>（相當於當多個檔案被共享）：</li>
<li><tt>length</tt> - 檔案的大小（以位元組為單位）</li>
<li><tt>files</tt> - 一個字典的列表（每個字典對應一個檔案）與以下的鍵：
<ul><li><tt>path</tt> - 一個對應子目錄名的字串列表，最後一項是實際的檔案名稱</li>
<li><tt>length</tt> - 檔案的大小（以位元組為單位）</li></ul></li></ul></li></ul><h2><span id=".E4.BD.9C.E7.94.A8"></span><span id="作用">作用</span></h2>
<p>根據BitTorrent協定，檔案發布者會根據要發布的檔案生成提供一個種子檔案。下載者要下載檔案內容，需要先得到相應的種子檔案，然後使用BT客戶端軟體進行下載。
</p><p>下載時，BT客戶端首先解析種子檔案得到Tracker位址，然後連接Tracker伺服器。
</p><p>下載者每得到一個塊，需要算出下載塊的Hash驗證碼與種子檔案中的對比，如果一樣則說明塊正確，不一樣則需要重新下載這個塊。這種規定是為了解決下載內容準確性的問題。
</p><p>為了解決某些使用者「下完就跑」的現象，在非官方BitTorrent協定中還存在一種超級種子的演算法。
</p>
<h2><span id=".E5.8F.82.E8.80.83"></span><span id="参考">參考</span></h2>
<ul><li>磁力連結</li></ul><h2><span id=".E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5"></span><span id="外部链接">外部連結</span></h2>
<ul><li>Search engine for Torrent files</li></ul>
<!-- 
NewPP limit report
Parsed by mw2261
Cached time: 20230505225912
Cache expiry: 1814400
Reduced expiry: false
Complications: [show‐toc]
CPU time usage: 0.394 seconds
Real time usage: 0.542 seconds
Preprocessor visited node count: 1240/1000000
Post‐expand include size: 253630/2097152 bytes
Template argument size: 986/2097152 bytes
Highest expansion depth: 30/100
Expensive parser function count: 16/500
Unstrip recursion depth: 0/20
Unstrip post‐expand size: 1371/5000000 bytes
Lua time usage: 0.183/10.000 seconds
Lua memory usage: 19755139/52428800 bytes
Number of Wikibase entities loaded: 0/400
--><!--
Transclusion expansion time report (%,ms,calls,template)
100.00%  367.046      1 -total
 29.85%  109.545      1 Template:Lang-en
 19.97%   73.309      1 Template:Infobox_file_format
 18.96%   69.579      1 Template:Infobox
 17.90%   65.701      1 Template:BitTorrent
 17.48%   64.162      1 Template:NoteTA
 17.17%   63.037      1 Template:Navbox
 13.59%   49.897      1 Template:Reflist
 12.40%   45.503      1 Template:Cite_web
 10.60%   38.895      1 Template:Lang
-->
BitTorrent 協定的**種子檔案**（英語：Torrent file）是由 BitTorrent 協定所定義的，用於可以儲存一組檔案元資料的檔案。副檔名一般為「.torrent」。

## 結構

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

種子檔案包含以下資料：

* announce - tracker 的 URL
* info - 該條對映到一個字典，該字典的鍵將取決於共享的一個或多個檔案：
  * name - 建議儲存到的檔案和目錄名稱
  * piece length - 每個檔案塊的位元組數。通常為 $2^{8}$ = 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 協定中還存在一種超級種子的演算法。

## 參考

* 磁力連結

## 外部連結

* Search engine for Torrent files
.torrent文件