多 Tracker 元數(shù)據(jù)擴(kuò)展

Multitracker Metadata Extension(多 Tracker 元數(shù)據(jù)擴(kuò)展)是一種用于 BitTorrent 協(xié)議的元數(shù)據(jù)擴(kuò)展,旨在提高多個 BitTorrent Tracker 之間協(xié)同工作的效率。該擴(kuò)展允許 Torrent 文件包含來自多個 Tracker 的地址列表,并且客戶端可以使用這些地址來連接到任何可用的 Tracker 。這樣,如果一個 Tracker 處于離線狀態(tài),客戶端仍然可以通過其他 Tracker 下載或分享文件。

與標(biāo)準(zhǔn) BitTorrent 協(xié)議不同,Multitracker Metadata Extension 中包含了 Tracker 地址的列表,因此客戶端可以更快地找到活動的 Tracker 。這使得 Torrent 文件能夠更快速地開始下載,同時還能減輕單個 Tracker 的負(fù)載壓力。

Bit-Torrent-13813.jpg

BitTorrent 元數(shù)據(jù)文件中包括兩個鍵(key):一個是標(biāo)準(zhǔn)的 “announce” 鍵,另一個是新的 “announce-list” 鍵。這兩個鍵都用于指定可供客戶端使用的 BitTorrent tracker 服務(wù)器的 URL 地址列表。

與 “announce” 鍵不同的是,”announce-list” 鍵引用的是一個嵌套列表(list of lists),其中每個內(nèi)部列表都代表了一個 Tracker 服務(wù)器的優(yōu)先級別。這意味著客戶端會首先向第一個內(nèi)部列表中的所有服務(wù)器發(fā)送請求,如果它們都不可用或無響應(yīng),則依次嘗試下一個內(nèi)部列表中的服務(wù)器,直到找到可用的 Tracker 服務(wù)器為止。

如果客戶端支持多 Tracker 規(guī)范,且元數(shù)據(jù)文件中同時存在 “announce” 和 “announce-list” 鍵,那么客戶端將只使用 “announce-list” 中的 URL 地址列表,而忽略 “announce” 鍵中的地址。這樣做可以提高下載效率和可靠性,因?yàn)槭褂枚鄠€ Tracker 服務(wù)器可以使下載任務(wù)更容易地找到其它對等節(jié)點(diǎn)并提高下載速度。

執(zhí)行順序

“announce-list” 鍵中的 URL 地址列表會按照優(yōu)先級別(tiers)逐個處理,客戶端會按照優(yōu)先級別逐個處理列表中的 URL 地址,而不是同時處理所有地址。在每個優(yōu)先級別中,URL 地址會以隨機(jī)順序進(jìn)行處理,這樣可以避免因?yàn)槟承┑刂放旁谇懊娑鴮?dǎo)致下載速度過慢或失敗的情況。另外,如果客戶端與某個 Tracker 服務(wù)器的連接成功,那么該服務(wù)器所在的優(yōu)先級別會被移到列表的最前面,這樣可以提高與該服務(wù)器通信的概率,并加快下載速度。

例:

  d['announce-list'] = [ [tracker1], [backup1], [backup2] ]

當(dāng)發(fā)生 “announce” 事件時,建議首先嘗試連接到 “tracker1” 。如果連接失?。赡苁且?yàn)?tracker 不可用),則應(yīng)嘗試連接到 “backup1”,如果還是失敗,則嘗試 “backup2” 。下一次發(fā)布公告時,應(yīng)重復(fù)相同的嘗試順序 – 首先嘗試 “tracker1”,然后是 “backup1”,最后是 “backup2”,如有必要。采用這種方法的原因似乎與不同跟蹤器無法彼此共享信息有關(guān)。通過每次按照相同的順序嘗試連接到每個跟蹤器,系統(tǒng)可以確保始終首選嘗試連接到最優(yōu)先的跟蹤器,同時仍然具備備選選項,以防該跟蹤器不可用。

  d['announce-list'] = [[ tracker1, tracker2, tracker3 ]]

首先,假設(shè)一個 tracker 列表已經(jīng)被打亂。當(dāng)客戶端需要連接到 tracker 時,會按照以下順序嘗試連接:

  1. 首先嘗試連接 “tracker1” 。
  2. 如果無法連接 “tracker1”,則嘗試連接 “tracker2” 。
  3. 如果能夠連接 “tracker2”,則將追蹤器列表重新排列 “tracker2,tracker1,tracker3”,并以此順序進(jìn)行后續(xù)連接嘗試。
  4. 如果無法連接 “tracker2” 或 “tracker1”,但是能夠連接 “tracker3”,則將追蹤器列表重新排列為 “tracker3,tracker2,tracker1”,并以此順序進(jìn)行后續(xù)嘗試。

Tracker 之間的負(fù)載均衡策略。這種方法可以讓客戶端和 tracker 之間相互交換信息,從而實(shí)現(xiàn)負(fù)載均衡,避免某個 tracker 過載而導(dǎo)致整個系統(tǒng)性能下降。

  d['announce-list'] = [ [ tracker1, tracker2 ], [backup1] ]

過程中系統(tǒng)分為三個層級:tracker1 、 tracker2 和 backup1 。第一層包括 tracker1 和 tracker2,它們的順序可能是隨機(jī)的。當(dāng)發(fā)生 “announce” 事件時,系統(tǒng)會按照某種順序(每次事件可能的順序不同)嘗試連接到 tracker1 和 tracker2,然后才會嘗試使用 backup1 。換句話說,在嘗試使用 backup1 之前,系統(tǒng)會先嘗試連接 tracker1 和 tracker2 。

參考鏈接

http://www.bittorrent.org/beps/bep_0012.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 英文原文 BitTorrent 是一個用于文件分發(fā)的協(xié)議。它通過 URL 來標(biāo)識內(nèi)容,其設(shè)計使其可以與 Web 無...
    懶癌正患者閱讀 1,052評論 0 0
  • 種子站點(diǎn)的集中特性使得它們很容易被關(guān)閉(提供音樂、電影等版權(quán)內(nèi)容的種子文件的網(wǎng)站經(jīng)常會因法律原因而被關(guān)閉,如海盜灣...
    treelake閱讀 46,778評論 17 187
  • BT協(xié)議 bt種子文件 編碼 bencode bencode 有 4 種數(shù)據(jù)類型: string, integer...
    云煙1f3bca320ba6閱讀 3,584評論 0 1
  • 你相信自己會越來越好嗎?你為什么會有信心,或者沒有信心呢? 1.價值排序。將各個選項羅列排序,關(guān)注重要的,大膽舍掉...
    莫忘小寒閱讀 165評論 0 0
  • BitTorrent 是一種用于分發(fā)文件的協(xié)議。它通過 URL 標(biāo)識內(nèi)容,并且旨在與 Web 網(wǎng)絡(luò)無縫集成。相對于...
    QKN閱讀 380評論 0 0

友情鏈接更多精彩內(nèi)容