IMFile

IMFile

A Free And Unlimited BT / HTTP / HTTPS / eD2k Download Software From Singapore

對等 ID 約定

概述#

傳統上,在 BitTorrent 網絡中,20 字節的 Peer ID 字段用於標識客戶端,並且通常包含了客戶端實現和版本號等信息。這個字段會在 tracker 請求和 peer 握手中發送,用來告訴其他節點和 Tracker 自己是哪個客戶端、版本號是多少。

在一個點對點網絡中,主線客戶端會將 peer-id 的第一個字符設置為 M,後面緊跟著使用 ascii 數字來表示版本號,其中 major 、 minor 和 tiny 版本以破折號分隔。例如,版本號為 4.3.6 和 4.20.8 的 peer-id 可能分別為 M4-3-6– 和 M4-20-8- 。 peer-id 其餘的字節是隨機的。這個列表最初來源於 BitTorrentSpecification 。

Peer id 是一個唯一的標識符,用於標識特定的 BitTorrent 客戶端實現和版本。在這種情況下,peer id 以連字符 “-” 開頭,後跟兩個字符來標識客戶端實現,接著是四個 ascii 數字來表示版本號,然後再有一個連字符 “-” 。與主線(Mainline)類似,剩餘的字節是隨機的。 例如,”-AZ2060-“ 就是這樣一個 peer id 的例子。

已知採用此類編碼風格的客戶端有:

'AG' - Ares
'A~' - Ares
'AR' - Arctic
'AV' - Avicora
'AX' - BitPump
'AZ' - Azureus
'BB' - BitBuddy
'BC' - BitComet
'BF' - Bitflu
'BG' - BTG (uses Rasterbar libtorrent)
'BR' - BitRocket
'BS' - BTSlave
'BX' - ~Bittorrent X
'CD' - Enhanced CTorrent
'CT' - CTorrent
'DE' - DelugeTorrent
'DP' - Propagate Data Client
'EB' - EBit
'ES' - electric sheep
'FT' - FoxTorrent
'FW' - FrostWire
'FX' - Freebox BitTorrent
'GS' - GSTorrent
'HL' - Halite
'HN' - Hydranode
'KG' - KGet
'KT' - KTorrent
'LH' - LH-ABC
'LP' - Lphant
'LT' - libtorrent
'lt' - libTorrent
'LW' - LimeWire
'MO' - MonoTorrent
'MP' - MooPolice
'MR' - Miro
'MT' - MoonlightTorrent
'NX' - Net Transport
'PD' - Pando
'qB' - qBittorrent
'QD' - QQDownload
'QT' - Qt 4 Torrent example
'RT' - Retriever
'S~' - Shareaza alpha/beta
'SB' - ~Swiftbit
'SS' - SwarmScope
'ST' - SymTorrent
'st' - sharktorrent
'SZ' - Shareaza
'TN' - TorrentDotNET
'TR' - Transmission
'TS' - Torrentstorm
'TT' - TuoTu
'UL' - uLeecher!
'UT' - µTorrent
'UW' - µTorrent Web
'VG' - Vagaa
'WD' - WebTorrent Desktop
'WT' - BitLet
'WW' - WebTorrent
'WY' - FireTorrent
'XL' - Xunlei
'XT' - XanTorrent
'XX' - Xtorrent
'ZT' - ZipTorrent

在使用 BitTornado 和其實驗性 BitTorrent 實現時,引入了以一個字符開頭的節點 ID,該字符在 BitTornado 中為 “T”,然後是最多五個 ASCII 字符的版本號,如果不足五個字符,則用破折號填充,最後是三個連字符(—)。

版本號中表示版本的 ASCII 字符僅限於以下字符:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-

例如 ‘S58B—–‘… 指代 5.8.11

和其他節點標識格式一樣,剩餘的字節是隨機的。已知採用此類編碼風格的客戶端有:

'A' - ABC
'O' - Osprey Permaseed
'Q' - BTQueue
'R' - Tribler
'S' - Shadow's client
'T' - BitTornado
'U' - UPnP NAT Bit Torrent

BitComet 和 BitLord 生成節點 ID 的方法。節點 ID 是用於標識一個 BitTorrent 客戶端的唯一 ID 。在 BitComet 中,節點 ID 由四個 ASCII 字符 “exbc” 、兩個字節 “x” 和 “y” 以及隨機字符組成。版本號是小數點前的 “x”,小數點後的數字是 “y” 。 BitLord 使用相同的方案,並在版本字節後添加 “LORD” 。不過,BitComet 的一個非官方補丁曾經用 “FUTB” 代替了 “exbc” 。從 BitComet 版本 0.59 開始,節點 ID 的編碼方式改為 Azureus 風格。

XBT Client 的特定格式,其 peer_id 由三個大寫字符 XBT 和三個 ASCII 數字表示的版本號組成。如果客戶端是調試構建,則第七個字節是小寫字符 d;否則是一个横杠 -。之後是一個橫杠 -,然後是隨機數字、大寫字母和小寫字母。例如,XBT054d- 開頭表示的是版本為 0.5.4 的調試構建。

Opera 8 預覽版和 Opera 9.x 發行版所使用的 peer_id 方案命名規則是:前兩個字符是 OP,接下來的四個數字等於構建版本號。所有後續字符都是隨機的小寫十六進制數字。因此,一個典型的 peer_id 看起來可能是類似於 “OP1234abcdefg” 的字符串,其中 “1234” 代表構建版本號,而 “abcdefg” 則代表隨機的小寫十六進制數字。簡單來說,peer_id 是 Opera 瀏覽器用於標識自己的一種命名方式,其中包括了構建版本號和隨機生成的十六進制數字。

MLdonkey 使用的 peer_id 方案的命名規則是:以 “-ML” 開頭,後面跟著一個帶有小數點的版本號,然後是一個短橫線 “-“,最後是一些隨機字符。例如,”-ML2.7.2-kgjjfkd” 中,”2.7.2″ 是版本號,”kgjjfkd” 是隨機字符。

Bits on Wheels 使用的 peer_id 方案的命名規則是:以 “-BOW” 開頭,後面跟著三個字符 xxx 表示版本號相關信息,然後是一個短橫線 “-“,最後是一些隨機的大寫字母 y 組成的字符串。而對於版本號為 1.0.6 的 Bits on Wheels 客戶端,其 xxx 值為 A0C 。

Queen Bee 使用的 peer_id 方案的命名規則是:以 “Q1-” 開頭,後面跟著兩個數字表示版本號,然後是一個或兩個短橫線 “-“,最後是一些隨機字符。對於 Queen Bee 客戶端來說,可能會有兩種版本號:Q1-0-0– 和 Q1-10-0-,隨後是隨機生成的字節。

BitTyrant 在其 1.1 版本中所使用的 peer_id 方案。實際上,BitTyrant 是 Azureus 的一個分支,並且它的 peer_id 命名基本上是 Azureus 的命名方式加上一些額外的隨機字符。具體來說,BitTyrant 在其 1.1 版本中使用 “AZ2500BT” 作為前綴,後面緊跟一些隨機生成的字節,而與其他的幾種命名方案不同的是,BitTyrant 的命名中沒有橫線。

TorrenTopia 1.90 版本通過在網上與其他客戶端進行通信時自稱為 “Mainline 3.4.6”,並使用以 “346——” 開頭的節點 ID 。

BitSpirit 使用幾種不同的模式來生成節點 ID 。在其中一種模式中,它會讀取對方的 ID,並以對方 ID 的前 8 個字節為基礎重新連接。它的真實 ID 似乎在版本 3.x 中使用 \0\3BS(C 表示法)作為前 4 個字節,在版本 2.x 中使用 \0\2BS 。在所有模式下,ID 可能以 UDP0 結尾。

Rufus 使用其版本號作為前兩個字節的十進制 ASCII 值。第三個和第四個字節是 RS 。隨後是用戶的暱稱和一些隨機字節。

G3 Torrent 的用戶 ID 以 -G3 開始,並添加用戶暱稱的最多 9 個字符。

FlashGet 使用 Azureus 的風格,但沒有尾隨的橫線。版本 1.82.1002 仍然使用版本數字 0180 。

AllPeers 採用了一種基於用戶相關字符串的 sha1 哈希值的方式來生成用戶 ID 。然後將哈希值的前幾個字符替換為 “AP” + 版本字符串 + “-“ 。

總結#

BitTorrent Peer ID Conventions 是一個用於標準化 BitTorrent 客戶端生成和解析節點 ID 的規範。在 BitTorrent 網絡中,每個客戶端都需要根據這個約定生成其自己的節點 ID,並且能夠解析來自其他客戶端的節點 ID 。通過遵循這個約定,可以確保不同的客戶端之間可以彼此識別,從而使它們能夠進行有效的文件共享。

根據這個約定,一個標準的 BitTorrent 節點 ID 應該包括軟件名稱、版本號、隨機字符串和可選的擴展信息等部分,具體格式如下:

  • 軟件名稱:2 個字節 ASCII 字符表示的字符串,用於指示所使用的 BitTorrent 客戶端軟件名稱。
  • 版本號:4 個字節 ASCII 字符表示的字符串,用於指示客戶端軟件的版本號。
  • 隨機字符串:20 個字節隨機生成的字符串,用於使每個節點 ID 都是唯一的。
  • 擴展信息:可選的 8 個字節長度的字符串,用於包含額外的元數據或標識。
    由於 BitTorrent Peer ID Conventions 是一個公認的標準,因此大多數 BitTorrent 客戶端都遵循這個規範來生成和解析節點 ID 。這有助於確保 BitTorrent 網絡中的互操作性和兼容性。

參考鏈接#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。