ملف تورنت
في نظام توزيع الملفات BitTorrent ، يُعد ملف التورنت أو ملف المعلومات الوصفية ملفًا حاسوبيًا يحتوي على بيانات وصفية حول الملفات والمجلدات المراد توزيعها، وعادةً ما يحتوي أيضًا على قائمة بمواقع الشبكة الخاصة بالمتتبعات ، وهي أجهزة حاسوب تساعد المشاركين في النظام على إيجاد بعضهم البعض وتشكيل مجموعات توزيع فعالة تُسمى الأسراب . [ 1 ] تُسمى ملفات التورنت عادةً بالامتداد.torrent .
يعمل ملف التورنت كجدول محتويات (فهرس) يُمكّن أجهزة الكمبيوتر من العثور على المعلومات باستخدام برنامج تورنت. وبمساعدة ملف التورنت، يُمكن تنزيل أجزاء صغيرة من الملف الأصلي من أجهزة كمبيوتر سبق لها تنزيله. تُتيح هذه "الأجهزة النظيرة" تنزيل الملف بالإضافة إلى الخادم الرئيسي أو بدلاً منه . لا يحتوي ملف التورنت على المحتوى المراد توزيعه، بل يحتوي فقط على معلومات حول تلك الملفات، مثل أسمائها، وبنية مجلداتها ، وأحجامها، وقيم التجزئة المشفرة للتحقق من سلامة الملف.
تم ابتكار نظام التورنت لتخفيف الضغط على الخوادم المركزية، فبدلاً من قيام كل مستخدم بجلب الملفات من الخادم، يُمكن للتورنت مشاركة النطاق الترددي اللازم لنقل الملفات وتقليل وقت تحميل الملفات الكبيرة. توفر العديد من البرامج وأنظمة التشغيل المجانية، مثل توزيعات لينكس المختلفة ، خيار تحميل التورنت للمستخدمين الذين يبحثون عن هذه المزايا. كما تُستخدم التورنت أيضاً لتحميل الملفات الكبيرة الأخرى، مثل ملفات الوسائط المتعددة.
خلفية
عادةً ما يكون الوصول إلى الإنترنت غير متكافئ، حيث يدعم سرعات تنزيل أعلى من سرعات الرفع، مما يحد من عرض النطاق الترددي لكل عملية تنزيل، وأحيانًا يفرض حدودًا قصوى لعرض النطاق الترددي وفترات انقطاع الخدمة. هذا يخلق عدم كفاءة عندما يرغب العديد من الأشخاص في الحصول على نفس مجموعة الملفات من مصدر واحد؛ إذ يجب أن يكون المصدر متصلاً بالإنترنت دائمًا وأن يتمتع بعرض نطاق ترددي هائل للتنزيل. يعالج بروتوكول التورنت هذه المشكلة من خلال توزيع الملفات بشكل لامركزي، مستفيدًا من قدرة المستخدمين على التواصل فيما بينهم عبر شبكة " نظير إلى نظير ".
يُقسّم كل ملف مُراد توزيعه إلى أجزاء معلومات صغيرة تُسمى " قطعًا" . يحقق المستخدمون سرعات تنزيل عالية من خلال طلب عدة قطع من أجهزة كمبيوتر مختلفة في وقت واحد ضمن الشبكة. وبمجرد الحصول على هذه القطع، تُتاح عادةً للتنزيل فورًا من قِبل المستخدمين الآخرين في الشبكة. وبهذه الطريقة، يتوزع عبء الشبكة بين المستخدمين، بدلًا من تركيزه في مركز توزيع أو مجموعة مركزية. وطالما أن جميع القطع متوفرة، يمكن للمستخدمين (المُنزِّلين والمُحمِّلين) الانضمام والمغادرة؛ فلا يشترط أن يمتلك أي مستخدم جميع القطع أو حتى أن يبقى متصلًا بالشبكة لاستمرار التوزيع بين المستخدمين الآخرين.
يُنشأ ملف تورنت صغير لتمثيل ملف أو مجلد مُراد مشاركته. يعمل ملف التورنت كمفتاح لبدء تنزيل المحتوى الفعلي. يحصل المستخدم الراغب في استلام الملف أو المجلد المُشارك أولاً على ملف التورنت المُناسب، إما عن طريق تنزيله مباشرةً أو باستخدام رابط مغناطيسي . ثم يفتح المستخدم هذا الملف في برنامج تورنت، الذي يُؤتمت باقي العملية. لمعرفة مواقع الإنترنت للمستخدمين الذين قد يُشاركون أجزاءً من الملف، يتصل البرنامج بالمتتبعات المذكورة في ملف التورنت، أو يُحقق نتيجة مماثلة باستخدام جداول التجزئة الموزعة (DHS). بعد ذلك، يتصل البرنامج مباشرةً بالمستخدمين لطلب أجزاء من الملف والمشاركة في عملية التورنت. كما يُمكن للبرنامج إبلاغ المتتبعات بالتقدم المُحرز، لمساعدة المتتبع في توصياته للمستخدمين.
عندما يحصل العميل على جميع الأجزاء، يقوم برنامج التورنت بتجميعها في شكل قابل للاستخدام. ويمكنه أيضاً الاستمرار في مشاركة هذه الأجزاء، مما يرفع من مكانته إلى مُوزِّع بدلاً من مُستخدم عادي.
بنية الملفات
يحتوي ملف التورنت على قائمة بالملفات وبيانات تعريفية تتعلق بسلامة جميع الأجزاء، ويحتوي اختيارياً على قائمة كبيرة من المتتبعات .
ملف التورنت هو قاموس مُشفّر باستخدام برنامج Bencoded، ويحتوي على المفاتيح التالية (يتم ترتيب المفاتيح في أي قاموس مُشفّر باستخدام Bencoded ترتيبًا معجميًا ):
- أعلن — عنوان URL الخاص بالمتتبع
- معلومات — هذا يشير إلى قاموس تعتمد مفاتيحه بشكل كبير على ما إذا كان يتم مشاركة ملف واحد أو أكثر:
- الملفات — قائمة من القواميس، كل قاموس منها يُقابل ملفًا (فقط عند مشاركة عدة ملفات). يحتوي كل قاموس على المفاتيح التالية:
- الطول — حجم الملف بالبايت.
- المسار — قائمة من السلاسل النصية التي تُطابق أسماء الدلائل الفرعية، وآخرها هو اسم الملف الفعلي
- الطول — حجم الملف بالبايت (فقط عند مشاركة ملف واحد)
- الاسم — اسم الملف المقترح حيث سيتم حفظ الملف (في حالة وجود ملف واحد) / اسم المجلد المقترح حيث سيتم حفظ الملفات (في حالة وجود عدة ملفات)
- طول القطعة — عدد البايتات لكل قطعة. عادةً ما يكون 28 كيلوبايت = 256 كيلوبايت = 262144 بايت.
- الأجزاء - قائمة تجزئة ، أي سلسلة من تجزئة SHA-1 لكل جزء . بما أن SHA-1 تُرجع تجزئة بطول 160 بت، فإن الأجزاء ستكون سلسلة نصية طولها من مضاعفات 20 بايت. إذا كان ملف التورنت يحتوي على عدة ملفات، تُشكّل الأجزاء بدمج الملفات بالترتيب الذي تظهر به في قاموس الملفات (أي أن جميع الأجزاء في ملف التورنت بطول الجزء الكامل باستثناء الجزء الأخير، الذي قد يكون أقصر).
- الملفات — قائمة من القواميس، كل قاموس منها يُقابل ملفًا (فقط عند مشاركة عدة ملفات). يحتوي كل قاموس على المفاتيح التالية:
يجب أن تكون جميع السلاسل مشفرة بنظام UTF-8 ، باستثناء الأجزاء التي تحتوي على بيانات ثنائية.
يُعرَّف ملف التورنت بشكل فريد بواسطة تجزئة معلوماتية (infohash) ، وهي تجزئة SHA-1 تُحسب بناءً على محتويات قاموس المعلومات بصيغة bencode . لا تؤثر التغييرات التي تطرأ على أجزاء أخرى من ملف التورنت على هذه التجزئة. تُستخدم هذه التجزئة لتعريف ملف التورنت لدى النظراء الآخرين عبر DHT ولدى المتتبع. كما تُستخدم أيضًا في روابط المغناطيس .
BitTorrent الإصدار الثاني
يُقدّم بروتوكول BitTorrent v2 (BEP-0052) تعريفًا جديدًا لملف التورنت. [ 2 ] ويتمثل الهيكل الأساسي فيما يلي:
- أعلن — عنوان URL الخاص بالمتتبع
- معلومات — هذا يشير إلى قاموس تعتمد مفاتيحه على ما إذا كان يتم مشاركة ملف واحد أو أكثر:
- الاسم — اسم المجلد المقترح حيث سيتم حفظ الملفات
- طول القطعة — عدد البايتات لكل قطعة. عادةً ما يكون 28 كيلوبايت = 256 كيلوبايت = 262144 بايت. في الإصدار الثاني، يجب أن يكون قوة للعدد 2.
- النسخة الميتا — رقم، "2".
- شجرة الملفات — شجرة من القواميس. يمثل كل مفتاح اسم دليل أو اسم ملف. الملف هو
- الطول — حجم الملف بالبايت (فقط عند مشاركة ملف واحد)
- جذر القطعة — بالنسبة للملفات غير الفارغة، هذا هو التجزئة الجذرية لشجرة ميركل بعامل تفرع 2، تم إنشاؤها من كتل 16 كيلوبايت من الملف.
- طبقات القطعة - قاموس من السلاسل، يحتوي على النوع الجديد من تجزئات جذر ميركل لكل قطعة.
يستخدم التنسيق الجديد خوارزمية SHA-256 في كلٍ من تجزئة الأجزاء وتجزئة المعلومات ، ليحل محل تجزئة SHA-1 المعطوبة . سيحتوي رابط المغناطيس "btmh" على التجزئة الكاملة بحجم 32 بايت، بينما يستخدم الاتصال مع المتتبعات وعلى شبكة DHT نسخةً مختصرةً بحجم 20 بايت لتتوافق مع بنية الرسالة القديمة. [ 2 ] من الممكن إنشاء ملف تورنت يحتوي فقط على الحقول الجديدة المُحدَّثة لتورنت "v2"، أو باستخدام الحقول القديمة والجديدة معًا لتنسيق "هجين". مع ذلك، نظرًا لاختلاف تجزئة المعلومات في شبكات v1 وv2، سيتشكل سربان، مما يتطلب معالجةً خاصةً من العميل لدمجهما. [ 3 ]
من أبرز ميزات التنسيق الجديد تطبيقه لأشجار ميركل ، مما يسمح بالتحقق من أجزاء بحجم 16 كيلوبايت من الملف وإعادة تنزيلها بشكل فردي. يشغل كل ملف الآن حجم الجزء الكامل، وله تجزئة جذر ميركل مستقلة، مما يُمكّن من العثور على ملفات مكررة في ملفات تورنت غير مترابطة مهما كان حجم الجزء. لم يتم تقليل حجم الملف (بافتراض ثبات حجم الجزء؛ يسمح هيكل الشجرة في الإصدار الثاني بأجزاء أكبر مع آثار جانبية أقل)، ولكن تم تقليل قاموس المعلومات المطلوب لروابط المغناطيس (في ملفات التورنت التي تستخدم الإصدار الثاني فقط). [ 3 ]
الإضافات
يمكن أن يحتوي ملف التورنت أيضًا على بيانات وصفية إضافية مُعرَّفة في امتدادات لمواصفات BitTorrent. [ 4 ] تُعرف هذه باسم "مقترحات تحسين BitTorrent". ومن أمثلة هذه المقترحات بيانات وصفية تُحدد هوية مُنشئ ملف التورنت وتاريخ إنشائه.
التمديدات المقبولة
تم تطبيق هذه الإضافات في واحد أو أكثر من التطبيقات، كما أثبتت جدواها من خلال استخدامها المستمر والواسع النطاق. ورغم أنها قد تتطلب تعديلات طفيفة، إلا أنها تُعتبر مكتملة إلى حد كبير، ولا تنتظر سوى موافقة برام كوهين ليتم اعتمادها كعملية نهائية/فعّالة.
جداول التجزئة الموزعة
BEP-0005 [ 5 ] يوسع BitTorrent لدعم جداول التجزئة الموزعة ، وتحديداً Mainline DHT .
لا يحتوي قاموس التورنت الخالي من المتتبعات على مفتاح إعلان . بدلاً من ذلك، يحتوي التورنت الخالي من المتتبعات على مفتاح عقدة .
{ # ... 'nodes' : [[ "<host>" , <port> ], [ "<host>" , <port> ], ... ], # ... }على سبيل المثال،
'nodes' : [[ "127.0.0.1" , 6881 ], [ "your.router.node" , 4804 ]] ,توصي المواصفات بأن يتم تعيين العقد إلى أقرب K عقدة في جدول توجيه العميل الذي يقوم بإنشاء ملف التورنت. بدلاً من ذلك، يمكن تعيين المفتاح إلى عقدة جيدة معروفة مثل تلك التي يديرها الشخص الذي يقوم بإنشاء ملف التورنت.
أجهزة تتبع متعددة
BEP-0012 [ 6 ] يوسع BitTorrent لدعم العديد من المتتبعات.
يتم وضع مفتاح جديد، announce-list ، في القاموس العلوي (أي مع announce و info ).
{ # ... 'announce-list' : [[ '<tracker1-url>' ][ '<tracker2-url>' ]], # ... }بذور HTTP
BEP-0019 [ 7 ] هو أحد الامتدادين اللذين يسمحان باستخدام بذور HTTP في BitTorrent.
في BEP-0019، يُضاف مفتاح جديد url-listإلى القائمة الرئيسية. يستخدم العميل هذه الروابط لإنشاء عناوين URL عادية لبروتوكول HTTP ، دون الحاجة إلى أي دعم من جانب الخادم. تُستخدم هذه الميزة بكثرة في مشاريع البرمجيات مفتوحة المصدر التي توفر تنزيلات البرامج. تتيح ميزة "بذور الويب" للعميل اختيار مواقع النسخ المتطابقة واستخدامها في آنٍ واحد ، سواءً كانت مواقع P2P أو HTTP(S). يُقلل هذا من الحمل على خوادم المشروع مع زيادة سرعة التنزيل إلى أقصى حد. يقوم MirrorBrain تلقائيًا بإنشاء ملفات التورنت باستخدام بذور الويب.
تورنت خاص
BEP-0027 [ 8 ] يوسع BitTorrent لدعم ملفات التورنت الخاصة.
يتم وضع مفتاح جديد، خاص ، في قاموس المعلومات . قيمة هذا المفتاح هي 1 إذا كان ملف التورنت خاصًا:
{ # ... 'info' : { # ... 'private' : 1 , # ... }, # ... }تُستخدم ملفات التورنت الخاصة مع مُتتبع خاص . يُقيّد هذا المُتتبع الوصول إلى ملفات التورنت التي يُتابعها عن طريق التحقق من عنوان IP الخاص بالمُستخدم، ويرفض تقديم قائمة بالمُستخدمين إذا كان عنوان IP غير معروف. عادةً ما يكون المُستخدم مُسجلاً لدى المُتتبع عبر مُجتمع إلكتروني مُغلق؛ كما يحتفظ المُتتبع الخاص عادةً بإحصائيات نقل البيانات لاستخدامها في المُجتمع.
تم تعطيل الطرق اللامركزية مثل DHT وPeX و LSD للحفاظ على التحكم المركزي. يمكن تعديل ملف تورنت خاص يدويًا لإزالة علامة الخصوصية، لكن ذلك سيؤدي إلى تغيير قيمة التجزئة (بشكل حتمي)، مما يُشكّل "مجموعة" منفصلة من النظراء. من ناحية أخرى، لن يؤدي تغيير قائمة المتتبعات إلى تغيير قيمة التجزئة. لا توفر علامة الخصوصية خصوصية حقيقية، بل تعمل كاتفاق شفهي .
تمديدات المسودات
تخضع هذه التوسعات للدراسة بهدف توحيدها. وقد تم اعتماد معظمها بالفعل على نطاق واسع كمعايير فعلية .
بذور HTTP
BEP-0017 [ 9 ] يوسع BitTorrent لدعم HTTP seeds، والتي يطلق عليها لاحقًا اسم "web seeds" لتشمل HTTPS .
في BEP-0017، أُضيف مفتاح جديد، httpseeds ، إلى القائمة الرئيسية (أي مع announce و info ). قيمة هذا المفتاح هي قائمة بعناوين مواقع الويب التي يمكن من خلالها استرداد بيانات التورنت. يتطلب ذلك دعمًا خاصًا من الخوادم. ولا يزال في حالة مسودة.
{ # ... 'httpseeds' : [ 'http://www.site1.com/source1.php' , 'http://www.site2.com/source2.php' ], # ... }أشجار ميركل
يُوسّع BEP-0030 [ 10 ] بروتوكول BitTorrent لدعم أشجار Merkle (التي طُبّقت أصلاً في Tribler ). والهدف من ذلك هو تقليل حجم ملفات التورنت، مما يُخفف العبء على مُقدّمي خدمات التورنت.
لا يحتوي ملف التورنت الذي يستخدم أشجار ميركل على مفتاح pieces في قائمة المعلومات . بدلاً من ذلك، يحتوي هذا الملف على مفتاح root_hash في قائمة المعلومات . قيمة هذا المفتاح هي التجزئة الجذرية لتجزئة ميركل.
{ # ... 'info' : { # ... 'root hash' : <binary SHA1 hash> , # ... }, # ... }يستخدم برنامج BitTorrent v2 نوعًا مختلفًا من شجرة Merkle. [ 3 ]
أمثلة
ملف واحد
قد يبدو ملف التورنت الذي تم فك تشفيره ( بطول جزء 256 كيلوبايت = 262,144 بايت) لملف debian-503-amd64-CD-1.iso (الذي يبلغ حجمه 678301696 بايت) كما يلي:
{ 'announce' : 'http://bttracker.debian.org:6969/announce' , 'info' : { 'length' : 678301696 , 'name' : 'debian-503-amd64-CD-1.iso' , 'piece length' : 262144 , 'pieces' : <binary SHA1 hashes> } }ملفات متعددة
قد يبدو ملف التورنت بعد فك تشفيره ( بطول 256 كيلوبايت = 262144 بايت) لملفين، 111.txt و 222.txt ، كما يلي:
{ 'announce' : 'http://tracker.example.com/announce' , 'info' : { 'files' : [ { 'length' : 111 , 'path' : [ '111.txt' ]}, { 'length' : 222 , 'path' : [ '222.txt' ]} ], 'name' : 'directoryName' , 'piece length' : 262144 , 'pieces' : <binary SHA1 hashes> } }ملفات متعددة مختلطة
انظر أيضاً
مراجع
- 1 2 "BEP-0003: مواصفات بروتوكول بت تورنت" . Bittorrent.org. مؤرشف من الأصل بتاريخ 26-07-2019 . تم الاطلاع عليه بتاريخ 22-10-2009 .
- 1 2 3 "bep_0052.rst_post" . bittorrent.org . مؤرشف من الأصل بتاريخ 12-11-2020 . تم الاطلاع عليه بتاريخ 09-02-2023 .
- 1 2 3 "BitTorrent v2" . Libtorrent . سبتمبر 2020. مؤرشف من الأصل بتاريخ 30 أكتوبر 2020. تم الاطلاع عليه بتاريخ 9 فبراير 2023 .
- ↑ "BEP-0000: فهرس مقترحات تحسين BitTorrent" . Bittorrent.org. مؤرشف من الأصل بتاريخ 11 فبراير 2010. تم الاطلاع عليه بتاريخ 22 أكتوبر 2009 .
- ↑ "BEP-0005: بروتوكول DHT" . Bittorrent.org. مؤرشف من الأصل بتاريخ 13 فبراير 2010. تم الاطلاع عليه بتاريخ 22 أكتوبر 2009 .
- ↑ "BEP-0012: امتداد بيانات تعريف المسارات المتعددة" . Bittorrent.org. مؤرشف من الأصل بتاريخ 27-12-2012 . تم الاطلاع عليه بتاريخ 22-10-2009 .
- ↑ "bep_0019.rst_post" . www.bittorrent.org .
- ↑ "BEP-0027: ملفات تورنت خاصة" . Bittorrent.org. مؤرشف من الأصل بتاريخ 24-03-2013 . تم الاطلاع عليه بتاريخ 22-10-2009 .
- ↑ "BEP-0017: HTTP Seeding" . Bittorrent.org. مؤرشف من الأصل بتاريخ 13 ديسمبر 2013. تم الاطلاع عليه بتاريخ 22 أكتوبر 2009 .
- ↑ "BEP-0030: امتداد تورنت لتجزئة Merkle" . Bittorrent.org. مؤرشف من الأصل بتاريخ 14-09-2009 . تم الاطلاع عليه بتاريخ 22-10-2009 .
روابط خارجية
- بت تورنت
- تنسيقات ملفات الحاسوب
