BEP9 استعادة المعلومات

Proposal 107
Dead
Author sponge
Created 2011-02-23
Last Updated 2011-02-23

نظرة عامة

هذا الاقتراح يتعلق بإضافة استعادة كاملة للمعلومات إلى تنفيذ I2P لـ BEP9.

الدافع

لا يقوم BEP9 بإرسال ملف التورنت بالكامل، وبالتالي يفقد العديد من عناصر القاموس الهامة، ويغير المجموع الكلي SHA1 لملفات التورنت. هذا سيء للروابط المغناطيسية، وسيء لأن المعلومات الهامة تضيع. قوائم المتتبعات، التعليقات، وأي بيانات إضافية تكون مفقودة. من المهم وجود طريقة لاستعادة هذه المعلومات، ويجب أن تضيف شيئا قليلا قدر الإمكان إلى ملف التورنت. كما يجب ألا تكون دائرية التبعية. لا ينبغي أن تؤثر معلومات الاسترداد على العملاء الحاليين بأي شكل من الأشكال. ملفات التورنت التي لا تحتوي على متتبع (عنوان URL للمراقبة هو حرفيا ’trackerless’) لا تحتوي على الحقل الإضافي، حيث أنها مخصصة لاستخدام بروتوكول المغناطيس في الاكتشاف والتنزيل، والذي لا يفقد المعلومات من الأصل.

الحل

كل ما يحتاج إلى القيام به هو ضغط المعلومات التي ستُفقد وتخزينها في قاموس المعلومات.

التنفيذ

  1. إنشاء قاموس المعلومات الطبيعي.
  2. إنشاء القاموس الرئيسي وترك مدخل المعلومات.
  3. الترميز باستخدام bencode، وضغط القاموس الرئيسي باستخدام gzip.
  4. إضافة القاموس الرئيسي المضغوط إلى قاموس المعلومات.
  5. إضافة المعلومات إلى القاموس الرئيسي.
  6. كتابة ملف التورنت.

الاسترداد

  1. فك ضغط مدخل الاسترداد الموجود في قاموس المعلومات.
  2. فك الترميز باستخدام bencode لمدخل الاسترداد.
  3. إضافة المعلومات إلى القاموس المستعاد.
  4. بالنسبة للعملاء على دراية بالمغنطيس، يمكنك الآن التحقق من صحة SHA1.
  5. كتابة ملف التورنت المستعاد.

النقاش

باستخدام الطريقة الموضحة أعلاه، فإن زيادة حجم ملف التورنت صغيرة جداً، من 200 إلى 500 بايت نموذجي. سيتم شحن Robert مع إنشاء مدخل قاموس المعلومات الجديد، ولن يمكن إيقاف تشغيله. هيكل البيانات هو كالتالي:

main dict {
    نصوص المتتبعات، التعليقات، إلخ...
    info : {
        القاموس الرئيسي المشفر والمضغوط بدون قاموس المعلومات وجميع المعلومات المعتادة الأخرى
    }
}