我知道torrent文件包含有关跟踪器的数据和该torrent的哈希值
但我的问题是:
这些torrent文件还包含有关该torrent的所有数据包的哈希值? (这些torrent文件是否包含每个数据包的哈希值集合?)
以及如何在torrent文件中构建这些信息?
答案 0 :(得分:2)
.torrent文件是bencoded,这是BEP3中描述的简单编码。
这是一个简化的示例torrent:
{
'announce': 'http://bt1.archive.org:6969/announce',
'created by': 'ia_make_torrent',
'creation date': 1373568576,
'info': {
'files': [
{ 'length': 12355245, 'path': [ 'Commodore_Amiga_TOSEC_2012_04_10.txt' ], },
{ 'length': 33979699024, 'path': [ 'Commodore_Amiga_TOSEC_2012_04_10.zip' ], },
{ 'length': 2821, 'path': [ 'Commodore_Amiga_TOSEC_2012_04_10_meta.xml' ], },
{ 'length': 378737, 'path': [ 'amiga_1000_by_macpengin.jpg' ], },
{ 'length': 4877, 'path': [ 'amiga_1000_by_macpengin_thumb.jpg' ], },
],
'name': 'Commodore_Amiga_TOSEC_2012_04_10',
'piece length': 4194304,
'pieces': '9834f2b6e0b8d9071f2d2db...776f9c910b6622f234872e8'
},
'locale': 'en',
'title': 'Commodore_Amiga_TOSEC_2012_04_10',
}
片段领域缩短了。它包含所有sha-1哈希的碎片,连接(它是二进制形式,但在此表示为可印刷性)。一件不是直接包。
通常,数据包将引用IP数据包(大约1400字节)。在IP之上,您可以使用TCP或uTP作为传输协议。最重要的是,你有BitTorrent协议只交换块(有时称为块)。一个块是16 kiB。一块通常是16的偶数倍,甚至更可能是2的偶数倍。因此,首先下载一些块,将它们连接成一块,然后验证该块的SHA-1哈希。