成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

bittorrent 種子文件結(jié)構(gòu)解析

PiscesYE / 3238人閱讀

摘要:種子文件有自己的文件格式,下面簡(jiǎn)單看看種子文件的結(jié)構(gòu)。字符是以這種方式編碼的字符串長(zhǎng)度字符串。種子文件是使用編碼的,整個(gè)文件就,包含以下鍵。必選表示該種子文件的文件信息。

原文鏈接:http://luoguochun.cn/2014/09/17/bt-file-structure/
原文作者:buf1024


估計(jì) 80% 以上接觸互聯(lián)網(wǎng)的人都知道 bt 是什么東西,任何一個(gè)用 bt 下載的人都知道這樣一個(gè)概念,種子。bt 種子就是記錄了 p2p 對(duì)等網(wǎng)絡(luò)中 tracker, nodes, files 等信息,也就是說,這個(gè)種子告訴你,你要下載什么,到哪里下載。bt 種子文件有自己的文件格式,下面簡(jiǎn)單看看 bt 種子文件的結(jié)構(gòu)。

在開始之前,我們先介紹 bencode 這種編碼格式,因?yàn)?bt 種子文件,包括以后的 DHT 網(wǎng)絡(luò)中,都是用這種編碼的。網(wǎng)上有很多介紹,這里簡(jiǎn)單再重復(fù)一遍。bencode 有 4 種數(shù)據(jù)類型: string, integer, list 和 dictionary。

string

字符是以這種方式編碼的: <字符串長(zhǎng)度>:<字符串>。
如 hell: 4:hell

integer

整數(shù)是一這種方式編碼的: i<整數(shù)>e。
如 1999: i1999e

list

列表是一這種方式編碼的: l[數(shù)據(jù)1][數(shù)據(jù)2][數(shù)據(jù)3][…]e。
如列表 [hello, world, 101]:l5:hello5:worldi101ee

dictionary

字典是一這種方式編碼的: d[key1][value1][key2][value2][…]e,其中 key 必須是 string 而且按照字母順序排序。
如字典 {aa:100, bb:bb, cc:200}: d2:aai100e2:bb2:bb2:cci200ee

很多語(yǔ)言都有 bencode 的實(shí)現(xiàn),Python 版本可在 pypi 里面找到: bencode。

bt 種子文件是使用 bencode 編碼的,整個(gè)文件就 dictionary,包含以下鍵。

info, dictinary, 必選, 表示該bt種子文件的文件信息。

文件信息包括文件的公共部分

piece length, integer, 必選, 每一數(shù)據(jù)塊的長(zhǎng)度
pieces, string, 必選, 所有數(shù)據(jù)塊的 SHA1 校驗(yàn)值
publisher, string, 可選, 發(fā)布者
publisher.utf-8, string, 可選, 發(fā)布者的 UTF-8 編碼
publisher-url, string, 可選, 發(fā)布者的 URL
publisher-url.utf-8, string, 可選, 發(fā)布者的 URL 的 UTF-8 編碼

如果 bt 種子包含的是單個(gè)文件,包含以下內(nèi)容

name, string, 必選, 推薦的文件名稱
name.utf-8, string, 可選, 推薦的文件名稱的 UTF-8 編碼
length, int, 必選, 文件的長(zhǎng)度單位是字節(jié)

如果是多文件,則包含以下部分:

name, string, 必選, 推薦的文件夾名稱
name.utf-8, string, 可選, 推薦的文件名稱的 UTF-8 編碼
files, list, 必選, 文件列表,每個(gè)文件列表下面是包括每一個(gè)文件的信息,文件信息是個(gè)字典。

文件字典

length, int, 必選, 文件的長(zhǎng)度單位是字節(jié)
path, string, 必選, 文件名稱,包含文件夾在內(nèi)
path.utf-8, string, 必選, 文件名稱 UTF-8 表示,包含文件夾在內(nèi)
filehash,string, 可選, 文件 hash。
ed2k, string, 可選, ed2k 信息。

announce, string, 必選, tracker 服務(wù)器的地址

announce-list, list, 可選, 可選的 tracker 服務(wù)器地址

creation date, interger, 必選, 文件創(chuàng)建時(shí)間

comment, string, 可選, bt 文件注釋

created by, string, 可選, 文件創(chuàng)建者。

上面列舉的可能不是很完整的,但是大體上主要的字段沒有重大的錯(cuò)誤。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37416.html

相關(guān)文章

  • Spring Cloud + Netty 打造分布式可集群部署的 DHT 磁力爬蟲(開源)

    摘要:閑話不多說了,接下來談?wù)劸W(wǎng)絡(luò)爬蟲吧。根據(jù)中的到指定端口使用擴(kuò)展協(xié)議進(jìn)行數(shù)據(jù)的交換即下載下載成功,解析出種子文件列表信息入庫(kù)。具體實(shí)現(xiàn)請(qǐng)參考我的開源項(xiàng)目代碼如有問題,歡迎指正,僅供技術(shù)交流,切勿用作非法商業(yè)用途。 演示地址: https://dodder.cc 三年前,照著 Python 版的 DHT 網(wǎng)絡(luò)爬蟲用 Java 重寫了一遍,當(dāng)時(shí)大學(xué)還未畢業(yè),寫出來的代碼比較雜亂,數(shù)據(jù)跑到 1...

    banana_pi 評(píng)論0 收藏0
  • 網(wǎng)絡(luò)協(xié)議 15 - P2P 協(xié)議:小種子大學(xué)問

    摘要:其中,文件信息里有以下內(nèi)容區(qū)指定該種子包含的文件數(shù)量文件大小及目錄結(jié)構(gòu),包括目錄名和文件名字段指定頂層目錄名字每個(gè)段的大小協(xié)議把一個(gè)文件分成很多個(gè)小段,然后分段下載段哈希值將整個(gè)種子種,每個(gè)段的哈希值拼在一起。 【前五篇】系列文章傳送門: 網(wǎng)絡(luò)協(xié)議 10 - Socket 編程(上):實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn) 網(wǎng)絡(luò)協(xié)議 11 - Socket 編程(下):眼見為實(shí)耳聽為虛 網(wǎng)絡(luò)協(xié)議 ...

    galois 評(píng)論0 收藏0
  • 網(wǎng)絡(luò)協(xié)議 15 - P2P 協(xié)議:小種子大學(xué)問

    摘要:其中,文件信息里有以下內(nèi)容區(qū)指定該種子包含的文件數(shù)量文件大小及目錄結(jié)構(gòu),包括目錄名和文件名字段指定頂層目錄名字每個(gè)段的大小協(xié)議把一個(gè)文件分成很多個(gè)小段,然后分段下載段哈希值將整個(gè)種子種,每個(gè)段的哈希值拼在一起。 【前五篇】系列文章傳送門: 網(wǎng)絡(luò)協(xié)議 10 - Socket 編程(上):實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn) 網(wǎng)絡(luò)協(xié)議 11 - Socket 編程(下):眼見為實(shí)耳聽為虛 網(wǎng)絡(luò)協(xié)議 ...

    li21 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

PiscesYE

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<