|
| |||||||||||||||||||||||||||||||
כתובות IP: | |||||||||||||||||||||||||||||||
ייצוג עשרוני של כתובות אינטרנט מסיכות תת רשת בעלות אורך משתנה
| |||||||||||||||||||||||||||||||
הקדמה | |||||||||||||||||||||||||||||||
לכל ממשק לרשת יש כתובת IP. יש הבדל עקרוני בין כתובת IP לכתובת פיזית. כתובת פיזית צרובה בחומרה של המחשב, ולכל מחשב (שיש לו חיבור לרשת פיזית) יש כתובת כזו. אם מעבירים מחשב מהמשרד בטבריה למשרד בבאר שבע, למשל, הכתובת הפיזית נשארת איתו. לעומת זאת, כתובת IP אינה שייכת למחשב, אלא לרשת. כאשר אותו מחשב יבצע את המעבר מטבריה לבאר שבע, הוא יקבל שם כתובת IP שונה לגמרי. יש מחשבים שיש להם כמה ממשקים לרשתות IP. למחשבים כאלה יהיה גם מספר מתאים של כתובות IP. כדי לפשט את הדברים, נתייחס לכתובת האינטרנט כאילו היא שייכת למחשב. | |||||||||||||||||||||||||||||||
כשנקבע פרוטוקול ה- IP, בספטמבר 1981, הוא דרש שלכל ממשק אינטרנט תהיה כתובת יחודית בת 32 ביטים. חלק מהביטים ייצגו את מספרה של הרשת עליה יושב המחשב (network ID), והשאר - אותו עצמו (host ID). כך, לפי כתובתו של כל מחשב אפשר לדעת לאיזו רשת הוא שייך, ומי הוא המחשב הספציפי ברשת. לכל רשת יש מספר יחודי, ולכל מחשב ברשת יש מספר היחודי לו, וביחד מתקבלת כתובת אינטרנט יחודית לכל מחשב. מזהה הרשת משמש למטרת ניתוב בין רשתות, בדומה לקידומת המדינה או אזור החיוג ברשת הטלפונים. רק כאשר החבילה מגיעה לרשת הרצויה, הנתב מחפש את המחשב הספציפי שזו כתובתו. | |||||||||||||||||||||||||||||||
כיוון שגודלה של כתובת האינטרנט מוגבל ל- 32 ביטים, יש הגבלה גם על מספר הרשתות השונות שיכולות להיות מחוברות לאינטרנט, וגם על גודלה של כל רשת. למעשה, ככל שנגדיל את מספר הרשתות השונות, נקטין את גודלה המקסימלי של כל רשת; וככל שנגדיל את מספר המחשבים המקסימלי בכל רשת, נקטין את מספר הרשתות: אם נרצה, למשל, שבכל רשת יוכלו להיות 2 בחזקת 10 (1024) מחשבים, זה אומר שעשרת הביטים האחרונים של הכתובת יצטרכו לייצג את מספרו של המחשב ברשת. זה ישאיר רק 22 ביטים לייצג את מספרה של הרשת באינטרנט - כלומר, יגביל את מספר הרשתות השונות ל- 2 בחזקת 22 (קצת יותר מארבעה מיליון). כיוון שגודלה של האינטרנט כיום עבר בהרבה את ציפיותיהם של הוגי פרוטוקול האינטרנט, מספר זה כבר אינו מספיק. | |||||||||||||||||||||||||||||||
מחלקות כתובות (classfull addressing): | |||||||||||||||||||||||||||||||
כיוון שהניחו שלארגונים שונים יהיו דרישות שונות, חילקו מתכנני הפרוטוקול את מרחב הכתובות לשלוש מחלקות, לפי גודל הרשתות שנועדו לשרת: | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
שתי מחלקות נוספות שהוגדרו בפרוטוקול הן:
| |||||||||||||||||||||||||||||||
ישנן כמה כתובות שמורות, שהן בעלות משמעות מיוחדת. מזהה מחשב 0 אינו משמש לזהות אף מחשב אמיתי, ומשתמשים בו כאשר רוצים להתייחס לרשת כולה, ולא למחשב ספציפי בתוכה. מזהה מחשב שמורכב מ- 1'ים בלבד הוא כתובת broadcast, שידור לכולם, ומשתמשים בו כאשר מעוניינים לשלוח חבילה שתגיע לכל המחשבים ברשת מסויימת. מזהה הרשת 127 משמש עבור בדיקות loopback. | |||||||||||||||||||||||||||||||
ייצוג עשרוני של כתובות אינטרנט: | |||||||||||||||||||||||||||||||
כיוון שכתובות אינטרנט היא מספר בן 32 ביטים, כתובת אפשרית היא "11011010001111000110100001110101". זה מספר שלא מהווה בעיה, כמובן, למחשבים ולנתבים המשתמשים בפרוטוקול ה-IP ומדברים בביטים; אבל לבני אדם די קשה לקרוא אותו. כדי להקל על משתמשי הרשתות, נהוג לייצג כתובות אינטרנט ע"י 4 מספרים עשרוניים המופרדים בנקודות. הכתובת שראינו למעלה, למשל, תהפוך ל - "218.60.104.117". הכתובת מתקבלת כך: מחלקים את 32 הביטים לארבעה שדות של 8 ביטים כל אחד, הנקראים בתים. מייצגים כל בית כמספר עשרוני, ומפרידים ביניהם בנקודות. כדי לראות איך נראית כתובת IP למחשב, וכמה טוב שיש יצוג שונה לבני אדם, הכניסו כתובת IP לשדה המתאים, ותראו את היצוג שלה בביטים. | |||||||||||||||||||||||||||||||
כפי שכבר צוין קודם, מתכנני הפרוטוקול לא ציפו שהאינטרנט תגיע לממדים אליהם הגיעה. לו היו מתכננים כתובת המורכבת ממספר גדול יותר של ביטים, לא היינו מגיעים למצב הנוכחי של חוסר ממשי בכתובות פנויות. בנוסף, כיוון שבתחילת שנות השמונים מרחב הכתובות נתפס כבלתי מוגבל כמעט, ארגונים קיבלו כמה כתובות אינטרנט שרצו, גם אם לא היה להם צורך ממשי בהן. גם החלוקה של הכתובות למחלקות השונות התבררה כלא יעילה - כתובות ממחלקה C התאימו לרשתות קטנות מדי, וכתובות ממחלקה B כבר היו גדולות מדי. ארגונים שנזקקו לכמה מאות של כתובות אינטרנט קיבלו כתובות ממחלקה B - בזבוז משווע של כתובות. | |||||||||||||||||||||||||||||||
חלוקת לתת-רשתות (subnetting): | |||||||||||||||||||||||||||||||
כבר באמצע שנות השמונים נעשה הצעד הראשון לפתרון בעיית הכתובות. rfc 950 (link, למצוא תרגום לזה!!) הציג סטנדרט לפיצול רשתות ממחלקות A, B או C לתת-רשתות. הרעיון שבסיס תת-רשתות הוא חלוקה של מזהה המחשב (host id) לשני חלקים: מזהה תת-הרשת (subnet id) ומזהה המחשב בתוך תת-הרשת. כך למשל, ארגון שהוקצתה לו כתובת B, שנראית כך: | |||||||||||||||||||||||||||||||
ורצה להוסיף רשת נוספת באתר שלו, לא נאלץ לבקש כתובת B נוספת, אלא חילק את מרחב הכתובות שברשותו לתת-רשתות, שכל אחת מהן נראית למשל כך: | |||||||||||||||||||||||||||||||
תת רשתות אלה הן "שקופות" עבור העולם החיצוני - מבחינתם של נתבים מחוץ לארגון, בארגון יש רק רשת אחת, למרות שלמעשה יש לו הרבה תת רשתות. כך נפתרה בעיה נוספת שהחלה להיווצר - טבלאות הניתוב, שעל פיהן מנותבת התעבורה ברשת, נהיו גדולות מדי, כיוון שהיו יותר מדי רשתות שונות, ועבור כל רשת נדרשה כניסה בטבלה. ברגע שהתאפשר לבנות רשתות רבות בתוך הארגון, שחולקות את אותו מזהה רשת, נדרשה רק כניסה אחת בטבלת הניתוב עבור כל תת הרשתות האלה. רק הנתבים שבתוך הארגון נדרשו להכיר את מזהה תת-הרשתות של הארגון. על מנת לאפשר ניתוב בין תת רשתות, הנתב צריך לדעת לא רק מה הכתובת של מחשב היעד, אלא גם איזה חלק של הכתובת מייצג את הרשת ואת תת הרשת, ואיזה חלק מייצג את המחשב. לשם כך, נעשה שימוש ב"מסכת תת-הרשת" (subnet mask). המסכה מציינת למעשה כמה ביטים משמשים כמזהי הרשת ותת-הרשת. כאשר מבצעים פעולה מתימטית פשוטה (AND על כל ביט בין הכתובת למסיכה), ניתן לגלות מהו מזהה תת הרשת. אם ידועה לכם כתובת ה- IP שלך והמסיכה שלה, תוכלו להשתמש במנגנון הבא כדי לבדוק אם כתובת IP אחרת יכולה להיות שייכת לאותה תת רשת.
| |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
מסכות תת-רשת בעלות אורך משתנה (vlsm): | |||||||||||||||||||||||||||||||
בשנת 1987, RFC 1009 הגדיר איך רשת יכולה להיות מפוצלת לתתי-רשתות בעלות אורך משתנה - כלומר לתתי רשתות בעלות גדלים שונים. כך ניתן לנצל באופן יעיל עוד יותר את מרחב הכתובות המוקצה לארגון, ולהקים תת-רשתות בכל מיני גדלים, לפי הצורך. אך לצד הגמישות המושגת כך, גדלה מאוד גם סיבוכיות הרשת, ויכול להיווצר מצב של "עמימות כתובות", שבו כתובת אחת יכולה להתאים לשתי תת-רשתות שונות. במצב כזה, הנתב הפנים-ארגוני לא ידע לאיזו תת-רשת עליו להגיע. לכן, השימוש ב- vlsm אינו נפוץ.
| |||||||||||||||||||||||||||||||
NAT: | |||||||||||||||||||||||||||||||
NAT (תרגום כתובות רשת, Network Address Translation) היא טכנולוגיה המאפשרת לחסוך בכתובות IP. רשת מקומית המשתמשת ב- NAT, זקוקה רק לכתובת IP אחת (או יותר, אבל אחת מספיקה), כדי להתחבר לאינטרנט. הכתובת היחידה הזו שייכת לנתב השער שמחבר את הרשת המקומית לאינטרנט, ושדרכו עוברות כל החבילות היוצאות מהרשת המקומית החוצה. NAT מתרגם את כתובות ה- IP של החבילות היוצאות והנכנסות: כתובת המקור של כל חבילה יוצאת מוחלפת בכתובת ה- IP של נתב השער, וכתובת היעד בכל חבילה נכנסת מוחלפת בכתובת הפרטית של המחשב בתוך הרשת המקומית. כתובות פרטיות אלה אינן צריכות להיות כתובות חוקיות באינטרנט, כיוון שהן לעולם אינן יוצאות החוצה מהרשת המקומית. | |||||||||||||||||||||||||||||||
איך יודע נתב השער שמפעיל NAT להחליף את כתובת היעד של החבילות הנכנסות? NAT משתמש בטבלת תרגום. בכל כניסה בטבלה מופיעה כתובת של מחשב כלשהו באינטרנט, ולידה כתובת של אחד המחשבים המקומיים. כאשר מגיעה חבילה לנתב ה- NAT, הוא בודק בטבלה ומחליט לאיזה מחשב מקומי להעביר אותה. כמובן, שהכניסה בטבלה חייבת להיות קיימת ברגע שנדרשת ההחלטה הניתובית הזו. טבלת התרגום של NAT יכולה להיות מאותחלת לפי אחת מהאפשרויות הבאות: | |||||||||||||||||||||||||||||||
אתחול ידני - מנהלת הרשת ממלאת את הכניסות בטבלה באופן ידני. | |||||||||||||||||||||||||||||||
אתחול אוטומטי לפי חבילות היוצאות מהרשת - הטבלה נבנית כ"תוצר לוואי" של שליחת חבילות מהרשת המקומית אל האינטרנט. כאשר נתב ה- NAT מקבל חבילה ממחשב מקומי, המיועדת החוצה, הוא יוצר כניסה בטבלה עם כתובתו הפנימית של המחשב, ליד כתובת היעד של החבילה שנשלחה.כאשר מגיעה תשובה מכתובת היעד, הנתב יודע שהיא מיועדת למחשב ששלח אליה חבילה לפני כן. | |||||||||||||||||||||||||||||||
אתחול אוטומטי תוך שימוש בחיפוש שמות domain - הטבלה נבנית כתוצר לוואי של חיפושי שמות domain. כאשר מחשב חיצוני (מהאינטרנט) מחפש את שמו של מחשב פנימי, התוכנה המיישמת DNS ברשת ממלאת כניסה בטבלה, הכוללת את כתובתו של המחשב החיצוני, ושל המחשב הפנימי אותו הוא חיפש. | |||||||||||||||||||||||||||||||