18 个不稳定版本 (6 个破坏性更新)
使用旧的 Rust 2015
0.7.1 | 2017年10月15日 |
---|---|
0.6.1 | 2017年7月28日 |
0.4.0 | 2016年5月28日 |
0.1.4 | 2016年1月11日 |
0.1.1 | 2015年12月28日 |
#698 在 文件系统
47 每月下载量
在 4 crates 中使用
150KB
3K SLoC
BitTorrent 基础设施项目
一套用于构建使用 BitTorrent 技术的应用程序的库集合。
聊天:irc.mozilla.org #bip.rs
Bencode (bip_bencode) -
关于:Bencode 是 BitTorrent 技术中从元信息文件到 DHT 消息所使用的二进制编码。Bencode 类型包括整数、字节数组、列表和字典,其中最后两个可以包含任何 Bencode 类型(它们可以是递归构建的)。
磁盘 (bip_disk) -
关于:磁盘管理主要是将片段存储到/从实现 FileSystem
接口的对象中,这意味着 BitTorrent 存储可以透明地发送到磁盘、存储在内存中、推送到分布式文件系统,甚至在上传片段时上传到云端。此外,一旦向磁盘管理器发送足够多的块来组成一个完整的片段,就会发出通知。
握手 (bip_handshake) -
关于:握手是连接对等节点并交换有关如何相互通信的信息的过程。在我们的案例中,存在许多可被视为对等节点发现机制(本地对等节点发现、DHT、追踪器、对等节点交换)的比特洪流技术,一旦发现对等节点,客户端可能希望立即尝试通过握手建立连接。此模块提供自定义握手实现的特质,以及标准的比特洪流握手,以便客户端可以为对等节点发现服务指定握手机制,以便将其联系信息转发。
对等节点(bip_peer)-
关于:与比特洪流对等节点通信涉及阻塞(告诉某人我们现在不会回应他们)、表达兴趣(告诉某人,如果我们被解除阻塞,我们将对某些数据感兴趣)以及向对等节点下载和上传数据块。此包定义了一些常见的比特洪流消息,包括在 ExtensionBits
中作为 bip_handshake
部分的消息,以及包含在 扩展协议 中的消息。我们还提供 PeerManager
以心跳对等节点并复用发送到/从对等节点发送的消息,以便客户端更容易与许多对等节点异步通信。
选择(bip_select)-
关于:选择被分为三类算法。首先,我们有 碎片揭露,它专注于确定我们应该向谁揭露哪些碎片(即使我们没有这个碎片...)。其次,我们有 碎片选择,它专注于我们应该下载/上传哪些碎片。第三,我们有 碎片排队,它是在给定我们想要下载的碎片时,我们应该向哪个对等节点发送这样的请求。我们可以混合和匹配不同的算法来创建具有不同于其他蜂群的特性的蜂群。
主线DHT(bip_dht)-
关于:主线DHT用于比特洪流分发对特定文件感兴趣的对等节点的联系信息。更普遍地,任何应用程序都可以使用主线DHT以分布式和去中心化的方式发现对等节点。只要您的应用程序有一种方法通过SHA-1哈希(20字节值)暴露对其他对等节点的兴趣,您就可以利用DHT。
示例:例如,一个去中心化聊天应用程序可以要求用户输入要加入的房间名称,然后您可以对该房间名称进行哈希处理,并使用该应用程序搜索其他也对加入同一房间感兴趣的对等节点。
元信息(bip_metainfo)-
关于:元信息文件的核心作用是为对特定文件感兴趣的客户端提供一组校验和,每个散列碎片应有多长,以及文件的目录结构。这允许客户端验证接收到的文件完整性,以及能够重新创建文件的精确目录结构。除此之外,还可以在此文件中包含大量可选信息,例如在DHT中要联系的网络节点、要联系追踪器、以及注释、创建日期、创建元信息文件的人等。
追踪器(bip_utracker) -
关于:追踪器为 BitTorrent 生态系统中的对等发现提供了一个集中式解决方案。客户端向特定的一组追踪器发送消息,更新它们关于文件下载的任何状态变化。然而,我们可以使用开始和停止事件,将追踪器通用地用于添加或移除自身,以实现任何应用程序的对等发现。
参考文献
- 官方规范
- 可读规范
- 非官方规范
- 其他有趣论文
许可
许可方式为以下之一
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确声明,否则任何有意提交以包含在你所定义的工作中的贡献,根据 Apache-2.0 许可证,应如上双许可,不附加任何额外条款或条件。
依赖项
~12MB
~187K SLoC