1 个不稳定版本
使用旧的 Rust 2015
0.0.1 | 2016年1月2日 |
---|
#9 in #magnet
1KB
BitTorrent 基础设施项目
一组用于构建基于 BitTorrent 技术的应用程序的 crate。
聊天:irc.mozilla.org #bip.rs
Bencode (bip_bencode) -
关于: Bencode 是 BitTorrent 技术中从元信息文件到 DHT 消息所使用的二进制编码。Bencode 类型包括整数、字节数组、列表和字典,其中最后两种可以包含任何 Bencode 类型(它们可以递归构造)。
磁盘 (bip_disk) -
关于: 磁盘管理涉及将块从/到任何实现 FileSystem
接口的对象存储/加载,这意味着 BitTorrent 存储可以被透明地发送到磁盘,存储在内存中,推送到分布式文件系统,甚至随着块的到来上传到云端。此外,一旦向磁盘管理器发送足够多的块以构成一个完整的块,就会立即发送通知,检测到好或坏的块。
握手 (bip_handshake) -
关于: 握手是与对等方连接并交换有关对等方如何与您通信以及您如何与对等方通信的信息的过程。在我们的情况下,有许多 BitTorrent 技术通常被认为是发现机制(本地对等方发现、DHT、跟踪器、对等方交换),一旦发现对等方,客户端可能希望立即通过握手尝试建立连接。此模块提供了一种自定义握手实现的 trait,以及标准的 BitTorrent 握手,以便客户端可以指定用于将联系信息转发给对等方发现服务的握手机制。
对等方 (bip_peer) -
关于:与bittorrent节点通信涉及节流(告诉某人我们现在不会回应他们),表达兴趣(告诉某人,如果我们未被节流,我们会对他们的某些数据感兴趣),以及向节点下载和上传数据块。此包定义了一些常见的bittorrent消息,包括那些在ExtensionBits
中的消息,这些消息是bip_handshake
的一部分,以及那些包含在扩展协议中的消息。我们还提供了一个PeerManager
,用于心跳节点和复用发送给/从节点的消息,以便客户端更容易与多个节点异步通信。
选择(bip_select)-
关于:选择被分为三类算法。首先,我们有块揭示,它专注于确定我们应该向谁揭示哪些块(即使我们没有这个块...)。其次,我们有块选择,它专注于我们应该下载/上传哪些块。第三,我们有块排队,它是在给定一个我们想要下载的块时,我们应该向哪个节点发送这样的请求。我们可以混合不同的算法来创建一个与其他群体可能具有不同特性的群体。
主线DHT(bip_dht)-
关于:主线DHT用于bittorrent分发对特定文件感兴趣的节点的联系信息。更普遍地说,任何应用都可以使用主线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许可证定义的您有意提交的任何贡献,均应以上述双许可方式许可,无需任何额外的条款或条件。