torrent客户如何重新组装和存储作品?


9

我想知道,torrent客户端下载的片段如何存储和重组?他们使用元数据吗?似乎不是这样,因为如果它们是一半格​​式的文件,则可以播放它们?我不知道这是怎么做的?因此,基本上,我想问的是下载文件中的片段是如何组织的?是仅仅是从头到尾,还是两者之间有缓冲空间?


重新检查后是否可以下载一半下载的文件?我的连接就像拨号......所以请帮助。

Answers:


19

欢迎来到洪流的奇妙世界!组成Bittorrent协议的部分内容:您拥有文件legalthing.iso,并希望将其分发给尽可能多的人。因此,您将创建一个描述legalthing.iso的“ torrent”文件,然后通过网站或您喜欢的任何其他方式分发torrent文件。种子文件可以直接指向您的计算机(并且您将充当种子),也可以指向“跟踪器”,该跟踪器是连接“种子”(用户具有完整legacything.iso的服务器)的服务器。文件)和“对等”(正在积极下载文件的用户)。

立即接近您的问题。文件本身legalthing.iso被加密地进行哈希处理,以便每个阅读torrent文件并开始下载legalthing.iso的人都可以对照哈希检查每个文件,并确保他们不会下载从原始文件修改而来的文件。哈希检查失败的片段将被丢弃。

现在,假设您是使用Bittorrent下载文件的计算机。该协议可以通过以下两种方式之一起作用:要么下载文件的随机片段,要么首先下载最稀有的片段。后一种方法是增加种子的整体“健康”(可用性)。

那么实际的torrent文件中有什么?它会根据使用的客户端的不同而有所不同,但通常包含一个“公告”部分,该部分是您正在使用的跟踪器的地址,以及您要下载的所有文件的巨大清单。每块都具有统一的大小(32 kb,512 kb,4mb,实际上是您喜欢的任何大小),并且每块都具有与之关联的哈希。每次同级获得一块时,它都会将该段的哈希(使用SHA-1哈希码)与种子文件中列出的哈希进行比较。这就是它弄清楚各个部分很好的方式。

由于torrent文件会列出您要下载的文件的每个部分,因此,每次客户端成功下载并对其进行哈希处理后,客户端都会将该文件写入文件中硬盘上的正确位置。这就是为什么如果您下载1gb文件,客户端会在磁盘上留出一个1gb的空白空间,以容纳要下载的torrent文件。

现在,某些视频播放器和其他文件查看器可以处理“损坏”的文件。当然,下载了一半的洪流也没有损坏,但缺少内容,对于VLC这样的程序,它看起来很破损。因此,VLC将尽最大努力播放可以找到的任何数据,这就是为什么在部分下载时它们可以播放的原因。

还有很多更复杂的方面(google DHT,torrent写入缓冲,所有有趣的东西),但这是Bittorrent运作方式的基础。


哇,这是一个非常完整的答案....但是我从来没有注意到它真的预留了1GB的文件?看来它是逐步增长的?
Cenoc

1
@Cenoc取决于torrent客户端,一些客户端预分配,有些则没有,有些具有预分配的其他偏好
Sathyajith Bhat

有趣的是,首先它只是一个填充有'0'的文件,然后当第一次检查部分下载的文件时,将其与哈希进行比较吗?
Cenoc

1
它是用于存放最终完整文件的空容器,当客户端下载每个文件时,将对哈希进行检查,然后将其放入容器中的适当位置,直到完整文件完成为止。
geodave

1
正如Sathya所说,这取决于客户。有些会在硬盘驱动器上为整个文件预分配一个空间。它会保留一堆空间,其他程序将无法使用驱动器上的该空间,直到下载文件为止。其他bittorrent客户端会将完成的片段放置在临时存储位置中以保存在驱动器空间中,然后在下载所有片段之后组装完整文件。这取决于您选择的设置。
geodave 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.