#peer #discovery #local #service

bip_lpd

bittorrent本地节点/服务发现机制的实现

1个不稳定版本

使用旧的Rust 2015

0.0.0 2015年12月18日

#118 in #peer

MIT许可协议

1KB

Bittorrent基础设施项目

Build Status Build status

一个用于构建使用bittorrent技术的应用的crate集合。

聊天:irc.mozilla.org #bip.rs

Bencode (bip_bencode) - Documentation

关于: Bencode是bittorrent技术中使用的二进制编码,从元信息文件到DHT消息。Bencode类型包括整数、字节数组、列表和字典,其中最后两种可以包含任何Bencode类型(它们可以是递归构造的)。

磁盘 (bip_disk) - Documentation

关于: 磁盘管理涉及将块存储到或从实现FileSystem接口的对象中,这意味着种子存储可以透明地发送到磁盘,存储在内存中,推送到分布式文件系统,或者甚至在上传块时上传到云。此外,当检测到好或坏的块时,将通知发送到磁盘管理器,这些块构成了一个完整的块。

握手 (bip_handshake) - Documentation

关于: 握手是连接到节点并交换有关节点如何与您通信以及相反通信的信息的过程。在我们的情况下,有许多bittorrent技术通常可以被认为是节点发现机制(本地节点发现、DHT、跟踪器、节点交换),一旦发现节点,客户端可能希望立即尝试通过握手建立连接。此模块提供用于自定义握手实现的trait以及标准bittorrent握手,以便客户端可以指定用于节点发现服务的握手机制,以将联系信息转发。

节点 (bip_peer) - Documentation

关于:与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许可证定义的,您有意提交以包含在作品中的任何贡献,应按上述方式双重许可,不附加任何额外条款或条件。

无运行时依赖