使用BEncode而不是BSON的BitTorrent KRPC背后的原因是什么?

lia*_*dee 5 encoding rpc json bittorrent bson

BitTorrent中用于分发对等列表的Mainline DHT实现了一个名为KRPC的自定义RPC协议.KRPC由BEncoded词典组成,它本质上是一种更紧凑的JSON形式.

使用BEncode比BSON(或者甚至只压缩数据)有什么好处?

gsk*_*gsk 3

我怀疑这bencode是出于历史原因而使用的,也是为了减轻想要实现 DHT 扩展的开发人员的负担。由于所有 BitTorrent 客户端都必须有一个有效的bencode实现来处理 torrent 文件(它们只是元数据的编码字典),因此实现 DHTbencode不需要新的项目依赖项。

另外,请考虑 DHTbencode与二进制编码一起使用。其中,26 字节节点标识符字符串(20 字节用于节点 ID,6 字节用于 ipv4 地址/端口)被存储为二进制字符串(请参阅: http: //bittorrent.org/beps/bep_0005.html #contact-encoding),因此实际上已经发生了一些最小的数据压缩。