在BitTorrent中用于分发对等点列表的Mainline DHT实现了一个称为 KRPC 的自定义 RPC 协议。KRPC 由 BEncoded 字典组成,它们本质上是一种更紧凑的 JSON 形式。
使用 BEncode 比 BSON (甚至只是压缩数据)有什么好处吗?
在BitTorrent中用于分发对等点列表的Mainline DHT实现了一个称为 KRPC 的自定义 RPC 协议。KRPC 由 BEncoded 字典组成,它们本质上是一种更紧凑的 JSON 形式。
使用 BEncode 比 BSON (甚至只是压缩数据)有什么好处吗?
我怀疑这bencode
是出于历史原因并减轻想要实现 DHT 扩展的开发人员的负担。由于所有 BitTorrent 客户端都必须有一个有效的bencode
实现来处理 torrent 文件(它们只是元数据的编码字典),因此实现 DHTbencode
不需要新的项目依赖项。
此外,请考虑 DHTbencode
与二进制编码一起使用。其中,26 字节节点标识符字符串(20 字节用于节点 ID,6 字节用于 ipv4 地址/端口)被存储为二进制字符串(参见:http ://bittorrent.org/beps/bep_0005.html #contact-encoding),因此实际上已经发生了一些最小的数据压缩。