9 个版本
使用旧的 Rust 2015
0.4.0 | 2017年11月15日 |
---|---|
0.3.2 | 2017年7月16日 |
0.3.1 | 2016年5月28日 |
0.1.3 | 2016年4月6日 |
0.0.1 | 2015年12月18日 |
#39 in #tracker
83 每月下载量
用于 bip_select
295KB
6.5K SLoC
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消息,包括那些在bip_handshake
中的ExtensionBits
部分,以及包含在扩展协议中的那些。我们还提供了一个PeerManager
,用于心跳对等方和复用对等方之间发送/接收的消息,以便客户端更容易与多个对等方异步通信。
选择(bip_select)-
关于:选择被分为三类算法。首先,我们有片段揭露,它专注于确定我们应该揭露哪些片段(即使我们没有这个片段...)以及向谁揭露。其次,我们有片段选择,它专注于我们应该下载/上传的下一个片段。第三,我们有片段排队,即给定一个我们想要下载的片段,我们应该向哪个对等方发送这样的请求。我们可以混合和匹配不同的算法来创建一个具有不同于其他群组的特征的群组。
主线DHT(bip_dht)-
关于:主线DHT用于bittorrent分发对特定文件感兴趣的对等方的联系信息。更普遍地说,任何应用程序都可以使用主线DHT以分布式和去中心化的方式发现对等方。只要您的应用程序有一种方法通过SHA-1散列(20字节值)来暴露对其他对等方的兴趣,您就可以利用DHT。
示例:例如,一个去中心化聊天应用程序可以要求用户输入要加入的房间名称,然后您可以对该房间名称进行散列,并使用该应用程序搜索其他也对加入同一房间感兴趣的对等方。
元信息(bip_metainfo)-
关于:元信息文件的核心目的是为对特定文件感兴趣的客户提供一个校验和列表,指示每个散列片段应该有多长,以及文件的目录结构。这允许客户验证接收到的文件完整性,以及能够精确地重新创建文件的目录结构。除此之外,此文件中还可以包含大量可选信息,例如在DHT中要联系的网络节点,要联系跟踪器,以及注释、创建日期、创建元信息文件的人等。
跟踪器(bip_utracker)-
关于:跟踪器为bittorrent生态系统中的对等方发现提供了一个集中式解决方案。客户端向一组特定的跟踪器发送消息,更新它们有关文件下载中发生的任何状态变化。然而,我们可以使用启动和停止事件,以通用的方式使用跟踪器添加或删除我们自己,以实现任何应用程序的发现。
参考
- 官方规范
- 可读规范
- 非官方规格
- 其他有趣论文
许可证
许可方式包括以下之一
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的您有意提交的、包含在作品中的任何贡献,将按照上述方式双重许可,不附加任何额外条款或条件。
lib.rs
:
解析和写入UDP跟踪消息的库。
包括默认的BitTorrent UDP跟踪客户端实现和基于自定义特质的BitTorrent UDP跟踪服务器实现。
依赖项
~14MB
~223K SLoC