מודל השכבות> IP > ניתוב באינטרנט עמוד השער מושגים
ניתוב באינטרנט

 

הקדמה

ניתוב ברשתות TCP/IP

ארכיטקטורת הניתוב באינטרנט

תהליך הניתוב באינטרנט

 

הקדמה

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

בשיטת "ניתוב על פי היעד" (source routing), כל המידע לגבי דרך ההגעה מהמקור ליעד נאסף על ידי המקור, ורק אז נשלחת החבילה. במקרה כזה, תפקיד הרשתות שבדרך יהיה רק לקרוא את המידע שסיפק להם המקור, ולפעול לפיו

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

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

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

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

תהליך הניתוב באינטרנט
הרשתות השונות משתמשות בפרוטוקולי הניתוב השונים על מנת לפרסם את המידע השמור אצלן, בטבלת הניתוב שלהן. הרשתות משתמשות בעדכונים שהן מקבלות מרשתות אחרות, ובמידע שמתקבל בדרכים אחרות (למשל, על ידי הכנסה ידנית של מסלולים סטטיים), על מנת לעדכן את טבלת הניתוב שלהן.
טבלת הניתוב היא טבלה שכל כניסה בה מגדירה את תת-הרשת אליה יש לשלוח חבילה, שיעדה הוא כתובת מסוימת. כאשר נתב שולח חבילה IP, הוא מסתכל על כתובת היעד שרשומה בה, מוצא את הכניסה בטבלה שמתאימה לרשת בה נמצאת הכתובת, ושולח את החבילה לתת הרשת המצוינת במקום זה בטבלה.
למשל, אם בטבלה יש כניסות שנראות כך:
אז חבילה שכתובת היעד שלה נמצאת על רשת 149.40.0.0 (למשל 149.40.0.1) תשלח דרך ממשק עם רשת 132.8.0.0, ואילו חבילה שכתובת היעד שלה היא 195.45.8.1 תשלח דרך ממשק עם רשת 15.0.0.0. (כמובן, שבטבלאות ניתוב אמיתיות יש מידע נוסף - כמו מסיכות תת רשת (subnet masks), עדיפויות של נתיבים, ועוד, אך למען הפשטות התייחסנו כאן רק לשדות העיקריים של כל כניסה).
אף מערכת לא יכולה להחזיק את כל המידע שדרוש כדי לקבוע נתיבים מכל מקום באינטרנט לכל מקום אחר. אי אפשר גם לתכנן פרוטוקול ניתוב אחד ויחיד שיפעל היטב גם בסביבות מקומיות (שבהן צריך להגיב במהירות לשינויים ברשת המקומית), וגם ברשתות מרחביות (שבהן חשוב להגביל את האחוז של רוחב הפס המשמש להעברת עדכוני ניתוב, ובא על חשבון רוחב הפס המשמש להעברת מידע). לכן, ארכיטקטורת הניתוב של TCP/IP היא היררכית:
  • כל מחשב יודע איך להגיע למחשבים אחרים באותה תת הרשת שלו (ע"י שליחת בקשת ARP כדי למצוא את כתובתם), ואיך להגיע לנתב השער (gateway) שבתת הרשת שלו (כתובת ה- IP של נתב השער מוגדרת באופן ידני בכל מחשב המחובר לתת הרשת).
  • הנתבים בתתי הרשתות השייכות לאותה מערכת אוטונומית (כלומר לאותו תחום ניתוב "ריבוני", routing domain), מפעילים בינם לבין עצמם פרוטוקולי ניתוב פנימיים (interior gateway protocols), כמו RIP ו- OSPF.
  • בין מערכות אוטונומיות, מפעילים הנתבים המיועדים לכך פרוטוקולי ניתוב חיצוניים (exterior routing protocols או border gateway protocols), כמו BGP4.