片段索引在bittorrent文件传输中的意义?

时间:2014-12-01 05:55:39

标签: bittorrent

我正在使用bittorrent协议研究文件传输,并且有兴趣知道与每个部分关联的piece index在重新排列部分中是否有任何意义。这是piece index分配的?除了使用.torrent文件中的哈希值重新排列部分之外,还有其他一些方法吗?

1 个答案:

答案 0 :(得分:1)

相关的元信息

torrent的元数据包含足够的信息来重新组装和验证torrent描述的数据,而不管数据到达的顺序如何。完整定义可以找到here,对于您的问题,有一些重要的部分。

  

info 这会映射到字典,其中包含下面介绍的密钥。

  

映射到长度为20的倍数的字符串。它将被细分为长度为20的字符串,每个字符串都是相应索引处的片段的SHA1哈希值。 / p>

  

出于其他键的目的,通过按文件列表中出现的顺序连接文件,多文件案例被视为只有一个文件。

最后

  

片段长度映射到文件被分割成的每个片段中的字节数。出于传输的目的,文件被分成固定大小的片段,除了可能被截断的最后一个片段之外,它们的长度都相同。片长几乎总是2的幂,最常见的是2 18 = 256 K(版本3.2之前的BitTorrent默认使用2 20 = 1 M)。

结果

一起拍摄。假设 .torrent 描述的基础数据按照从 0 NumPieces 的顺序排列。所有的部分都是完全相同的长度,可能是最后一个,因此 piece_index X piece_size 将给出从开头到那个部分的字节偏移量适合数据。多个文件被视为全部连接在一起。每个部分哈希位于开头的 piece_index X 20 字节。现在,因为位于信息部分,如果您通过更改其索引来重新排列片段,这将更改信息部分的SHA1哈希,从而更改infoHash,改变洪流。这是设计的,因此可以验证数据的真实性。实际上,不可能以错误的顺序伪造或意外重新组装碎片,因为infoHash是最终检查是否正确而是检查数据是对的。