לדלג לתוכן

1.5 פרוטוקולים בשכבת הרשת הרצאה

קבלת כתובת IP

  • אז איך מחשבים מקבלים כתובת ip? ואיך מחשבים יודעים מי הdefault gateway של הסאבנט?
  • אז דרך אחת זה להגדיר זאת סטטית בהגדרות המחשב,
    Winkey+R -> ncpa.cpl -> properties על כרטיס רשת ->IPv4 properties
  • ודרך טובה יותר לעשות זאת זה באמצעות פרוטוקול DHCP.

פרוטוקול DHCP

  • פרוטוקול DHCP או בשמו המלא: dynamic host configuration protocol הוא פרוטוקול שמטרתו לחלק כתובות IP לכל המכשירים ברשת על ידי רכיב מרכזי ברשת, כמו ראוטר.
  • שרת הDHCP (הרכיב שמנהל את הDHCP ברשת, למשל ראוטר) אחראי להעניק כתובות IP לכל המכשירים שמצטרפים לרשת, וגם למחוק כתובות שהמכשירים מתנתקים מהרשת.
  • הפרוטוקול גם אחראי להגיד לכל המחשבים שהוא מביא להם כתובות IP גם מי הDG של הרשת, כדי שהם ידעו להתמצא בה. ואחראי להביא גם עוד הגדרות שנדבר עליהם בהמשך הקורס.
  • פרוטוקול DHCP מעניק כתובות IP בצורה הבאה, DORA
    1. גילוי - discover: ראשית מחשב שמתחבר לרשת, שולח בפרוטוקול dhcp פקטה בbroadcast לכל המחשבים (255.255.255.255, FF:FF:FF:FF:FF:FF) שהוא מחפש את שרת הDHCP
    2. הצעה - offer: שרת הDHCP (בדרך כלל הראוטר) אחראי ברגע שהוא רואה שמישהו מנסה להתחבר לרשת, לשלוח לו תשובת offer (הצעה), ולהציע לו כתובות ip מסויימות שיש לו להציע לו.
    3. בקשה - request: המחשב אחראי להגיד לשרת הdhcp בחזרה איזה כתובת ip הוא רוצה.
    4. תשובה - ack: שרת הdhcp אחראי להגיד לו האם הבקשה התקבלה, ואם כן, להגיד לו מה הip של הDG (כדי שיזין את הטבלת ניתוב שלו), מה הip של השרת dhcp, ועוד הגדרות. כאשר השרת dhcp מביא למחשב ip, הוא מגדיר גם lease time - הזמן שבו הip תקף, זה יכול להיות שבוע למשל - וזה אומר שאחרי שבוע השרת dhcp ימחק את הip שלו מהרשימה והמחשב יצטרך לעשות שוב בקשת dhcp. מטרת הlease time היא כדי שאם המחשב התנתק מהרשת מבלי להגיד לשרת dhcp שהוא התנתק, הip שהוא קיבל לא יחייה לנצח.
  • בטח כבר ניחשתם, שרת הdhcp מחזיק רשימה של כל הip-ים שהוא יכול לתת, כל הip-ים התפוסים, ומתי הip-ים התפוסים זמנם מתבוגג כדי שהשרת dhcp ידע מתי למחוק אותם מהטבלה שלו.

  • העשרה: מתקפה שאפשר לעשות על שרתי DHCP, היא פשוט להספים שרתי dhcp ולבקש מהם את כל הip-ים שיש להם בטבלה ובכך לתקוע את השרת dhcp ובכך כל מחשב שירצה להצטרף לרשת לא יוכל, כי כל הip-ים תפוסים. מתקפה זו נקראת dhcp starvation

  • העשרה: עוד מתקפה שאפשר לעשות היא להתחזות לשרת dhcp ברשת, ואז כאשר מחשב ברשת יחפש את השרת dhcp, תוכלו לנסות לענות לו מהר יותר מהשרת dhcp האמיתי ובכך תוכלו לשלוח לו תשובות זדוניות משלכם - כמו למשל תוכלו להביא לו ערך של DG לא נכון, למשל תוכלו להגיד לו שהDG של הרשת הוא הip שלכם, ואז כל התעבורה שהוא לא ידע לנתב היא תגיע אליכם, ובכך תוכלו להסניף חלק מהתעבורה של המכשיר שתקפתם, וגם לשלוט בתעבורה שאתם מחזירים לו. מתקפת זו נקראת dhcp spoofing

פרוטוקול APIPA

  • במחשבי ווינדוס, כאשר נשלחת בקשה לשרת הdhcp והוא לא עונה אחרי 60 שניות, נבחר ip ראנדומלי בסאבנט 169.254.0.1/16, ואז המחשב מודיע על כך לכל המחשבים בbroadcast שהוא בחר ip.
  • זה פרוטוקול הכרחי כאשר אין שרת dhcp ברשת, והמחשבים ברשת צריכים עדיין למצוא דרך לתקשר - אך זה לא אידאלי.

פרוטוקול ARP

  • אז איך בתהליך הניתוב מחשבים יודעים לתרגם כתובת ip לכתובת mac? באמצעות פרוטוקול arp. פרוטוקול arp הוא קיצור של address resolution protocol והוא מאפשר לשאול מחשבים ברשת, מה הכתובת mac של ip מסויים.
  • כאשר אנחנו צריכים לדעת מה הmac של ip מסויים, (למשל בניתוב) אז אנחנו שולחים בקשת arp בbroadcast לכל המחשבים שבה אנחנו שואלים מה הmac של ip מסויים.
  • כל מחשב ברשת יכול לענות לנו בחזרה, ולהגיד מה הmac של הip.
  • אחרי שקיבלנו תשובת arp, המחשב ישמור את המידע בטבלה ששומרת קישוריות בין כתובות ip לכתובות mac - כדי שהמחשב לא יצטרך לשאול את כולם מה הmac של מישהו בכל פעם שהוא רוצה לתקשר איתו, אז חכם יותר שהמחשב ישמור את המידע הזה. זה נקרא arp cache.
  • העשרה: מתקפה שאפשר לעשות בפרוטוקול היא arp poisoning - מתקפה שבה אני עונה תשובות arp זדוניות למחשבים ברשת, ובכך מזבל את הarp cache שלהם. זה יכול לעזור לי כדי לשבור את התקשורת ברשת, וגם אני יכול לענות להם בתשובות שהmac של מחשבים זה הmac שלי ובכך תועבר אליי תעבורה שהם תכננו לשלוח למחשב אחר.

פרוטוקול IP

  • פרוטוקול IP הוא פרוטוקול שמחשבים משתמשים בו בפועל לשלוח פקטות עם ip - למשל כמו ip מקור ו- ip יעד.
  • בנוסף בפרוטוקול קיים שדה checksum, בדיוק כמו בפרוטוקול ethernet
  • וקיים בפרוטוקול שדה מיוחד שנקרא TTL, קיצור של time to live. השדה הזה אחראי על כך שפקטות לא יסתבבו בכל האינטרנט - דמיינו מצב שבו שלחתם פקטה, והip שנשלח אילו הפקטה לא קיים מסיבה כלשהי, אז הפקטה שלכם תסתובב בכל האינטרנט ובין אלפי ראוטרים והיא לא תמות, וזה דבר רע, כי זה מכביד על האינטרנט כולו. כדי לפתור את הבעיה בפרוטקול הip קיים השדה ttl והוא אמור לקבל מספר מהמחשב ששולח את הפקטה, (המספר אמור להיות מקסימום 256) וכל נתב בדרך שמנתב ומעביר את הפקטה אמור להוריד את ערך הttl של הפקטה באחד, ואם הttl של פקטה הוא 0 הנתב אמור להפיל את הפקטה. כך אין שום פקטה בעולם שאמורה לחיות אחרי 256 קפיצות שונות בין ראוטרים. מחשבי ווינדוס בדרך כלל נותנים לפקטות שלהם ttl של 128, כך שאם הפקטה נשלחה והיא לא מוצאת את הנמען שלה אחרי מקסימום של 128 קפיצות הפקטה אמורה ליפול ולהימחק על ידי אחד הנתבים בדרך.
  • בשכבת הרשת פקטות יכולות לרוץ ולקפוץ בכל רכבי האינטרנט, ויכול להיות המון מצבים שבהם הפקטות עוברות בטווחים שונים - כך שיכול להיות שהMTU של מסגרות לפעמים יהיה 1500, לפעמים 2000 ולפעמים 1000. המסגרות צריכות להשתנות בהתאם לMTU וזה יכול ליצור בעיה. לבעיה הזו יש פתרון שנקרא פרגמנטציה, וזה אחד הדברים שפרוטוקול הip פותר, פחות נכנס לזה בקורס אבל מוזמנים לקרוא על כך באינטרנט - זה מעניין.

פרוטוקול ICMP

פרוטקול ICMP או בשמו המלא: internet control message protocol הוא פרוטוקול שמטרתו לעזור לאנשי תקשורת ואנשי רשתות להבין מה קורה ולקבל מידע על המצב הנוכחי ברשת.
- אחד הכלים החזקים שהפרוטקול מעניק לנו הוא בקשות ping, בקשת ping מאפשרת לנו לבדוק האם אנחנו יכולים לתקשר עם ip מסויים - בכך שהיא שולחת למחשב בקשת icmp ping, ואם המחשב מקבל את הפקטה, הוא מחזיר בתשובת icmp. בדרך כלל בבקשות icmp ping אנחנו שולחים איזשהי מחרוזת אקראית, והמחשב בצד השני צריך להחזיר לנו את המחרוזת בתשובת icmp שלו ובכך אנחנו יכולים לראות האם באמת המחרוזת ששלחנו לו עברה במלואה ושאין נפילות של פקטות בדרך (packet loss).
- כשאנחנו שולחים פקטת ip ונגמר לה הTTL, אז אנחנו מקבלים מהראוטר שזורק את הפקטה תשובת ICMP שמעידה על כך שפקטה ששלחנו לא הגיע ליעד.
- למעשה בICMP יש המון תשובות כאלה שעוזרות לאינטרנט להיות מקום יותר אינדיקטיבי, נחמד שמחשבים עוזרים למחשבים.

  • בהרצאה האחרונה למדנו על המון פרוטוקולים שיושבים מעל שכבת הקו, עכשיו אם נחזור לשיעור הקודם שאמרנו שבפרוטוקול ethernet יש שדה שאומר מה הפרוטוקול שמעליו - מדובר בדיוק על איזה פרוטקול קיים בשכבת הרשת - וזה שימושי כדי שהמחשב ידע לדעת איזה פרוטוקול בדיוק נמצא בשכבת הרשת, למשל האם זה arp או Ip או כדומה.
  • ובדיוק בגלל זה גם בפרוטוקול ip מצויין הפרוטוקול שנמצא בשכבה מעל (שכבת התעבורה - השכבה הרביעית).

פקודות שימושיות

  • נלמד על קצת פקודות שימושיות שאפשר להריץ במחשב ווינדוס שלנו בטרמינל:
    הפקודה ping מאפשרת לנו לשלוח בקשות icmp ping לip-ים שנבחר
    ping 8.8.8.8
    

    הפקודה route print מאפשרת לנו לראות את הטבלת ניתוב של המחשב
    route print
    
  • מוזמנים גם להריץ route /h כדי לראות איזה עוד דברים אפשר לעשות עם הפקודה - אפשר גם לשנות סטטית את הטבלה.

הפקודה arp -a מאפשרת לנו לראות את הטבלת arp cache שלנו

arp -a

- שימו לב שגם אפשר להשתמש בפקודה arp כדי לשנות את הטבלה סטטית.

הפקודה ipconfig מאפשרת לנו לראות את כל הinterface-ים שלנו מחשב, את כתובות ip שלנו והmac-ים שלנו.

ipconfig

הפקודה ipconfig /all מראה עוד מידע על כל כרטיס רשת
ipconfig  /all

הפקודה ipconfig /release משחררת את הכתובת ip שלנו לשרת הdhcp
ipconfig /release

הפקודה ipconfig /renew מבקשת ip חדש משרת הdhcp.
ipconfig /renew 

קצת סדר

  • למדנו על הרבה רכיבים וbuzzwords כמו router, switch וצריך שנעשה קצת סדר.
  • סוויטצים: אז קיימים כמה סוגים של switch-ים - switch layer 2, הswitch שאתם מכירים, אחד שפועל רק בשכבת הקו, ו- switch layer 3 - שזה switch שמתפקד כנתב, שכל מה שהוא עושה זה לנתב תעבורה.
  • ראוטר ביתי: ראוטר ביתי הוא הראוטר שכנראה יש לכם בבית, והוא לא סתם ראוטר, הוא קופסת קסמים שעושה המון המון המון דברים. היא גם ראוטר (רכיב שיכול לנתב פקטות), גם שרת DHCP, גם switch layer 2 (כי כל המכשירים מחוברים אילו הוא יודע למתג בניהם בלי ניתוב) ועוד.

שאלות נפוצות

  • שאלה נפוצה: האם כל האינטרנט מורכב מהמון נתבים (switch layer 3) שמחברים את כל העולם? אז לא, האינטרנט הרבה יותר מסובך מזה. קיימים ספקי תקשורת (ISP), כמו בזק למשל שאחראים לחבר את כל הראוטרים הבתיים בסוף לאינטרנט והעבודה שלהם קשה מאוד, הם צריכים לחבר שטחים גאוגרפים ענקיים לרשת, ולטפל בכמויות מטורפות של מידע.
  • ולמעשה גם העולם של ספקיות תקשורת הוא מאוד מסובך, יש המון סוגי ספקיות - כמו ספקית רמה 1, ספקית רמה 2, וספקיות רמה 3 שאלו 3 גדלים של ספקיות שאחראיים על כל התעבורת אינטרנט בעולם. ואנחנו בקורס הזה לא נדבר על העבודה הקשה שיש לספקיות ופחות נדבר על הWAN בכללי. ואנחנו יותר נדבר על הLAN.
  • אבל בצורה כללית כל הספקיות אינטרנט משתמשות בהמון פרוטוקולים, (שלא נלמד) שעוזרים להם לבנות את האינטרנט. כך שעולם הרשתות יכול להגיע לעומקים מאוד עמוקים בקלות - rabbit hole.
  • אז למה 192.168.0.0/16, 10.0.0.0/8 ו- 172.16.0.0/12 הן כתובות מיוחדות? בסוף האינטרנט בנוי מרשתות פנימיות (רשתות של ארגונים, בתים וכו) ומהרשת העולמית.
    ברשתות פנימיות בדרך כלל משתמשים בip-ים המיוחדים שציינתי למעלה, ובסוף כדי לצאת לאינטרנט לנתב שמתנתב אותם לאינטרנט הרחב, יש ip פומבי. (ip שלא נמצא בטווח שציינתי למעלה.) כך שבאינטרנט הרחב אין להרבה מחשבים ip, אלה רק לנתבים בדרך כלל, ומאחורי כל נתב יכולה להיות רשת שלמה של המון מחשבים. אז למה?
  • בגלל שכתובות IP בנויות רק מ4 בתים קיימים רק 4 מילארד בערך כתובות IP בעולם, וזה לא מספיק לכל המחשבים. בהמשך הקורס נלמד על איך פתרו את הבעיה הזו, אבל כרגע נענה על כך שברשתות פנימיות משתמשים בIP-ים האלה: 192.168.0.0/16, 10.0.0.0/8 ו- 172.16.0.0/12 והראוטר שלכם כשהוא יוצא לרשת העולמית (לאינטרנט) אז יש לו ip יחודי שנקרא ip פומבי. כך שבסוף ה4 מילארד כתובות האלו מחולקות בעיקר לראוטרים, ולא לכל מחשב בעולם. ובכך אנחנו חוסכים בכתובות.
  • זה בסדר אם לא הבנתם ב100 אחוז, אנחנו נדבר בהרצאות הקרובות בצורה מעמיקה על הבעיה.

סיכום

  • למדנו על שכבת הרשת, ולמדנו כיצד מחשבים מתקשרים מהצד השני של העולם. עברו על הפרק מספר פעמים, זה ללא ספק אחד הפרקים הכי חשובים וארוכים בקורס.