#piece #selection #peer #bittorrent #infrastructure #module #bip

bip_select

Bittorrent基础设施项目块选择模块

2个不稳定版本

使用旧的Rust 2015

0.1.0 2017年11月4日
0.0.0 2017年1月27日

#3#bip

MIT/Apache

500KB
10K SLoC

Bittorrent基础设施项目

Build Status Build status

用于构建使用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)- Documentation

关于:选择被分为三类算法。首先,我们有块揭示,它专注于确定我们应该向谁揭示哪些块(即使我们没有该块也是如此)。其次,我们有块选择,它专注于我们应该下载/上传哪些块。第三,我们有块排队,给定一个我们想要下载的块,我们应该向哪些节点发送这样的请求。我们可以混合和匹配不同的算法来创建具有与其他节点不同特性的集群。

主线路DHT(bip_dht)- Documentation

关于:主线路DHT用于bittorrent分发对特定文件感兴趣的节点的联系信息。更普遍地,任何应用程序都可以使用主线路DHT以分布式和去中心化的方式发现节点。只要你的应用程序有通过SHA-1哈希(20字节值)公开对其他节点感兴趣的方式,你就可以利用DHT。

示例:例如,一个去中心化聊天应用程序可以要求用户输入要加入的房间名称,然后你可以对该房间名称进行哈希处理并使用该应用程序搜索其他也对加入同一房间感兴趣的节点。

元信息(bip_metainfo)- Documentation

关于:元信息文件的核心作用是为对特定文件感兴趣的客户端提供一个校验和列表,每个散列块的长度以及文件的目录结构。这允许客户端验证接收到的文件完整性,以及能够精确地重新创建文件的目录结构。除此之外,还可以在该文件中包含大量可选信息,例如在DHT中要联系的服务器、要联系跟踪器、以及注释、创建日期、创建元信息文件的人等。

跟踪器(bip_utracker)- Documentation

关于:跟踪器为bittorrent生态系统中的节点发现提供了一个集中式解决方案。客户端向一组特定的跟踪器发送消息,更新它们关于文件下载发生的任何状态变化。然而,我们可以使用开始和停止事件,以通用方式使用跟踪器将我们自己添加到或从跟踪器中删除,以用于任何应用程序的节点发现。

参考

许可证

许可方式如下

任选其一。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您提交的任何有意包含在作品中的贡献,将按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~17MB
~293K SLoC