torrent文件包含数据包的哈希值集合?

时间:2014-01-03 10:33:45

标签: bittorrent

我知道torrent文件包含有关跟踪器的数据和该torrent的哈希值

但我的问题是:

这些torrent文件还包含有关该torrent的所有数据包的哈希值? (这些torrent文件是否包含每个数据包的哈希值集合?)

以及如何在torrent文件中构建这些信息?

1 个答案:

答案 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哈希。