簡介#
為了減小 Tracker 响應的大小並降低 Tracker 的內存和計算要求,Tracker 可以將對等節點以打包字符串的形式返回,而不是作為 bencoded 列表返回。
在本文檔中,“MUST”,“MUST NOT”,“REQUIRED”,“SHALL”,“SHALL NOT”,“SHOULD”,“SHOULD NOT”,“RECOMMENDED”,“MAY” 和 “OPTIONAL” 這些關鍵詞的解釋請參考 IETF RFC 2119 中所述。
概述#
按照 BitTorrent 協議規範,希望傳輸文件的對等節點會聯繫一個中央 Tracker 。該 Tracker 會返回一個正在傳輸該文件的對等節點列表。這個對等節點列表是以一系列 bencoded 字典的形式實現的。列表中的每個字典包含三個字段:peer id 、 ip 和 port 。
其中,peer id 是 20 個字節加上 3 個字節的 bencoding 額外負荷。 ip 是一個字符串,包含一個域名或 IP 地址,以及一個整數端口號。 ip 的長度可變,但是由於它在最長形式下是一個域名,所以不能超過 255 個字節,再加上 4 個字節的 bencoding 額外負荷。 Bencoded 整數也是可變長度的,但由於它表示的是一個端口號,所以長度不會超過 7 個字節,包括 bencoding 額外負荷。
根據 BitTorrent 協議規範,BitTorrent 協議中的對等節點列表以 bencoded 字典的形式存儲,每個字典包含 peer id 、 ip 和 port 三個字段,分別表示對等節點的唯一標識、 IP 地址和端口號。
故,
total peer list length in bytes < n * ( 23 + 259 + 7 )
現在普遍使用一種緊湊的格式來表示每個對等節點,其中每個對等節點僅使用 6 個字節。前 4 個字節包含 32 位的 IPv4 地址,剩下的兩個字節包含端口號。無論是地址還是端口號,都使用網絡字節順序。
建議 trackers 默認返回緊湊格式。通過在 announce URL 中包含”compact=0“,客戶端向追蹤器建議使用原始格式,類似地,”compact=1“ 則建議 tracker 使用緊湊格式。然而,”compact“ 鍵值對僅供參考:tracker 可以選擇使用任一格式進行返回。”compact“ 是一個建議性質的設定,以便 tracker 可能只支持緊湊格式。然而,客戶端必須繼續支持兩種格式。
根據上述描述,建議 tracker 在默認情況下返回緊湊格式的對等節點列表。通過在 announce URL 中指定相應的參數,客戶端可以建議 tracker 使用原始格式或緊湊格式。然而,最終 tracker 可以自行決定返回哪種格式。客戶端必須同時支持兩種格式。
例:
GET /announce?peer_id=aaaaaaaaaaaaaaaaaaaa&info_hash=aaaaaaaaaaaaaaaaaaaa
&port=6881&left=0&downloaded=100&uploaded=0&compact=1
BitTorrent 協議中的”compact format“數據格式。在傳統的 BitTorrent tracker 响應中,使用一個名為”peers” 的鍵來表示對等節點列表,其值是一個 bencoded(一種編碼格式)的列表。
然而,在”compact format” 中,依然使用相同的”peers” 鍵,但是該鍵的值是一個經過 bencode 編碼的字符串,而不是列表形式。與傳統格式不同的是,”compact format” 中不包含對等節點的 ID(peer id)。雖然缺乏對等節點 ID 的信息,但是這種緊湊格式已經被廣泛使用多年,並且並未引起任何問題。
這種”compact format” 格式得到了 BitTorrent 主流客戶端 IMFile 、 qBittorrent 、 libtorrent 、 uTorrent 等大多數客戶端的支持。
總結#
在點對點文件共享網絡中,當您連接到一個 Tracker 以獲取共享文件的其他用戶信息時,Tracker 通常會返回一個對等節點列表,其中包含正在共享該文件的其他用戶的信息。這些信息可以包括 IP 地址、端口號等。
Tracker Returns Compact Peer Lists 中的”Compact Peer Lists” 是一種格式或方式,用於表示對等節點列表的緊湊形式。相比於其他格式,如詳細節點列表,緊湊對等節點列表使用更少的數據來表示節點信息,從而減少網絡流量和資源消耗。
通常情況下,緊湊對等節點列表使用二進制表示,並且採用特定的編碼方案。它通常包括節點的 IP 地址和端口號,可以通過解碼和處理該列表來獲取節點的具體信息。
總而言之,”Tracker Returns Compact Peer Lists” 意味著追蹤器返回的是使用緊湊格式表示的對等節點列表,該列表可用於建立與其他共享文件用戶的連接。