جنوتيلا
التصميم

من أجل تصور كيف عملت نوتيلا في الأساس، علينا تخيل دائرة واسعة من المستخدمين (يسمون العقد nodes) لكل منهم برمجيات عميلة لنوتيلا. وخلال بدء التشغيل الأولي فإن برمجيات العميل يجب أن تمهد لتشغيل الكمبيوتر وتجد على الأقل واحدا من العقد. وقد استخدمت العديد من المناهج من أجل هذا الأمر، بما فيها قائمة عناوين موجودة مسبقا للعقد العاملة المحتملة مرسلة مع البرمجيات، واستخدام خابيات caches الويب المحدثة للعقد المعروفة (تسمى خابيات ويب نوتيلا)، وخابيات مضيف بروتوكول نقل البيانات UDP host، وحتى المحادثة من خلال الإنترنت IRC وإن كان ذلك بصورة محدودة للغاية. وبمجرد الاتصال، يطلب العميل قائمة بالعناوين العاملة. ويحاول العميل الاتصال بالعقد المرسلة، وكذلك العقد التي يستقبلها من العملاء الأخرى ن، حتى يصل إلى حصة محددة. ولا يرتبط ذلك إلا بالكثير من العقد، وتخبئ محليا العناوين التي لم تجربها قبلا، وتنبذ العناوين التي جربتها وعلمت أنها غير صحيحة.
وعندما يريد المستخدم البحث فإن العميل يرسل الطلب لكل عقدة متصلة بنشاط. وفي الإصدار رقم 0.4 من البروتوكول فإن عدد العقد المتصلة بنشاط لعميل ما يكون قليل جدا، ولذلك فإن كل عقدة تقوم بعدئذ بتمرير الطلب لجميع عقدها المتصلة بنشاط، وفي المقابل فإنها تعيد تمرير الطلب، وهكذا دواليك، حتى تصل الرزمة إلى العدد المحدد سلفا من «القفزات» من قبل المرسل (حد أقصى 7).
ومنذ الإصدار رقم 0.6 فإن نوتيلا عبارة عن شبكة مركبة مكونة من عقد ورقية وعقد متطرفة (تسمى أيضا أقرآن متطرفة). وتكون العقد الورقية متصلة بعدد صغير من الأقرآن المتطرفة (نمطيا 3) يسنما تكون كل عقدة متطرفة متصلة بأكثر من 32 من الأقرآن المتطرفة. وفي ظل مثل هذا التفوق في الدرجات، فإن العدد الأقصى من «القفزات» التي يمكن لاستعلام واحد القيام بها قد قلت إلى 4.
وتستخدم الأوراق والأقرآن المتطرفة بروتوكول تدوير الاستعلام QRP من أجل تبادل جدول تدوير الاستعلام QRT، وجدول من 64 فتحة بمؤشر رئيسي ki-slots وحتى فتحتين اثنتين بمؤشر رسالة تتكون من لوحات مفاتيح مجزأة. وترسل عقدة ورقية جدول تدوير الاستعلام الخاص بها إلى كل من الأقرآن المتطرفة التي تتصل بها، وتدمج هذه الأقرآن المتطرفة جدول تدوير الاستعلام بجميع مستوياتها (وتقلل حتى 128 فتحة بمؤشر رئيسي) إضافة إلى جدول تدوير الاستعلام الخاص بها (إذا كانوا يتشاركون في ملفات) وتبادلها مع جيرانهم. ومن ثم فإن تدوير الاستعلام يتم من خلال تجزئة كلمات الاستعلام ورؤية ما إذا كان أيا منهم متصلا في جدول تدوير الاستعلام. وتقوم الأقرآن المتطرفة بذلك التأكد قبل تمرير الاستعلام إلى عقدة ورقية، وأيضا قبل تمرير الاستعلام إلى العقدة المتطرفة للأقرآن بشرط أن تكون تلك هي آخر قفزة يمكن للاستعلام القيام بها.
وإذا أسفر بحث ما عن نتيجة، فإن العقدة التي كانت لها نتيجة تتصل بالباحث. وفي بروتوكول نوتيلا الكلاسيكي فإن رسائل الاستجابة كان يتم إرسالها مرة أخرى بموازاة طريق الاستعلام الذي جاء منه، كما أن الاستعلام نفسه لا يحتوي أية معلومات تعريفية بالعقدة. وقد تمت مراجعة هذه الآلية فيما بعد، وهكذا فإن نتائج البحث حاليا يتم نقلها عبر بروتوكول كتل المستخدم User Datagram Protocol (UDP) مباشرة إلى العقدة التي بدأت البحث، وغالبا ما تكون عقدة أقرآن متطرفة. وهكذا فإنه في البرتوكول الحالي فإن الاستعلامات تحمل عنوان بروتوكول الإنترنت ورقم المنفذ لأي عقدة. وهذا يقلل من حجم البيانات المتدفقة عبر شبكة نوتيلا ويجعلها بصورة كبيرة أكثر تحجيما.
وإذا كان المستخدم يقرر تحميل الملف، فإنهم يتفاوضون مع ناقل الملف. وإذا كانت العقدة التي كانت قد طلبت الملف غير محمية، فإن عقدة الاستعلام يمكن أن تتصل بها مباشرة. بأي حال فإنه إذا كانت العقدة محمية بما يؤدي لوقف عقدة المصدر من تلقي الاتصالات القادمة، فإن العميل الذي يريد تحميل ملف ما يرسله بوصفه «طلب مدفوع» للخادم لعميل بعيد من أجل بدء الوصلة بدلا منه (أي «لدفع» الملف). في البداية فإن طلبات الدفع هذه يتم تدويرها بموازاة السلسلة الأصلية التي اعتادت على إرسال الاستعلام. ومع ذلك فقد كان هذا الأمر لا يعتمد عليه لأن الطرق تنقطع عادة وأن الرزمة المدورة تكون عرضة لسيطرة التدفق. ومن ثم فإن ما يسمى «وسائط الدفع» push proxies ظهرت في المجال. وهي غالبا أقرآن متطرفة لعقدة ورقية وتعلن في نتائج البحث. ويقوم العميل بوصل واحدة من «وسائط الدفع» هذه باستخدام طلب النص المتشعب HTTP ويرسل الوسيط «طلبا بالدففع» إلى ورقة لصالح لاعميل. وطبيعيا فإنه من الممكن أيضا إرسال طلب دفع بخصوص بروتوكول كتل المستخدم إلى وسيط الدفع الذي يكون أكثر كفاءة من استخدام بروتوكول التحكم في النقل TCP. ولوسائط الدفع ميزتان: أولهما أن وصلات الأقرآن المتطرفة-الورقية أكثر ثباتا من الطرق وهو الأمر الذي يجعل من طلبات الدفع أكثر اعتمادية. ثانيا فإنها تقلل حجم البيانات المدورة من خلال شبكة نوتيلا.
أخيرا عندما ينفصل المستخدم، فإن برمجيات العميل تحفظ قائمة العقد التي كانت متصلة بنشاط بالرزم وتلك التي جمعت من خلالها (الرزم) من أجل الاستخدام مرة أخرى فإنها تحاول الاتصال بما يجعلها مستقلة عن أي نوع من خدمات نظم تمهيد تشغيل الكمبيوتر.
وفي الممارسة فإن منهج البحث هذا حول شبكة نوتيلا لم يكن معتمدا عليه عادة. إن كل عقدة عبارة عن مستخدم كمبيوتر منتظم؛ وهكذا فإنهم يتصلون باستمرار ويقطعون الاتصال باستمرار أيضا، ومن ثم فإن الشبكة لا تكون مستقرة كلية أبدا. أيضا فإن تكلفة عرض النطاق الترددي للبحث في نوتيلا نما في مقابل نمو عدد المستخدمين المتصلين؛, وعادة فإن الوصلات المتشبعة ونقل عقد أبطء يعتبر أمر لا جدوى منه. ومن ثم فإن طلبات البحث سيتم في الغالب تجاهلها ولن يتم الوصول إلا إلى جزء صغير جدا من الشبكة بخصوص الاستعلامات. وتحدد هذه الملاحظة شبكة نوتيلا على أنها نظام توزيعي لا يمكن تحجيمه، ويؤثر في تطور جداول البعثرة، التي تكون أكثر تحجيما لكنها لا تدعم سوى البحث بالصلة الدقيقة، وليس الكلمة الدالة.
ومن أجل التعامل مع مشكلات عنق الزجاجة، فإن مطوري نوتيلا طبقوا نظاما محددا من الأقرآن المتطرفة والأوراق. وبدلا من اعتبار جميع العقد متساوية تم الحفاظ على العقد الداخلة في الشبكة على «الحافة» للشبكة كورقة، وليست مسئولة عن أي تدوير، أما العقدالتي كانت قادرة على تدوير الرسائل فقد رقيت إلى أقرآن متطرفة، والتي سوف تقبل وصلات الورقة وتدور الأبحاث ورسائل صيانة الشبكة. وقد سمح ذلك للأبحاث بأن تنتشر أكثر من خلال الشبكة، وسمح للعديد من البدائل في الطوبولوجيا / المخطط الذي حسن من الكفاءة والقدرة التوسعية بصورة كبيرة.
إضافة إلى ذلك فقد تبنت نوتيلا عددا من الفنيات الأخرى من أجل تقليل الازداحم الخانق وجعل الأبحاث أكثر كفاءة. والأمر الأبرز هو بروتوكول تدوير الاستعلام QRP والاستعلام النشط Dynamic Querying (DQ). وباستخدام بروتوكول تدوير الاستعلام لا يصل البحث إلا إلى أولئك العملاء الذين يحتمل أن تكون لديهم الملفات، وهناك عدد قليل جدا من بحوث الملفات تنمو على نطاق واسع بكفاءة أكبر، وباستخدام الاستعلام النشط فإن البحث يتوقف بمجرد أن يحصل البرنامج على نتائج بحث كافية، والتي تقلل بصورة كبيرة قدر الازدحام الخانق الذي تسببه عمليات البحث الجماهيرية. إن نوتيلا للمستخدمين Gnutella for Users بها قدر كبير من المعلومات عن هذه الأمور والتحسينات الأخرى لنوتيلا في الأسلوب الصديق للمستخدم
إن أحد مكاسب جعل نوتيلا غير مركزية هو جعل أنه من الصعوبة بمكان غلق الشبكة التي لا يمكن سوى للمستخدمين أن يقرروا أي محتوى سيكون متاحا. وعلى غير ما هو عليه نابستر Napster حيث أن الشبكة كلها تعتمد على خادم مركزي فإن نوتيلا لا يمكن أن تغلق من خلال غلق أي عقدة ومن المستحيل بالنسبة لأي شركة أن تتحكم في محتويات الشبكة، وهو الأمر الذي يرجع أيضا للعديد من عملاء محتويات نوتيلا المجانية والمصادر المفتوحة الذين يتشاركون في الشبكة.