غنوتيلا 2
Gnutella2 ، والذي يشار إليه غالبًا باسم G2 ، هو بروتوكول نظير إلى نظير تم تطويره بشكل أساسي بواسطة مايكل ستوكس وتم إصداره في عام 2002.
على الرغم من استلهامها من بروتوكول غنوتيلا ، إلا أن بروتوكول G2 لا يشترك معه إلا في القليل من التصميم باستثناء آلية المصافحة والتنزيل الخاصة بالاتصال . [ 1 ]
تعتمد G2 تنسيق حزمة ثنائية قابلة للتوسيع وخوارزمية بحث جديدة تمامًا .
علاوة على ذلك، فإن G2 لديها بنية شبكة ذات صلة (ولكنها مختلفة بشكل كبير) ونظام بيانات وصفية محسّن ، مما يساعد بشكل فعال على تقليل الملفات المزيفة، مثل الفيروسات ، على الشبكة.
تاريخ
في نوفمبر 2002، أعلن مايكل ستوكس عن بروتوكول Gnutella2 في منتدى مطوري Gnutella. وبينما رأى البعض أن الهدف المعلن لـ Gnutella2 هو في المقام الأول قطع الصلة تمامًا ببروتوكول Gnutella 0.6 والبدء من جديد، بحيث تُنفذ بعض جوانب Gnutella الأقل كفاءة بشكل أكثر سلاسة، وبشكل عام، يصبح البروتوكول مثيرًا للإعجاب ومرغوبًا فيه؛ اعتبره مطورون آخرون ، وخاصة مطورو LimeWire و BearShare ، مجرد " حيلة دعائية رخيصة " وقللوا من شأن مزاياه التقنية. ولا يزال البعض يرفضون الإشارة إلى الشبكة باسم "Gnutella2"، ويشيرون إليها بدلًا من ذلك باسم "بروتوكول مايك" (MP). [ 2 ]
لا يزال بروتوكول Gnutella2 يستخدم سلسلة المصافحة القديمة "GNUTELLA CONNECT/0.6" للاتصالات [ 1 ] كما هو محدد في مواصفات Gnutella 0.6. وقد انتقد منتدى مطوري Gnutella طريقة المصافحة المتوافقة مع الإصدارات السابقة هذه، معتبرينها محاولة لاستخدام شبكة Gnutella لتهيئة الشبكة الجديدة غير المرتبطة بها، بينما ادعى مؤيدو الشبكة أن هدفها هو الحفاظ على التوافق مع الإصدارات السابقة من Gnutella والسماح لعملاء Gnutella الحاليين بإضافة Gnutella2 وقتما يشاؤون.
ومع تمسك المطورين بمواقفهم، سرعان ما اندلع جدل حاد ، مما زاد من ترسيخ تصميم كلا الجانبين. [ 3 ] [ 4 ] [ 5 ] [ 6 ]
صدرت مسودة المواصفات في 26 مارس 2003، وتلتها مواصفات أكثر تفصيلًا بعد ذلك بوقت قصير. لا يدعم العديد من عملاء شبكة "غنوتيلا" القديمة بروتوكول G2، ومع ذلك، لا يزال العديد من عملاء Gnutella2 يتصلون بشبكة "غنوتيلا". يزعم العديد من مؤيدي Gnutella2 أن ذلك يعود لأسباب سياسية ، بينما يزعم مؤيدو "غنوتيلا" أن التغييرات الجذرية لا تبرر تكلفة إعادة كتابة البرامج بشكل كامل. [ 7 ]
تصميم
يقسم نظام Gnutella2 العُقد إلى مجموعتين: الأوراق والمراكز. تحتفظ معظم الأوراق برابطين مع المراكز، [ 8 ] بينما تقبل المراكز مئات الروابط من الأوراق، وسبعة روابط في المتوسط مع مراكز أخرى. عند بدء عملية بحث، تحصل العقدة على قائمة بالمراكز، إذا لزم الأمر، وتتصل بالمراكز الموجودة في القائمة، مع تحديد المراكز التي تم البحث فيها، حتى استنفاد القائمة أو الوصول إلى حد بحث مُحدد مسبقًا. يُمكّن هذا المستخدم من العثور على ملف شائع بسهولة دون تحميل الشبكة، مع الحفاظ، نظريًا، على قدرة المستخدم على العثور على أي ملف موجود في أي مكان على الشبكة.
تقوم مراكز البيانات (Hubs) بفهرسة الملفات الموجودة لدى كل عقدة فرعية (Leaf) باستخدام جدول توجيه الاستعلامات ، الذي يُملأ بإدخالات أحادية البت تمثل تجزئات الكلمات المفتاحية التي تُحمّلها العقدة الفرعية إلى مركز البيانات. يقوم مركز البيانات بعد ذلك بدمج هذه الإدخالات مع جميع جداول التجزئة التي أرسلتها العقد الفرعية التابعة له، وذلك لإنشاء نسخة تُرسل إلى مراكز البيانات المجاورة. يُمكّن هذا مراكز البيانات من تقليل استهلاك النطاق الترددي بشكل كبير عن طريق عدم إعادة توجيه الاستعلامات إلى العقد الفرعية ومراكز البيانات المجاورة، إذا لم يتم العثور على الإدخالات المطابقة للبحث في جداول التوجيه .
يعتمد Gnutella2 بشكل كبير على بروتوكول UDP ، بدلاً من TCP ، في عمليات البحث. فالعبء الإضافي لإنشاء اتصال TCP يجعل نظام البحث العشوائي ، الذي يتطلب الاتصال بعدد كبير من العقد بكميات صغيرة من البيانات، غير عملي. مع ذلك، لا يخلو بروتوكول UDP من عيوبه. ولأنه بروتوكول غير متصل، فلا توجد طريقة قياسية لإبلاغ العميل المُرسِل باستلام الرسالة ، وبالتالي، في حال فقدان الحزمة، لا توجد طريقة لمعرفة ذلك. لهذا السبب، تحتوي حزم UDP في Gnutella2 على علامة لتفعيل إعداد الموثوقية. عند استلام حزمة UDP مع تفعيل علامة الموثوقية، يستجيب العميل بحزمة تأكيد لإبلاغ العميل المُرسِل بوصول حزمته إلى وجهتها. إذا لم تُرسل حزمة التأكيد، تُعاد إرسال الحزمة الموثوقة في محاولة لضمان التسليم. أما الحزم ذات الأهمية المنخفضة، والتي لا تحتوي على العلامة مُفعّلة، فلا تتطلب حزمة تأكيد، مما يقلل من الموثوقية، ولكنه يقلل أيضًا من العبء الإضافي، إذ لا حاجة لإرسال حزمة تأكيد وانتظارها.
ميزات البروتوكول
يتميز بروتوكول Gnutella2 بصيغة حزم ثنائية قابلة للتوسيع، تُشبه شجرة مستندات XML ، وقد صُممت هذه الصيغة كحل لبعض جوانب بروتوكول Gnutella الأقل كفاءة. صُممت صيغة الحزم بحيث يمكن إضافة تحسينات مستقبلية للشبكة وميزات خاصة بكل مُصنِّع دون القلق من التسبب في أخطاء برمجية لدى عملاء آخرين على الشبكة. [ 9 ]
لغرض تحديد الملفات والتحقق من سلامتها بشكل آمن، يستخدم البرنامج خوارزمية SHA-1 للتجزئات . وللسماح بتنزيل الملف بشكل موثوق ومتزامن من مصادر متعددة، وكذلك للسماح بتحميل أجزاء منه بشكل موثوق أثناء تنزيله (التحميل الجماعي)، تُستخدم خوارزمية Tiger tree للتجزئات . [ 10 ]
لإنشاء نظام بحث أكثر قوة وشمولية، يمتلك برنامج Gnutella2 نظام بيانات وصفية يوفر معلومات أكثر تفصيلاً حول التصنيف والتقييم والجودة في نتائج البحث، مقارنةً بما يُجمع من أسماء الملفات فقط. [11] ويمكن للعُقد مشاركة هذه المعلومات حتى بعد حذف الملف، مما يسمح للمستخدمين بتمييز الفيروسات والديدان على الشبكة ، دون الحاجة إلى الاحتفاظ بنسخة منها.
يستخدم برنامج Gnutella2 أيضًا تقنية الضغط في اتصالات الشبكة لتقليل عرض النطاق الترددي الذي تستخدمه الشبكة. [ 10 ]
يحتوي تطبيق Shareaza على ميزة إضافية لطلب معاينات للصور ومقاطع الفيديو، على الرغم من أن تطبيق FilesScope فقط هو الذي يستفيد من هذه الميزة بشكل محدود.
قام gtk-gnutella بتوسيع البروتوكول لتقليل الفجوة بين Gnutella و G2. وعلى وجه الخصوص، تم تحسين طبقة UDP شبه الموثوقة لإضافة إشعارات تراكمية وموسعة بطريقة متوافقة مع عملاء G2 القدامى. [ 12 ] تشمل التوسعات الأخرى السلسلة "A" في /Q2/I [ 13 ] وإدخال /QH2/H/ALT و /QH2/H/PART/MT و /QH2/HN و /QH2/BH و /QH2/G1 في نتائج الاستعلام. [ 14 ]
الاختلافات عن النوتيلا
بشكل عام، تتشابه الشبكتان إلى حد كبير، مع وجود اختلافات أساسية في تنسيق الحزمة ومنهجية البحث.
بروتوكول
تعرض تنسيق حزم Gnutella لانتقادات لأنه لم يُصمم في الأصل مع مراعاة قابلية التوسع ، وقد أُضيفت إليه العديد من التعديلات على مر السنين، مما جعل بنية الحزم مزدحمة وغير فعالة. [ 15 ] استفاد Gnutella2 من هذا، فإلى جانب احتوائه على العديد من الميزات الإضافية لمعيار Gnutella، صُمم Gnutella2 مع مراعاة قابلية التوسع المستقبلية منذ البداية.
خوارزمية البحث
بينما يستخدم بروتوكول غنوتيلا أسلوب البحث عبر إغراق الاستعلامات ، يستخدم غنوتيلا 2 نظام البحث العشوائي ، حيث تجمع عقدة البحث قائمة بالمراكز وتتصل بها مباشرةً، واحدة تلو الأخرى. ومع ذلك، بما أن المراكز تنظم نفسها فيما يُسمى " مجموعات المراكز "، حيث يعكس كل مركز المعلومات المخزنة لدى جيرانه، فإن العقدة الطرفية تتلقى معلومات مجموعة المراكز بأكملها (عادةً 7 مراكز). يتميز هذا النظام بعدة مزايا مقارنةً بنظام إغراق الاستعلامات في غنوتيلا. فهو أكثر كفاءة، إذ لا يؤدي استمرار البحث إلى زيادة حركة مرور الشبكة بشكل كبير ، ولا يتم توجيه الاستعلامات عبر عدد كبير من العقد، كما أنه يزيد من دقة البحث، مما يسمح للعميل بالتوقف، بمجرد الحصول على عدد محدد مسبقًا من النتائج، بشكل أكثر فعالية من غنوتيلا. مع ذلك، يزيد نظام البحث العشوائي أيضًا من تعقيد الشبكة وصيانتها وإدارتها ، بالإضافة إلى الحاجة إلى إجراءات وقائية لمنع المهاجمين من استخدام الشبكة لشن هجمات حجب الخدمة .
مصطلحات
There is also a difference in terminology: while the more capable nodes, which are used to condense the network, are referred to as Ultrapeers in gnutella, they are called Hubs in Gnutella2, and they are also used slightly differently in topology. In gnutella, the Ultrapeers generally maintain as many leaves as peer connections, while Gnutella2 Hubs maintain far more leaves, and fewer peer (Hub-to-Hub) connections. The reason for this is that the search methods of the various networks have different optimum topologies.
Clients
List
Free software Gnutella2 clients include:
- Adagio[16] (Cross Platform), written in Ada, under the GPL.
- Gnucleus (Windows), written in C/C++, under the LGPL
- Gtk-gnutella (Cross Platform), written in C. Only supports leaf-mode connections to G2 since version 1.1.[17]
MLDonkey(Cross Platform), written in OCaml, under the GPL, however as of version 2.9.0 (2007), support is officially unmaintained and disabled in the binaries.[18]- Shareaza (Windows), multi-network, written in C++, under the GPL, currently +/- 93% network share[19]
Proprietary software implementations include:
Comparison
The following table compares general and technical information for a number of available applications supporting the G2 network.
| Client | Chat | Handles big files (>4 GB) | UKHL[20] | Unicode | UPnP port mapping | NAT traversal | Remote preview | Ability to search with hashes | Hub modus | Spyware/ Adware/ Malware-free | Other networks | Based on | OS | Other |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Foxy | Yes | No | No | Yes | Yes | No | No | Yes | Foxy only | No | N/a | GnucDNA | Cross-platform | - |
| FileScope | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | gnutella, eD2k, OpenNap | - | Windows[21] | Development has ended in 2014.[22] |
| Gnucleus | No | No | No | No | No | No | No | Yes | No | Yes | gnutella | GnucDNA | Windows | - |
| gtk-gnutella | No | Yes | No | Yes | Yes | Yes | No | Yes | No | Yes | gnutella | - | Cross-platform | - |
| Morpheus | Yes | No | No | No | Yes | No | No | Yes | No | No | gnutella, NEOnet | GnucDNA | Windows | Development and hosting of the client has been stopped |
| Shareaza | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | gnutella, | - | Windows | يتضمن دعم IRC |
انظر أيضاً
مراجع
- ١ ٢ "مناقشة المطورين حول أوجه التشابه بين Gnutella و Gnutella2" . منتدى مطوري Gnutella. مؤرشف من الأصل بتاريخ ١٧ يناير ٢٠٢٣. تم الاطلاع عليه بتاريخ ١٠ مايو ٢٠٠٦ .
- ↑ "نقاش منتدى مطوري Gnutella حول اسم Gnutella2" . منتدى مطوري Gnutella. مؤرشف من الأصل بتاريخ 17 يناير 2023. تم الاطلاع عليه بتاريخ 10 مايو 2006 .
- ↑ "جزء من حرب غنوتيلا/غنوتيلا 2 الكلامية (1)" . منتدى مطوري غنوتيلا. مؤرشف من الأصل بتاريخ 12 فبراير 2009. تم الاطلاع عليه بتاريخ 6 أغسطس 2006 .
- ↑ "جزء من حرب غنوتيلا/غنوتيلا 2 الكلامية (2)" . منتدى مطوري غنوتيلا. مؤرشف من الأصل بتاريخ 17 يناير 2023. تم الاطلاع عليه بتاريخ 6 أغسطس 2006 .
- ↑ "جزء من حرب غنوتيلا/غنوتيلا 2 الكلامية (3)" . منتدى مطوري غنوتيلا. مؤرشف من الأصل بتاريخ 17 يناير 2023. تم الاطلاع عليه بتاريخ 6 أغسطس 2006 .
- ↑ "جزء من حرب غنوتيلا/غنوتيلا 2 الكلامية (4)" . منتدى مطوري غنوتيلا. مؤرشف من الأصل بتاريخ 17 يناير 2023. تم الاطلاع عليه بتاريخ 6 أغسطس 2006 .
- ↑ "نقاش المطورين حول الانتقال إلى Gnutella2" . منتدى مطوري Gnutella. مؤرشف من الأصل بتاريخ 17 يناير 2023. تم الاطلاع عليه بتاريخ 10 مايو 2006 .
- ↑ "سجل شبكة Gnutella2" . برنامج زحف Trillinux (G2paranha). مؤرشف من الأصل بتاريخ 15 مايو 2009. تم الاطلاع عليه بتاريخ 12 أبريل 2009 .
- ↑ "بنية الحزمة" . ويكي Gnutella2. مؤرشف من الأصل بتاريخ 19-12-2007 . تم الاطلاع عليه بتاريخ 07-11-2007 .
- 1 2 "معيار غنوتيلا 2" . ويكي غنوتيلا 2. مؤرشف من الأصل بتاريخ 19-12-2007 . تم الاطلاع عليه بتاريخ 07-11-2007 .
- ↑ "لغة الاستعلام البسيطة والبيانات الوصفية" . ويكي Gnutella2. مؤرشف من الأصل بتاريخ 19-12-2007 . تم الاطلاع عليه بتاريخ 07-11-2007 .
- ↑ "جهاز إرسال واستقبال UDP - Gnutella2" . G2.doxu.org. مؤرشف من الأصل بتاريخ 19-07-2014 . تم الاطلاع عليه بتاريخ 06-08-2014 .
- ↑ "Q2 - Gnutella2" . G2.doxu.org. 2014-02-25. مؤرشف من الأصل بتاريخ 2014-07-14 . تم الاطلاع عليه بتاريخ 2014-08-06 .
- ↑ "QH2 - Gnutella2" . G2.doxu.org. 2014-03-12. مؤرشف من الأصل في 2013-12-13 . تم الاطلاع عليه في 2014-08-06 .
- ↑ "مناقشة المطورين حول تنسيقات حزم Gnutella و Gnutella2" . منتدى مطوري Gnutella. مؤرشف من الأصل بتاريخ 17 يناير 2023. تم الاطلاع عليه بتاريخ 15 مايو 2006 .
- ↑ "تحميل Adagio | SourceForge.net" . مؤرشف من الأصل بتاريخ 12 نوفمبر 2016. تم الاطلاع عليه بتاريخ 11 نوفمبر 2016 .
- ↑ "gtk-gnutella - عميل Gnutella الرسومي لنظام Unix" . Gtk-gnutella.sourceforge.net. مؤرشف من الأصل بتاريخ 8 يوليو 2005. تم الاطلاع عليه بتاريخ 6 أغسطس 2014 .
- ↑ "الشبكات الأخرى المدعومة - MLDonkey" . mldonkey.sourceforge.net . مؤرشف من الأصل بتاريخ 12-11-2016 . تم الاطلاع عليه بتاريخ 11-11-2016 .
- ↑ UKHL = قائمة مراكز UDP المعروفة
- ↑ "موقع FileScope الإلكتروني: بيان حول التوافق بين المنصات" . FileScope . مؤرشف من الأصل بتاريخ 28-08-2008 . تم الاطلاع عليه بتاريخ 22-08-2008 .
- ↑ "FileScope" . SourceForge . مؤرشف من الأصل بتاريخ 25-06-2021 . تم الاطلاع عليه بتاريخ 25-06-2021 .
روابط خارجية
- غنوتيلا 2
- شبكات مشاركة الملفات
