|

אפליקציות Gnutella
להבדיל,
נדרשות לתקשר באופן דו-כיווני - לשלוח מידע ולקבל מידע בו זמנית ולכן
הפרוטוקול בו עובדת Gnutella מסובך
בהרבה מפרוטוקולים ראשוניים אלו של
תקשורת P2P.
נתאר פעולת
חיפוש ושאיבת מידע פשוטה של שלקוח:
נניח כי שלקוח A מבקש
קבצי MP3 מ -שלקוח B. בקשה
זו נקראת בשפת ה- P2P שאילתא.לאחר
ש- B יעביר
ל- A מידע
על כל קבצי ה- MP3 שברשותו,
הוא יפנה את השאילתא הלאה למחשבים אחרים המקושרים אליו, אולם לא כמו
במעבר דוא"ל או פורומי חדשות,
ישמור מחשב B
רשומה ובה יתעד את פרטי שלקוח A
ואת
העובדה כי הוא שלח את הבקשה המקורית. באופן זה, החיפוש ייצור עץ ששורשו
במחשב A יוזם
השאילתא וכל המידע יגיע בסופו של דבר לשורש וזאת באופן שקוף ל שלקוחים מהם נשאב
המידע.
כיצד נשמרות הבקשות כבקשות נפרדות
לכל בקשה יש מספר זיהוי ייחודי. שיטה זו מאפשרת לתחנות לזהות בקשות
חוזרות ולא להתייחס אליהן, כמו כן היא מאפשרת התייחסות לבקשות זהות
המגיעות ממחשבים שונים וכן ניתן ליצור חסם זמן לבקשות שמסיבה כלשהי אינן
נענות - כל שלקוח מנהל תור בקשות
בגודל קבוע העובד בתצורת FIFO , כך שהבקשה הישנה ביותר
מוחלפת בחדשה ביותר.
אילו סוגי קבצים ניתן לחפש
בעזרת
Gnutella ניתן
לחפש כל קובץ קיים, אין כל הגבלה. למעשה ניתן להשתמש ב- Gnutella
אף
לחיפוש כתובות URL בדומה
לכל מנוע חיפוש רגיל.
מהו הפרוטוקול עליו רצה Gnutella
Gnutella
רצה בבסיסה על פרוטוקול HTTP
דבר
המצביע על פשטותה. היתרון בשימוש בפרוטוקול זה הוא ששני שלקוחים יכולים לתקשר אפילו
אם אחד מהם נמצא מאחורי חומת אש
, בהנחה ששרת חומת אש מאפשר
יציאת תקשורת דרך PORT 80 .
הקומבינציה
היחידה שתחסום לחלוטין תקשורת בין שתי תחנות P2P היא בהיות שתיהן
מאחורי שרת חומת
אש.
פרוטוקול
Gnutella
איננו מציין כמה שלקוחים יכולים
לתקשר בו זמנית ולמעשה Gnutella מעולם לא נחסמה למספר
משתמשים מסויים. מעריכים כי מספר זה נע בין מספר מאות למספר אלפים,
אולם אמפירית המספר נראה כגדול בהרבה.
כיצד המערכת מפסיקה חיפוש שאילתא
כמו בפרוטוקול IPלכל
שאילתא ב- Gnutella
יש
זמן חיות. מרגע ששאילתא נכנסת לתור חיפוש ב -שלקוח כלשהו, מתחילה
הספירה לאחור לתפוגתה. השאילתא מגיעה משולחיה עם זמן חיות מוגדר מראש, אולם
כל שלקוח יכול לשנות זמן חיות
זה, בהתאם לצרכיו, אם הזמן הקבוע נראה לו ארוך
מדי.

פרוטוקול Gnutella
זהו פרוטוקול פשוט
למעשה, שמהותו הוא בעצם הגדרת העברת השאילתא - אותו שם/קובץ ובעצם רשימה,
אותה אנו מחפשים בין שלקוח אחד
למשנהו.
כל שלקוח מטפל בשאילתא כראות
עינו אם באמצעות הפעלת פונקצית חיפוש פשוטה על מערך הקבצים ואם באמצעות
הפעלת שאילתת SQL
ובכל זאת
תחנה מסוימת עלולה לקבוע כי השאילתא הנה מסוג לא ברור, אולי מילה בגופן
זר, ובהתאם לכך לחפש מידע לא ברור - ג'יבריש. חיפוש זה ימשיך מתחנה זו
ולכל התחנות הנמצאות תחתיה בעץ החיפוש שנוצר, אולם לכשיחזור לנקודת
המוצא, יוכל המחפש להשתמש במידע זה בשביל לשכלל את חיפושיו
הבאים.
בעייתיות הפרוטוקול היא באותו זמן חיות המוגדר מראש. ניקח לדוגמה יחידת
קצה השולחת בקשה עם זמן חיות 10 וכל שלקוח שמקבל אותה, מתקשר עם 6
תחנות - עד כמיליון הודעות יכולות להציף את הרשת בזמן קצר בתסריט פשוט
זה.
ההתפשטות
האקספוננציאלית הזו יוצרת הצפה ותנאי תעבורה קשים. למתכנתים אין פתרון
מוגדר לבעיה זו למרות שקיימים ניסיונות ליצור מנגנון שיזהה נקודות קצה
חסומות וימנע העמסה נוספת
שלהם. |