רשתות - חזרה: פרוטוקולי תקשורת, רשת מקומית, כתובת DNS, פרוטוקול ARP

מאת גיא קרן

עודכן לאחרונה ב- 16.04.06

משך השיעור

60 דקות. סה"כ שלושה שיעורים בני שעה כל אחד.

דרישות קדם

רשת מיוחדת לצורך תרגול, המנוהלת ע"י שרת DHCP המקצה כתובות בתחום 192.168.1.0 – עבור שיעור שתיים ושלוש.

מטרות השיעור

בשיעור זה, יעברו האדמיניסטרטורים רענון אודות רשתות תקשורת, איך הן בנויות, מתפקדות ומאפשרות
העברת מידע בצורה "חלקה" בין שני מחשבים.
לאחר הרענון יוסבר לאדמיניסטרטורים איך הרשת מוגדרת בלינוקס והחשיבות של מבנה הרשת באותו ההקשר.
השיעור יעסוק בשימוש בכלי רשת בסביבת המעטפת, הכשרת האדמיניסטרטורים לטיפול בבעיות ברשת הבית-ספרית בסביבת לינוקס.

הקדמה (זמן לסוף השיעור 01:00)

רשתות רשתות רשתות... לולא הייתן, לא היינו כאן.

כיצד עובדת רשת מקומית?
כיצד עובדת רשת איי-פי (IP)? איך גורמים לזה לפעול תחת לינוקס? לשם כך התכנסנו כאן היום...
שלושת ההרצאות שלנו תעסוקנה בתשובה בסיסית לשאלות "מה זה?", "איך זה פועל?", "איך מקנפגים?" ו- "איך פותרים בעיות פשוטות?"
מי שבאמת ירצה להעמיק בנושא ידע שיש אנשים שמתפרנסים רק מזה - לא חסר מה ללמוד, ובאינטרנט מסתובבים
אין-ספור חומרים על הנושא, לדוגמה:
http://he.wikipedia.org/wiki/רשת_מחשבים
ושוב, זכרו מה מייחד את "מדריך הטרמפיסט לגלקסיה" מ-"האנציקלופדיה הגלקטית" - רשומות עליו בגדול המילים "בלי פאניקה".

פרוטוקולי תקשורת, עקרון השכבות והחלוקה למנות (זמן לסוף השיעור 00:55)

כדי שמחשבים יוכלו לתקשר אחד עם השני, הם צריכים לדעת ל"דבר" באותה ה"שפה”.
מכלול השפות הקיימות לשם כך נקרא פרוטוקולי תקשורת (IEEE 802.XX).
פרוטוקול תקשורת מכיל את אוסף הכללים שלפיהם צריכים לנהוג שני מכשירים על-מנת לדבר זה עם זה –
ובהקבלה לשפה זה התחביר ונגזרות המילים (כמו בניין, שורש וכו').
דוגמאות לפרוטוקולי תקשורת נפוצים: Ethernet הוא פרוטוקול תקשורת. IP הוא פרוטוקול תקשורת...
פרוטוקולי התקשורת מנוהלים בשכבות – ולפי התאוריה יש 7 כאלה (בחלק מהפרוטוקולים איחדו שתי שכבות לאחת).
כל שכבה מסתמכת על השכבות שמתחתיה, למשל: אם אין חיבור פיזי או אלחוטי כלשהו לרשת (השכבה הפיזית),
לא תהיה אפשרות להעביר מידע מהמחשב החוצה או להפך (שכבת ההעברה שהיא מספר שכבות מעל השכבה הפיזית).
השכבה הפיזית נמצאת בתחתית הפירמידה וכל השכבות שמעליה הן שכבות התוכנה, שבהן מורכבת החבילה שתשודר למחשב היעד.
כל שכבה משכבות התוכנה, מייצרת header ו- tail לחבילת המידע שלה ומעבירה את החבילה שהתקבלה
לשכבה שמתחתיה, וכך לדוגמא החבילות של שכבה ב' משודרות בשדה המידע של החבילות של שכבה א'.
כך מתווספים עוד ועוד נתונים לחבילה ולאחר 7 שכבות נוצרת מנה (packet).
העברת האחריות כלפי מטה – שקיימת כמעט בכל מקום בעולם - דורשת במקרה הזה שב- headers של שכבה א'
יהיה רשום סוג הפרוטוקול שמצוי בשדה המידע כדי לדעת מי נתן את הפקודה (איזה פרוטוקול).
למשל, TCP נמצא בשכבה שיותר רחוקה מהשכבה הפיזית מאשר IP ולכן הוא רוכב מעל IP, ונהנה משירותי
הניתוב של IP (כחלק מהפרוטוקול TCP/IP). החלוקה למנות היא זו שמאפשרת לקיים הרבה "שיחות" על אותו תווך
באותו זמן - החלוקה למנות מנצלת את הרגעים של ה"שקט" בקו כדי להעביר מנות נוספות, וזאת בניגוד לרשת הטלפונית
ששם החיבור רציף, כלומר, משלמים גם על השקט.

הערה

מיתוג מנות - (packet switching) פרושו שהמידע משודר במנות.

הרשת המקומית LAN (זמן לסוף השיעור 00:40)

רשת מקומית בדרך כלל מוגבלת לשטח קטן (עד כמה מאות מטרים), ורוב התקשורת בה ממומשת בחומרה.
פרוטוקול שכיח ברשתות מקומיות הוא Ethernet במהירויות שונות (הנפוץ כיום הוא במהירות מאה מגה-ביט לשניה - 100Mbps.
לכל כרטיס רשת יש כתובת של 48 ביט הקרויה כתובת MAC – כתובת זאת צרובה בחומרה.
החיבור בין המחשבים ברשת Ethernet מבוצע לרוב באמצעות switch. המחשבים ברשת מחוברים ל- switch
באמצעות כבלים - מכל מחשב מוביל כבל לתוך כניסה ב- switch המכונה port.
מחשב המעונין לדבר עם מחשב אחר מייצר חבילות שבהן רשומה כתובת המקור וכתובת היעד. פעמים רבות נשלחות
ההודעות לכל המחשבים ברשת המקומית - פעולה הנקראת broadcast.

TCP/IP (זמן לסוף השיעור 00:35)

כמו שהוזכר קודם, TCP/IP הם למעשה שני פרוטוקולים שונים, האחד מסתמך על השני,
האחד מוודא קשר רשת וסימון המחשבים לצורך העברת נתונים ואילו השני אחראי על תקינות המידע
העובר וערבוב (multiplexing) כל זרמי המידע לזרם מידע בודד. נשמע מסובך?
לא כל כך.... אסביר על כל פרוטוקול בהרחבה.
IP הוא הפרוטוקול הבסיסי עליו מבוססת רשת האינטרנט כולה (ולכן שמו Internet Protocol).
הפרוטוקול מניח שרשת האינטרנט מחולקת להרבה תת-רשתות (העובדות, למשל, בפרוטוקול Ethernet) ויודע לקשר ביניהן.
פרוטוקול זה משדר מידע בין שני מחשבים ברשת על פי כתובות IP. למעשה - משדר מידע בין שתי תת-רשתות באינטרנט.
כתובת IP היא רשימה של ארבעה מספרים מ-0 עד 255 כל אחד. למשל 192.168.1.1
לכתובת ה-IP מצטרפת מסכה הקרויה netmask, למשל 255.255.255.0. מסכה זו מגדירה לאיזו תת-רשת שייכת הכתובת.
במקרה המתואר למעלה, כתובות המחשבים בתת-הרשת ינועו בין 192.168.1.1 ל-192.168.1.254.
הכתובת 192.168.1.0 מציינת את הרשת כולה, והכתובת 192.168.1.255 משמשת לשליחת הודעות
לכל המחשבים בתת-הרשת וכמו שהוזכר מקודם, פעולה זאת נקראת broadcast.

הערה

שימו לב: פרוטוקול IP לא עוסק בתיקון שגיאות - חבילות מידע שהוא שולח עשויות לא להגיע, עשויות להגיע פעמיים, עשויות להגיע בסדר שונה מזה שבו נשלחו, ועשויות להגיע עם שדה מידע משובש. ההנחה היא שפרוטוקולים גבוהים יותר יטפלו בבעיות אלו.

TCP - פרוטוקול בקרת התמסורת. כשמו כן הוא - מפקח על תעבורת מידע, מוודא שהמידע מגיע כמו שנשלח (טוב, משתדל לפחות).
מוסיף את מושג ה-port (הלוגי) - מספר בין 1 ל- 65535. כל רביעייה של כתובת port + IP מקור וכתובת port + IP מטרה מזהה
זרם TCP stream) TCP) אחד. מנתב את המידע מאפליקציה לאפליקציה (IP ינתב אל המחשב, TCP ידע להעביר לאפליקציה הנכונה),
ומציג את המידע לאפליקציות כאילו היה זרם אחד ארוך של בתים, ולא אוסף של חבילות.
TCP משתמש בשתי טכניקות עיקריות בשביל לודא שהחבילה הגיעה כמו שנשלחה: קוד CRC, ומספרים סידוריים (sequence numbers).
קוד CRC הוא מספר המחושב על פי כל הבתים בחבילת TCP מסויימת, כך שאם נשנה ביט בודד בחבילה, תוצאת החישוב תשתנה.
הצד השולח מחשב את ה-CRC של החבילה, ורושם אותו בתוך החבילה.
הצד המקבל מחשב גם הוא את קוד ה-CRC של החבילה, ומשווה לקוד שרשום בחבילה. אם אין זהות בין הקודים הללו -
סימן שהמידע השתבש במהלך השידור והחבילה נזרקת לפח.
בכל חבילת TCP שנשלחת, נרשם המספר הסידורי בתוך ה"זרם" (TCP stream) של הבית בראשון משדה המידע של החבילה.
ביצירת ה- stream "ממציא" המשדר מספר סידורי אקראי, ורושם אותו בתור המספר הסידורי של הבית הראשון בקשר
(למה לא פשוט "1" או "0"? יש לכך מספר סיבות שלא נעסוק בהן כאן).
הצד המקבל יכול, על ידי שימוש במספרים הסידוריים הרשומים בחבילות, לסדר אותן לפי הסדר שבו נשלחו.
בכל פעם שמגיעה חבילה לצד המקבל, הוא שולח אישור (ACK) לצד השולח, ובו המספר הסידורי הבא שהוא מצפה לקבל.
אם חבילה הלכה לאיבוד, יהיה "חור" במספרים הסידוריים, והצד המקבל יעצור את הזרמת המידע בחבילות שאחרי ה"חור" לתוכנה המקומית,
בנוסף, הוא לא שולח אישורים עבור החבילות שמעבר ל"חור".
הצד השולח יעביר חבילות חדשות אך ורק אם קיבל אישור על חבילות קודמות.
אם הצד השולח לא קיבל אישור על חבילה במשך זמן מה, הוא משדר אותה שוב ושוב (בקצב יורד) עד לקבלת האישור.

תירגום שמות לכתובות DNS (זמן לסוף השיעור 00:15)

DNS הוא פרוטוקול מיותר - המחשבים היו עובדים הרבה יותר טוב אם כולם היו משתמשים בכתובות IP...
לרוע המזל, באינטרנט משתמשים אנשים, שמתעקשים שלכתובות תהיה משמעות מילולית (אם אכן לשם כמו www.bn.com יש משמעות מילולית).
שרתי שמות מדברים בפרוטוקול DNS עם מי שרוצה לדעם מה כתובת ה- IP שמתאימה לשם מסוים (עשויות להיות כמה כאלו).
DNS הוא פרוטוקול רזה, לכן אינו יושב מעל TCP אלא מעל אחיו הקטן UDP.
לקוח DNS שואל "מהי כתובת ה-IP של שרת xxx.yyy.com", והשרת עונה לו ישירות, או מפנה אותו לשרת שמכיר
את הכתובות שתחת yyy.com בחלק הקודם, רמזנו על האופי המבוזר של מערכת הדומיינים (DNS).
כדי לחפש מי מכיר דומיין נתון, חייבים להתחיל ממקום כלשהו. מקום זה הוא שרתי השורש - root name servers.
שרתי השורש מכירים את שמות כל הדומיינים הראשיים (com, org, סיומות המדינות השונות וכו').
לכל דומיין כזה, יש לשרתי השורש רשימת כתובות IP של השרתים הראשיים עבור אותו דומיין. ב
אופן דומה עשוי כל דומיין להיות מחולק לתת-דומיינים.
כלומר, כדי למצוא מהי כתובת ה-IP של www.gov.il: ראשית שואלים את אחד משרתי השורש מי מנהל את הדומיין il.

כעת שואלים את אחד השרתים הללו מי מנהל את הדומיין gov.il ואז שואלים את אחד השרתים האחרונים מהי הכתובת של www.gov.il

הערה

שימו לב: לכל דומיין יש שרת שמות ראשי, ואחד או יותר שרתי מראה. הדבר מאפשר לחלק את העומס, ולתמוך ביתירות - אם השרת הראשי נפל, האחרים עדיין מסוגלים לענות במקומו.

הערה

שימו לב 2: שרתי שמות מגדירים כמה זמן מותר "לזכור" תשובה שהם שלחו. כאשר לקוח (או שרת שמות) מקבל מידע, הוא שומר אותו ב-cache מקומי למשך פרק זמן זה. אם נשאל את השרת הזה את אותה השאלה שוב, הוא יענה לפי המידע שב-cache, כדי לחסוך זמן ולהוריד עומס מהשרת המקורי של הדומיין.

הדבקת השכבות בפרוטוקולי תקשורת - פרוטוקול ARP כדוגמא (זמן לסוף השיעור 00:10)

עד כה דיברנו על השכבות ועל צורת סידורן. לא דיברנו על מה שקורה במעבר בין השכבות. למשל,
כיצד משדרים חבילת IP ברשת המקומית?
יש צורך בתרגום חבילת ה-IP לחבילת Ethernet - כולל תרגום כתובת ה- IP לכתובת Ethernet.
לצורך תרגום כתובת IP לכתובת Ethernet משתמשים בפרוטוקול Address Translation Protocol) ARP).
בפרוטוקול זה המחשב השולח משדר הודעת broadcast ברשת ה- Ethernet שבה הוא שואל "למי יש כתובת IP AAA.BBB.CCC.DDD?"
המחשב בעל כתובת ה-IP הזו (ורק הוא) שולח חבילת Ethernet בחזרה, וכותב בה "לי יש כתובת IP !AAA.BBB.CCC.DDD".
מאחר וחבילת ה-Ethernet הזו מכילה את כתובת ה-Ethernet של המחשב העונה, המחשב הראשון יודע כעת למי להעביר את חבילת ה- IP המקורית.

סיכום (זמן לסוף השיעור 00:05)

היום עשינו חזרה על מבנה הרשת – ולא סתם, כי בשיעור הבא נתחיל ל"לכלך" את הידיים בכיוונון ההגדרות ושימוש בכלי בקרת רשתות.
לשם כך נצטרך להשתמש בכל מה שראינו היום, מ- TCP/IP ועד ARP.