我想知道,torrent 客户端下载的片段是如何存储和重新组合的?他们使用元数据吗?似乎情况并非如此,因为如果它们是半成形的文件,则可以播放它们?我不知道这是怎么做到的?所以基本上我在问下载文件中的部分是如何组织的?是从头到尾,还是中间有缓冲空间?
geo*_*ave 20
欢迎来到精彩的 Torrent 世界!Bittorrent 协议由几部分组成:你有你的文件,legalthing.iso,你想把它分发给尽可能多的人。因此,您创建了一个描述 legalthing.iso 的“torrent”文件,然后通过网站或您喜欢的任何其他方式分发 torrent 文件。torrent 文件可以直接指向您的计算机(并且您将充当种子),或者 torrent 文件可以指向“跟踪器”,这是一个连接“种子”的服务器(用户与整个 legalthing.iso文件已经)和“同行”(正在积极下载文件的用户)。
现在更接近你的问题。文件本身,legalthing.iso,是经过加密散列的,这样每个阅读 torrent 文件并开始下载 legalthing.iso 的人都可以根据散列检查每个部分,并确保他们没有下载从原始文件中修改过的部分。散列检查失败的部分将被丢弃。
现在假设您是一台使用 Bittorrent 下载文件的计算机。该协议可以通过以下两种方式之一工作,要么下载文件的随机部分,要么首先下载最稀有的部分。后一种方法是增加种子的整体“健康”(可用性)。
那么实际的 torrent 文件中有什么?它根据用于制作它的客户端而有所不同,但通常它包含一个“通知”部分,它是您正在使用的跟踪器的地址,以及您想要下载的所有文件部分的巨大列表。每个片段的大小都是统一的(32 kb、512kb、4mb,实际上是您喜欢的任何大小),并且每个片段都有一个与之关联的哈希值。每次对等方获得一个片段时,它都会将该片段的哈希值(使用 SHA-1 哈希码)与 torrent 文件中列出的哈希值进行比较。这就是它如何确定这些碎片是好的。
由于 torrent 文件列出了您正在下载的文件的每个部分,每次您的客户端成功下载一个部分并对其进行哈希处理时,它都会将该部分写入文件中硬盘上的正确位置。这就是为什么如果您下载一个 1gb 的文件,客户端会在您的磁盘上留出一块 1gb 大小的空白空间,以容纳您将要下载的 Torrent 片段。
现在一些视频播放器和其他文件查看器可以处理“损坏”的文件。当然,下载了一半的 torrent 没有损坏,但它缺少部分,对于像 VLC 这样的程序,它只是看起来损坏了。因此,VLC 将尽其所能播放它可以找到的任何数据,这就是为什么它们可以在部分下载的情况下播放。
还有很多更复杂的方面(谷歌 DHT、torrent 写入缓冲、所有有趣的东西),但这是 Bittorrent 工作原理的基础知识。
| 归档时间: |
|
| 查看次数: |
4942 次 |
| 最近记录: |