Veröffentlichung von libtorrent 2.0 mit Unterstützung für das BitTorrent 2-Protokoll

Eine Hauptversion von libtorrent 2.0 (auch bekannt als libtorrent-rasterbar) wurde eingeführt und bietet eine speicher- und CPU-effiziente Implementierung des BitTorrent-Protokolls. Die Bibliothek wird in Torrent-Clients wie Deluge, qBittorrent, Folx, Lince, Miro und Flush verwendet (nicht zu verwechseln mit der anderen libtorrent-Bibliothek, die in rTorrent verwendet wird). Der Libtorrent-Code ist in C++ geschrieben und wird unter der BSD-Lizenz vertrieben.

Die Veröffentlichung zeichnet sich durch die zusätzliche Unterstützung des BitTorrent v2-Protokolls aus, das von der Verwendung des SHA-1-Algorithmus, der Probleme mit der Kollisionsauswahl hat, zugunsten von SHA2-256 abweicht. SHA2-256 wird sowohl zur Kontrolle der Integrität von Datenblöcken als auch für Einträge in Indizes (Info-Wörterbuch) verwendet, was die Kompatibilität mit DHT und Trackern verletzt. Für magnetische Links zu Torrents mit SHA2-256-Hashes wird ein neues Präfix „urn:btmh:“ vorgeschlagen (für SHA-1 und Hybrid-Torrents wird „urn:btih:“ verwendet).

Da durch das Ersetzen der Hash-Funktion die Protokollkompatibilität beeinträchtigt wird (das Hash-Feld ist 32 Byte statt 20 Byte groß), wurde die BitTorrent v2-Spezifikation zunächst ohne Rücksicht auf die Abwärtskompatibilität entwickelt und andere wichtige Änderungen übernommen, wie beispielsweise die Verwendung von Merkle-Hash-Bäumen in Indizes um die Größe von Torrent-Dateien zu reduzieren und heruntergeladene Daten auf Blockebene zu überprüfen.

Zu den Änderungen in BitTorrent v2 gehören auch der Übergang zur Zuweisung separater Hash-Bäume zu jeder Datei und die Verwendung der Dateiausrichtung in Teilen (ohne zusätzliches Auffüllen nach jeder Datei hinzuzufügen), was die Duplizierung von Daten bei identischen Dateien verhindert und die Identifizierung erleichtert Verschiedene Quellen für Dateien. Verbesserte Effizienz der Torrent-Verzeichnisstrukturkodierung und zusätzliche Optimierungen für die Verarbeitung einer großen Anzahl kleiner Dateien.

Um die Koexistenz von BitTorrent v1 und BitTorrent v2 zu glätten, wurde die Möglichkeit implementiert, hybride Torrent-Dateien zu erstellen, die neben Strukturen mit SHA-1-Hashes auch Indizes mit SHA2-256 enthalten. Diese Hybrid-Torrents können mit Clients verwendet werden, die nur das BitTorrent v1-Protokoll unterstützen. Aufgrund ungelöster Stabilitätsprobleme wurde die erwartete Unterstützung des WebTorrent-Protokolls in libtorrent 2.0 bis zur nächsten Hauptversion verschoben, die erst Ende des Jahres veröffentlicht wird.

Source: linux.org.ru