我阅读了这里的官方文档和有关BitTorrent客户端的维基百科文章这里,但无法找到tracker的确切工作方式。据我理解,tracker应该知道哪个对等方拥有某个文件的哪一部分。例如,客户端1拥有文件1的5个部分和文件2的10个部分。在官方文档中,我看到tracker有像peer_id ip port uploaded downloaded left和event这样的字段,但我没有看到我们正在跟踪哪个文件的信息。例如,如果我向tracker请求获取linux.torrent文件的部分,tracker会如何回答我?
一个tracker的工作是,当一个peer向特定的swarm(由info_hash标识)宣布时,将该peer注册为该swarm上的活动peer,并向该peer发送包含该swarm上其他活动peer的peer列表。一个tracker不会跟踪一个peer拥有哪些pieces或files。我建议您阅读非官方协议规范:https://wiki.theory.org/index.php/BitTorrentSpecification ,它比BEP-3更易于理解。