การเปิดตัว libtorrent 2.0 พร้อมรองรับโปรโตคอล BitTorrent 2

มีการเปิดตัว libtorrent 2.0 ครั้งใหญ่ (หรือที่รู้จักในชื่อ libtorrent-rasterbar) ซึ่งนำเสนอการใช้งานโปรโตคอล BitTorrent ที่มีประสิทธิภาพหน่วยความจำและ CPU ไลบรารีนี้ใช้ในไคลเอนต์ทอร์เรนต์เช่น Deluge, qBittorrent, Folx, Lince, Miro และ Flush (อย่าสับสนกับไลบรารี่ libtorrent อื่น ๆ ที่ใช้ใน rTorrent) รหัส libtorrent เขียนด้วยภาษา C++ และเผยแพร่ภายใต้ใบอนุญาต BSD

การเปิดตัวครั้งนี้มีความโดดเด่นในด้านการเพิ่มการรองรับโปรโตคอล BitTorrent v2 ซึ่งเลิกใช้อัลกอริธึม SHA-1 ซึ่งมีปัญหาในการเลือกการชนกัน เพื่อสนับสนุน SHA2-256 SHA2-256 ใช้เพื่อควบคุมความสมบูรณ์ของบล็อกข้อมูลและสำหรับรายการในดัชนี (พจนานุกรมข้อมูล) ซึ่งละเมิดความเข้ากันได้กับ DHT และเครื่องติดตาม สำหรับลิงก์แม่เหล็กไปยังทอร์เรนต์ที่มีแฮช SHA2-256 จะมีการเสนอคำนำหน้าใหม่ “urn:btmh:” (สำหรับ SHA-1 และทอร์เรนต์แบบไฮบริด จะใช้ “urn:btih:”)

เนื่องจากการแทนที่ฟังก์ชันแฮชจะทำให้ความเข้ากันได้ของโปรโตคอลเสียหาย (ฟิลด์แฮชคือ 32 ไบต์แทนที่จะเป็น 20 ไบต์) ข้อมูลจำเพาะของ BitTorrent v2 จึงได้รับการพัฒนาในขั้นต้นโดยไม่คำนึงถึงความเข้ากันได้แบบย้อนหลัง และมีการเปลี่ยนแปลงที่สำคัญอื่น ๆ ถูกนำมาใช้ เช่น การใช้ Merkle hash tree ในดัชนี เพื่อลดขนาดไฟล์ทอร์เรนต์และตรวจสอบข้อมูลที่ดาวน์โหลดในระดับบล็อก

การเปลี่ยนแปลงใน BitTorrent v2 ยังรวมถึงการเปลี่ยนไปใช้การกำหนดแฮชทรีแยกกันให้กับแต่ละไฟล์ และการใช้การจัดตำแหน่งไฟล์ในส่วนต่างๆ (โดยไม่ต้องเพิ่มช่องว่างเพิ่มเติมหลังแต่ละไฟล์) ซึ่งจะช่วยลดความซ้ำซ้อนของข้อมูลเมื่อมีไฟล์ที่เหมือนกัน และทำให้ง่ายต่อการระบุ แหล่งต่าง ๆ สำหรับไฟล์. ปรับปรุงประสิทธิภาพของการเข้ารหัสโครงสร้างไดเร็กทอรี torrent และเพิ่มการเพิ่มประสิทธิภาพสำหรับการจัดการไฟล์ขนาดเล็กจำนวนมาก

เพื่อให้การอยู่ร่วมกันของ BitTorrent v1 และ BitTorrent v2 ราบรื่นขึ้น จึงมีการนำความสามารถในการสร้างไฟล์ทอร์เรนต์แบบไฮบริดมาใช้ ซึ่งรวมถึง นอกเหนือจากโครงสร้างที่มีแฮช SHA-1 แล้ว ยังสร้างดัชนีด้วย SHA2-256 อีกด้วย ทอร์เรนต์แบบไฮบริดเหล่านี้สามารถใช้กับไคลเอนต์ที่รองรับโปรโตคอล BitTorrent v1 เท่านั้น เนื่องจากปัญหาด้านความเสถียรที่ยังไม่ได้รับการแก้ไข การสนับสนุนที่คาดหวังสำหรับโปรโตคอล WebTorrent ใน libtorrent 2.0 จึงถูกเลื่อนออกไปจนกว่าจะถึงรุ่นหลักครั้งต่อไป ซึ่งจะไม่ได้รับการปล่อยตัวจนถึงสิ้นปี

ที่มา: linux.org.ru