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