Выпуск libtorrent 2.0 с поддержкой протокола BitTorrent 2
Представлен значительный выпуск библиотеки libtorrent 2.0, предлагающей реализацию протокола BitTorrent, эффективную с точки зрения потребления памяти и нагрузки на CPU. Библиотека задействована в таких торрент-клиентах, как Deluge, qBittorrent Folx, Lince, Miro и Flush (не путать с другой библиотекой libtorrent, которая используется в rTorrent). Код libtorrent написан на языке C++ и распространяется под лицензией BSD.
Выпуск примечателен добавлением поддержки протокола BitTorrent v2, в котором осуществлён уход от использования алгоритма SHA-1, имеющего проблемы с подбором коллизий, в пользу SHA2–256. SHA2–256 применяется как для контроля целостности блоков данных, так и для записей в индексах (info-dictionary), что нарушает совместимость с DHT и трекерами. Для магнитных ссылок на торренты с хэшами SHA2–256 предложен новый префикс «urn: btmh:» (для SHA-1 и гибридных торрентов используется «urn: btih:»).
Так как замена функции хэширования нарушает совместимость протокола (поле с хэшем 32 байта вместо 20 байт) разработка спецификации BitTorrent v2 изначально велась без оглядки на обратную совместимость и в состав были приняты другие существенные изменения, такие как использование хеш-дерева Меркла в индексах для сокращения размера torrent-файлов и проверки загруженных данных на уровне блоков.
Из изменений в BitTorrent v2 также выделяется переход к привязке отдельных хэш-деревьев к каждому файлу и применение выравнивания файлов по частям (без добавления добавочного заполнения после каждого файла), что позволяет избавиться от дублирования данных при наличии одинаковых файлов и упрощает выявления разных источников для файлов. Повышена эффективность кодирования структуры каталогов в торренте и добавлены оптимизации для обработки большого числа мелких файлов.
Для сглаживания сосуществования BitTorrent v1 и BitTorrent v2 реализована возможность создания гибридных torrent-файлов, которые включают помимо структур с хэшами SHA-1, индексы с SHA2–256. Указанные гибридные торренты могут использоваться с клиентами, поддерживающими только протокол BitTorrent v1. Ожидаемая в libtorrent 2.0 поддержка протокола WebTorrent из-за нерешённых проблем со стабильностью отложена до следующего значительного выпуска, который выйдет не раньше конца года.
Источник: http://www.opennet.ru/opennews/art.shtml? num=53669
© OpenNet