بت تورنت

أبو حمزة
ساهم بشكل رئيسي في تحرير هذا المقال

بت تورنت (BitTorrent) مصطلح يطلق على أحد بروتوكولات مشاركة الملفات عبر الانترنت والمسماة الند للند أو النظير للنظير أو ما يعرف باللغة الإنجليزية (Peer-to-peer). ويسمح بروتوكول البت تورنت بتبادل الملفات بين المستخدمين دون وجود وسيط عدا التراكر (Tracker) وهو برنامج عادة ما يكون مستضاف على سيرفر (Server) والذي يتكفل بتنسيق عملية الاتصال مابين النظراء (المستخدمين). كل نظير يقوم بتحميل (Download) البيانات وفي نفس اللحظة يقوم برفع (Upload) البيانات إلى النظراء الأخرين.

في أبريل 2001 قام المبرمج برام كوهين (Bram Cohen) بتصميم البروتوكول؛ وتم تطبيقة لأول مره في 2 يوليو (تموز) 2001 وهو مدعوم من شركة كوهين "بت تورنت، إنك" (BitTorrent, Inc). واللغة المستخدمة في برمجة البروتوكول هي لغة بايثون (Python).


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

كيفية عمل البروتوكول

يسمح بروتوكل البت تورنت بتبادل الملفات كبيرة الحجم عبر الإنترنت دون التعرض لمشاكل كثرة الطلبات والضغط التي تتعرض لها المخدمات العادية، كما أنه يسمح للأجهزة ذات الموارد الضعيفة (كهالهواتف الذكية مثلاً) بالمشاركة في عملية تبادل البيانات ذات الحجوم الكبيرة.

في هذه الصورة: الأشرطة الملونة تحت كل من العملاء السبعة تمثل الملف، فكل لون يمثل قطعة واحدة، يتم توزيع هذه القطع بشكل عشوائي بين العملاء، كما أن المزود الأولي للملف (العميل الأكبر أسفل الصورة) يحتاج فقط لإرسال الملف مرة واحدة فقط، مبعثراً قطعه بين العملاء، ثم يكمل بقية العملاء عملية التبادل فيما بينهم.

تقوم فكرة هذا البروتوكول على تقسيم الملف الكبير إلى عدد محدد من الأجزاء الصغيرة المتساوية في الحجم تسمى قطع (Pieces)، ولها حجوم قياسية (32KB, 64KB, 128KB, 256KB, 512KB, 1MB, 2MB, 4MB, 8MB)، كما أن هذه القطع بدورها محددة بأقسام أصغر يمثل كل قسم 16KB.

ثم يتم توزيع هذه القطع بين المستخدمين بشكل عشوائي، وكل ما زاد عدد المستخدمين الذين يتبادلون الملف نفسه كلما زادت الفرص بالحصول على سرعة أكبر، والحصول على الملف كاملاً.

لا بد من وجود وسيط بين المستخدمين، يقوم على تنسيق عملية التبادل بين المستخدمين، ويسمى المتتبع أو التراكر (Tracker)، ويعمل التراكر على تسجيل معلومات عن عدد المتسخدمين الكلي (النظراء Peers)، عدد المتسخدمين الذين يملكون الملف كاملاً (مزودو الملف Seeders)، عدد المستخدمين الذين مازالوا يحملون الملف ولما يكتمل (المُحمِّلون leechers)، عدد مرات اكتمال تحميل الملف، كما يقوم التراكر بستجيل عناوين النظراء ليسهل عليهم الاتصال ببعضهم.

ليكن ملف بحجم 3520MB، في البداية يجب إنشاء ملف بلاحقة .torrent باستخدام أحد البرامج المختصة بالتعامل مع هذه التقنية مثل μTorrent وأثناء إنشائه يتم تحديد حجم القطعة وليكن 4MB، عندئذٍ سيجزأ الملف إلى 3520/4=880 قطعة وكل قطعة تتألف من (4*1024)/16=256 قسماً. لو كان حجم الملف 3521MB عندئذٍ: 3521/4=880.25 إذاً سيجزّأ الملف إلى 881 فطعة وكل قطعة بحجم 4MB مما يؤدي إلى زيادة حجم التحميل بمقدار 4MB تقريباً أي أنك ستقوم بتحميل 3524MB ولكن الملف الأصلي يبقى كما هو دون أي تعديل. وأيضاً أثناء إنشاء الملف يجب تحديد عنوان التراكر.

للبدء بمشاركة هذا الملف يجب توزيع الملف ذو اللاحقة .torrent على المستخدمين الراغبين بالحصول على الملف الأصلي، يمثل المستخدم الذي يملك الملف الأصلي في البداية المزود الأولي للملف (Initial Seeder)، ثم يبدأ بقية المستخدمون بالاتصال به وبدء عملية التحميل، وكل منهم في هذه الحالة يسمى 'مُحمِّل' (leecher) ويتم توزيع القطع بشكل عشوائي بين المستخدمين مما يسمح لكل مستخدم بتحميل القطع غير المتوفرة لديه من مستخدم آخر يملكها حتى لو لم يكن كلا المستخدمين قد أكمل تحميل الملف كاملاً. عند إكتمال تحميل الملف لدى أحد المستخدمين يتحول دوره من مُحمِّل Leeacher إلى مزود للملف Seeder، وتقاس "صحة" ملف التورنت بعدد المزودين المشتركين في الحشد الكلي Swarm (أي بعدد نسخ الملف الكاملة المتوفرة).

تسمح هذه التقنية بنشر نسخ كثيرة من الملفات الكبيرة خلال وقت قصير وبدون ضغط على المزود الأول للملف (الذي ربما يقوم بتوزيع الملف لمرة واحدة فقط)، كما يمكن أن يعيش ملف التورنت لسنوات طالما هناك من يزوده.


ملف التورنت

لمشاركة ملف أو عدة ملفات باستخدام بروتوكول بت تورنت، لا بد من إنشاء ملف بلاحقة .torrent (مثلاً somefile.torrent)، يسمى هذا الملف: ملف التورنت أو اختصاراً التورنت.

يحتوي هذا الملف على قسمين أساسيين، الأول هو قسم الإعلان Announce وفيه يحفظ عنوان التراكر، والثاني هو قسم المعلومات Info، ويحتوي على أسماء الملفات وحجمها، وعدد القطع الكلي، بالإضافة إلى هاش (Hash) خاص بكل قطعة باستخدام التابع SHA-1، البرنامج العميل BitTorrent Client يبحث في هذين القسمين لدى إضافة ملف التورنت إليه ليبدأ عملية المشاركة.

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

كلما صغر حجم القطعة الواحدة كلما كانت عملية المشاركة أكثر فاعلية، وبالمقابل يزداد حجم ملف التورنت.

لماذا بت تورنت؟

يختلف بروتوكل البت تورنت عن الطرق الأخرى (HTTP و FTP) في عدة نقاط أساسية:

  • ينشئ البت تورنت عدة طلبات صغيرة الحجم عبر بروتوكول TCP متصلاً بعدة نظراء، بينما في الطرق العادية الأخرى يتم إنشاء طلب وحيد عبر بروتوكول TCP موجه إلى طرف وحيد.
  • يحمل بروتوكول البت تورنت بطريقة عشوائية أو بطريقة "النادر-أولاً"، مما يرفع مستوى التوافرية، بينما الطرق الأخرى تحمل بطريقة تسلسلية.

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


مصطلحات

محمل leecher
يطلق على النظير الذي مازال يحمل الملف ولما يكتمل بعد.
مزود ملف seeder
يطلق على النظير الذي أتم تحميل الملف كاملاً.
نظير peer
وهو الاسم المشترك بين المحمل والمزود.
متتبع tracker
وهو المسؤوال عن عملية تنسيق الاتصالات بين النظراء.
عميل client
وهو البرنامج الذي يقوم بتنفيذ بروتوكول البت تورنت.
حشد swarm
ويمثل عدد جميع النظراء المساهمين حالياً في عملية المشاركة (عدد المحملون + عدد المزودون).
إعلان announce
وهي العملية التي يقوم بها العميل، فيعلم التراكر برغبته في الانضمام إلى الحشد، مزوداً إياه بالمعلومات اللازمة، متوقعاً رداً يتضمن عناوين نظراء آخرين للاتصال بهم وبدأ عملية المشاركة.
قطع pieces
وهي أجزاء الملف الأصلي، المتساوية الحجم.

طرق الاتصال بين النظراء

عن طريق التراكر Tracker، وهو برنامج مثبت على مخدم مثلاً، يقوم بتسجيل عناوين النظراء المشاركين حالياً بملف التورنت، ويؤمن الاتصال فيما بينهم.

باستخدام تقنية DHT (Distributed Hash Table) التي تعتمد على اللامركزية، بحيث يعتبر كل نظير عبارة عن عقدة Node، ويتم تبادل القيم المسجلة في جدول الهاش بين العقد بفعالية عالية، تسمح هذه التقنية بمساهمة أعداد ضخمة من العقد في عملية المشاركة.

طريقة تبادل النظراء Peer Exchange (PEX)، وهدفها تقليل الاعتماد على التراكر، فيقوم نظير متصل بنظير آخر بطلب عناوين النظراء المتصل بها هذا الأخير لكي يستطيع الأول الاتصال بها أيضاً وهكذا.

بعض التراكرات تقوم بجعل ملفات التورنت المتتبعة من خلالها معلمة بعلامة خاص Private، وتسمى تراكرات خاصة، بحيث يتم إلغاء ميزتي DHT و PEX، مما يسمح لهذه التراكرات بتتبع تفاصيل المشاركة لكل نظير.

تحميل ومشاركة ملفات التورنت

يقوم المستخدم باستعراض الأنترنت لايجاد ملفات اتورنت التي توافق رغباته,ثم يقوم بتحميلها وفتحها بأحد البرامج الداعمة لصيغة التورنت ومن هذه البرامج ( bittorrent bitcomet utorrent) والتي تعرف بالعميل (The Client) حيث يوصله هذا البرنامج بالتراكر المسبق تحديده في ملف التورنت فيتسلم قائمة بالنظراء الذين يتبادلون أجزاء ملفات التورنت المحدد. يصبح المستخدم في هذه الحالة نظير هو الاخر يتشارك أجزاء الملفات مع قرنائه.كل مجموعة من النظراء تتشارك في أجزاء ملف التورنت تسمى الحشد أو(Swarm).

من أمثلة البرامج الداعمة للتورنت (The Client):

BitTorrent, µTorrent, BitComet, KTorrent, Azureus ,Deluge, Free Download Manager and BitLord

مواضيع ذات صلة

المراجع

وصلات خارجية

الكلمات الدالة: