מבוא
אחד מן האמצעים הטובים ביותר להעברת מידע הינה רשת האינטרנט, באמצעותה ניתן להעביר מידע בין שתי נקודות הנמצאות במרחק של אלפי קילומטרים אחת מהשניה במהירות. חברות רבות מסתמכות על הרשת בכדי להעביר מידע מקצה העולם אל קצהו השני. בכדי שהמידע יעבור בין שני הצדדים על כל צד להריץ תוכנה אשר תוכל לקבל ולשלוח מידע באמצעות הסכמה הנוצרת בין שני הצדדים.
במדריך זה נסביר כיצד תקשורת זו עובדת וכיצד אנו יוצרים אותה באמצעות -.Net בסוף המדריך נכתוב תוכנת צ'אט קטנה אשר רצה בין השרת ללקוח אשר תדגים תקשורת זו.
תקשורת – נקודת המפתח לאפליקציות מצליחות רבות |
מספר מונחים
- Protocol (פרוטוקול) – הסכמה בנוגע לצורת דיבור מסויימת: כאשר אנו רוצים ששני יחידות קצה (שני מחשבים) יוכלו לדבר אחת עם השנייה עלינו ליצור פרוטוקול אשר יקבע כיצד שיחה זו תתנהל.
- כתובת IP – כתובת IP הינה כתובת זיהוי, המאפשרת לנו לזהות את המחשב ברשת בה הוא קיים. כתובת ה-IP נכתבת באופן הבא: X.X.X.X. כל X מייצג מספר הנע בין 0 ל-255, וכל חלק מהכתובת נקרא "אוקטטה". אוקטטה היא מספר המורכב מ-8 סיביות, מכאן ניתן להסיק כי כתובת IP מורכבת מארבעה אוקטטות. כאשר נרצה לגשת למחשב מסויים ברשת עלינו לדעת את כתובת ה-IP שלו.
כתובת ה-IP המשומשת כיום נקראת כתובת IPv4, בעוד לכתובת ה-IP קיימת אף גרסה חדשה יותר בשם IPv6: כתובת מסוג זה מכילה 128 סיביות, בניגוד ל- IPv4 המכילה 32 בלבד (4 אוקטטות * 8 סיביות). כתובת זו יכולה להכיל כמות גדולה יותר של מחשבים ועתידה להחליף את IPv4. עם זאת, במדריך זה נעסוק ב-IPv4 בלבד. - Port (פורט) – פורט הוא מעין ערוץ שדרכו אנו יכלים להעביר מידע לתוכנה מסויימת. אם נדמה את כתובת ה-IP למספר רחוב (המחשב שלנו), מספר הבית יהיה הפורט (התוכנה). שילוב השניים מאפשר לנו לתקשר עם תוכנה ספציפית במחשב מסוים. פורט הינו מספר הנע בין 0 ל-65535.
- Socket (סוקט) – מתאר את השילוב של כתובת ה-IP יחד עם הפורט. סוקט הוא ערוץ דו-כיווני אשר באמצעותו אנו יכלים לשלוח מידע ולקבל מידע. בדוגמה בה ה-IP הינו מספר רחוב והפורט הוא מספר בית– הסוקט הוא הכתובת המלאה, או במילים אחרות: השילוב של השניים.
תקשורת בין מספר נקודות קצה |
פרוטוקולי תקשורת
במדריך זה נעבור על שני פרוטוקולי תקשורת נפוצים: TCP ו-UDP. עם זאת, לא נדון בדרך בה הפרוטוקולים עובדים, אלא נסביר כיצד יש להשתמש בכל אחד מהם.
פרוטוקול TCP – Transmission Control Protocol: פרוטוקול זה הינו פרוטוקול Connection Oriented, הכוונה היא שעל שני הצדדים ליצור חיבור לפני שיוכלו להתחיל לתקשר. פרוטוקול זה מאפשר העברת חבילות מידע ללא הגבלת גודל (חבילות גדולות יחצו לחבילות קטנות יותר). בשיטה זו אנו יכולים להיות בטוחים שהמידע שנשלח אכן התקבל ובדיוק באופן הנשלח (זאת בתנאי שקיים חיבור). אמינותו היא בשל הסתמכות על שיטת השליחה והוכרה (Acknowledge) – או במילים אחרות, כאשר המחשב שולח מידע לצד השני, הצד השני ידווח חזרה שאכן קיבל את המידע. פרוטוקול זה נמצא בשימוש רב כיום ואף משמש להעברת דפי אינטרנט (HTTP).
- יתרונות – המידע הנשלח דרכו נשלח ומתקבל באותו הסדר, באופן בטוח וללא הגבלה.
- חסרונות – מחייב התחברות לצד שרת טרם שליחת המידע. בנוסף, פרוטוקול זה איטי יחסית בשל השיטה בה הוא משתמש.
המחשת פרוטוקול ה-TCP |
פרוטוקול UDP – User Datagram Protocol: פרוטוקול זה אינו פרוטוקול Connection Oriented, זאת אומרת שהוא אינו דורש התחברות טרם העברת מידע. בעוד פרוטוקול ה-TCP עובד בדומה לחברת דואר (חבילות יעברו תהליך של מיונים והרשמה בכדי שלא יאבדו), ניתן לדמות את פרוטוקול ה-UDP למשגר השולח חבילות מידע באוויר מבלי לדעת אם הן יגיעו או לא. על אף חיסרון זה, פרוטוקול זה מהיר יותר מ-TCP. פרוטוקול זה משומש בין היתר במשחקי רשת ושיחות ברשת, הזקוקים לקצבי שליחה וקבלת מידע מהירים. במשחקי מחשב, נעשה חיקוי שיטת ה-"שליחה והוכרה" בפרוטוקול זה על מנת להפוך אותו לאמין יותר. עם זאת, פרוטוקול ה-UDP האמין (Reliable User Datagram Protocol) עדיין יהיה מהיר יותר מפרוטוקול ה-TCP.
- יתרונות – העברה וקבלה של מידע באופן מהיר יותר מאשר בפרוטוקול ה-TCP.
- חסרונות – אמינותו פחותה – המידע אינו נשמר באותה הצורה שבה הוא נשלח, ואין אפשרות לדעת אם הצד השני קיבל את המידע.
המחשת פרוטוקול ה-UDP |