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