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