В чем причина того, что BitTorrent KRPC использует BEncode вместо BSON?

основной DHT, используемый в BitTorrent для распространения списков пиров реализует собственный протокол RPC под названием KRPC. KRPC состоит из словарей BEncoded, которые по сути являются более компактной формой JSON.

Есть ли какие-либо преимущества использования BEncode по сравнению с чем-то вроде BSON (или даже просто сжатием данных)?


person liamzebedee    schedule 16.07.2012    source источник


Ответы (1)


Я подозреваю, что bencode используется по историческим причинам и для облегчения бремени разработчиков, желающих внедрить расширение DHT. Поскольку все клиенты BitTorrent должны иметь работающую реализацию bencode для работы с торрент-файлами (которые представляют собой просто закодированные словари метаданных), реализация DHT с bencode не потребует новых зависимостей проекта.

Также учтите, что DHT использует bencode вместе с двоичным кодированием. Среди прочего, 26-байтовая строка идентификатора узла (20 байтов для идентификатора узла, 6 байтов для адреса/порта ipv4) хранится в виде двоичной строки (см.: http://bittorrent.org/beps/bep_0005.html#contact-encoding), поэтому в действии уже есть некоторые минимальные данные -сжатие, которое происходит.

person gsk    schedule 03.08.2012