12个版本 (5个重大变更)
使用旧的Rust 2015
0.5.0 | 2017年10月19日 |
---|---|
0.4.1 | 2017年10月15日 |
0.3.1 | 2017年10月7日 |
0.3.0 | 2017年9月28日 |
0.0.0 | 2015年12月18日 |
#20 in #wire
每月44次下载
用于 bip_select
325KB
6.5K SLoC
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消息,包括那些作为ExtensionBits
的bip_handshake
部分,以及那些包含在扩展协议中的消息。我们还提供了一个PeerManager
,用于心跳对等方和多路复用发送到/从对等方发送的消息,以便客户端更容易地与许多对等方异步通信。
选择(bip_select) -
关于:选择被分成三类算法。首先,我们有片段揭示,它侧重于确定我们应该向谁揭示哪些片段(即使我们没有这个片段...)。其次,我们有片段选择,它侧重于我们应该下载/上传哪些片段。第三,我们有片段排队,给定一个我们想要下载的片段,我们应该向哪个对等方发送此类请求。我们可以混合和匹配不同的算法来创建可能具有不同于其他swarm的特征的swarm。
主线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许可证定义的,任何有意提交以包含在您的工作中的贡献,都将根据上述许可双授权,无需任何额外的条款或条件。
依赖关系
约15MB
约251K SLoC