מחשבון CIDR ותת־רשתות

מחשב כתובת רשת, טווח מארחים, מסכות ומספר כתובות לכל בלוק IPv4 או IPv6, ומפצל אותו לתת־רשתות שוות.

אורך הקידומת/24
רשת
192.168.1.0/24
כתובת הרשת
192.168.1.0
כתובת broadcast
192.168.1.255
טווח שימושי
192.168.1.1 – 192.168.1.254
כתובות שימושיות
254
סך הכתובות
256
מסכת רשת
255.255.255.0
מסכת wildcard
0.0.0.255
פרטית192.168.0.0/16
לפצל ל־

מה הכלי הזה עושה

בלוק CIDR כמו 192.168.1.0/24 הוא דרך תמציתית לתת שם לטווח של כתובות. הכלי הזה לוקח אחד כזה ועונה על השאלות שנובעות ממנו: היכן הטווח מתחיל ונגמר, כמה כתובות הוא מכיל, כמה מהן אפשר לתת למכונה, איך נראית מסכת הרשת, האם כתובת מסוימת נמצאת בפנים, ומה מקבלים כשחותכים אותו לחתיכות קטנות יותר.

הוא מטפל ב־IPv4 וב־IPv6, והוא מקבל כתובת מארח באותה קלות שהוא מקבל כתובת רשת — הדביקו 192.168.1.57/24 היישר מ־ip addr והוא יגיד לכם באיזה בלוק הכתובת הזו נמצאת. הכל אריתמטיקה שמתבצעת בדפדפן שלכם: בלי שאילתות, בלי שרת, וזה עובד גם כשהרשת מנותקת.

מה המספר אחרי הלוכסן אומר

כתובת IPv4 היא 32 ביט. המספר שאחרי הלוכסן — אורך הקידומת — אומר כמה מהביטים האלה מזהים את הרשת; השאר מזהים מארח בתוכה. /24 מקבע את 24 הביטים הראשונים ומשאיר 8 חופשיים, ולכן הוא מכיל 2^8 = 256 כתובות.

192.168.1.0                           # הכתובת
11000000.10101000.00000001.00000000   # 32 הביטים שלה
11111111.11111111.11111111.00000000   # המסכה של /24: 24 אחדות, 8 אפסים

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

  • ‏/24 — 256 כתובות, 254 שימושיות. הרשת הקטנה הקלאסית.
  • ‏/25 — 128 כתובות, 126 שימושיות. חצי /24.
  • ‏/26 — 64 כתובות, 62 שימושיות.
  • ‏/30 — 4 כתובות, 2 שימושיות. קישור נקודה־לנקודה המסורתי.
  • ‏/16 — 65,536 כתובות. /24 מאתיים חמישים ושש פעמים.

למה חסרות שתי כתובות

ב־/24 יש 256 כתובות אבל רק 254 שימושיות, כי IPv4 מוציא שתיים מהן. הכתובת הראשונה בבלוק היא כתובת הרשת, שמעניקה שם לבלוק עצמו ואינה מוקצית לאף ממשק. האחרונה היא כתובת ה־broadcast, שמגיעה לכל המארחים בקישור בבת אחת. משם מגיע הנוסחה המוכרת 2^n − 2.

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

  • ב־/31 יש שתי כתובות, והנוסחה אומרת אפס שימושיות. RFC 3021 מגדיר את /31 לקישורי נקודה־לנקודה, שבהם אין צורך בכתובת broadcast ושתי הכתובות מוקצות — אחת לכל קצה. התשובה הנכונה היא 2.
  • ‏/32 הוא כתובת אחת, והנוסחה אומרת מינוס אחת. /32 מציין מארח אחד בדיוק; זה מה שכותבים עבור שרת בודד בחוק חומת אש או במסלול ניתוב.

הכלי הזה הולך לפי RFC 3021 ומדווח 2 ו־1 במקרים האלה. אם מחשבון אחר אומר לכם של־/31 אין כתובות שימושיות, זו הנוסחה מהספר מיושמת מעבר לנקודה שבה היא תקפה.

מסכת הרשת ומסכת ה־wildcard

מסכת הרשת היא אותו מידע כמו אורך הקידומת, כתובה כארבע ספרות מנוקדות: ביטי הרשת הם אחדות וביטי המארח הם אפסים. /24 הוא 255.255.255.0. פורמטי הגדרה ישנים רוצים את המסכה, חדשים יותר רוצים את הקידומת, והם ניתנים להחלפה זה בזה.

מסכת ה־wildcard היא מסכת הרשת הפוכה — 0.0.0.255 עבור /24. רשימות גישה של Cisco והצהרות network ב־OSPF נכתבות איתה, וההיפוך מפיל אנשים מספיק פעמים כדי שיהיה שווה לומר זאת במפורש: במסכת wildcard, ביט אפס פירושו «חייב להתאים» וביט אחד פירושו «לא אכפת», וזה בדיוק ההפך ממסכת רשת.

ב־IPv6 זה אותו רעיון עם פחות חריגים

כתובות IPv6 הן 128 ביט במקום 32, והקידומת עובדת בדיוק אותו הדבר — /64 מקבע את 64 הביטים הראשונים. האריתמטיקה זהה; מה שמשתנה הוא ששני סיבוכים של IPv4 נעלמים.

  • אין כתובת broadcast. IPv6 החליף את ה־broadcast ב־multicast, ולכן לא נשמר דבר בסוף הקידומת.
  • גם בהתחלה לא נשמר דבר, ולכן כל כתובת בבלוק ניתנת להקצאה ומספר הכתובות השימושיות שווה לסך הכל. (כתובת האפסים בתת־רשת היא כתובת ה־anycast של הנתב, מוסכמת ניתוב ולא חור בטווח.)
  • אין מסכת רשת מנוקדת. IPv6 נכתב תמיד כאורך קידומת; מסכה של 128 ביט בטקסט הייתה בלתי קריאה ואף אחד לא מבקש אחת כזו.

‏/64 הוא הגודל הסטנדרטי לקישור בודד, כי הגדרה עצמית של כתובות ללא שרת (SLAAC) מצפה ל־64 ביטי מארח. אתר מקבל בדרך כלל /48 או /56, שאותו מפצלים ל־/64 — אחד לכל VLAN או מקטע. לכן הכלי הזה ישמח לחלק /48 ל־/64 ולומר לכם שיש 65,536 כאלה.

מספרי הכתובות גדלים מהר, ולכן הם מוצגים גם כחזקה של שתיים וגם כמספר מלא: /32 מכיל 2^96 כתובות, שהן 79,228,162,514,264,337,593,543,950,336. החזקה היא מה שקריא; הספרות הן מה שמעתיקים.

איך כותבים כתובות IPv6 בצורה הקנונית

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

  • הקסדצימלי באותיות קטנות, ובלי אפסים מובילים בתוך קבוצה — 2001:0db8 הופך ל־2001:db8.
  • הרצף הארוך ביותר של קבוצות אפס מוחלף ב־::, ורק הארוך ביותר. בתיקו הרצף השמאלי מנצח.
  • קבוצת אפס בודדת לעולם לא נדחסת, כי :: לא היה חוסך דבר והיה יוצר איות שני.

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

פיצול בלוק

חיתוך רשת אחת לכמה שוות היא הפעולה שלשמה אנשים בדרך כלל מגיעים למחשבון סאבנטים. כל ביט נוסף של קידומת מכפיל את מספר תת־הרשתות ומחצה את גודלן: /24 הופך לשני /25, לארבעה /26, לשמונה /27, וכן הלאה.

192.168.1.0/24  ->  /26
192.168.1.0/26      # כתובות   0-63
192.168.1.64/26     # כתובות  64-127
192.168.1.128/26    # כתובות 128-191
192.168.1.192/26    # כתובות 192-255

תת־הרשתות מרצפות את ההורה במדויק — בלי חורים ובלי חפיפה — וזו תכונה ששווה לבדוק כשמחלקים מרחב כתובות ביד. שימו לב שהמספרים גדלים מהר: /8 מפוצל ל־/24 הוא 65,536 רשתות, ולכן הרשימה כאן מוגבלת והסך האמיתי מדווח לצידה במקום שהתשובה תיקטע בשקט.

טווחים שיש להם משמעות מיוחדת

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

  • פרטית (RFC 1918) — 10.0.0.0/8, 172.16.0.0/12 ו־192.168.0.0/16. ניתנות לניתוב בתוך ארגון, לעולם לא באינטרנט הציבורי.
  • לולאה מקומית — 127.0.0.0/8 ב־IPv4 ו־::1 ב־IPv6. תעבורה שלעולם אינה עוזבת את המארח.
  • מקומית לקישור — 169.254.0.0/16 ו־fe80::/10. מוקצות עצמית, תקפות רק בקישור אחד. כתובת IPv4 בטווח הזה פירושה בדרך כלל ש־DHCP נכשל.
  • ‏NAT ברמת ספק — 100.64.0.0/10. משמשת בין מנוי לספק; לראות אותה ברשת שלכם היא סימן ל־NAT בצד הספק.
  • תיעוד — 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 ו־2001:db8::/32. שמורות לדוגמאות, ולכן הן מופיעות לאורך כל העמוד הזה.
  • מקומית ייחודית — fc00::/7. המקבילה של IPv6 למרחב הפרטי של RFC 1918.

התווית מוצמדת רק כשכל הבלוק יושב בתוך הטווח המיוחד, ולא כשהוא רק חופף לו. 0.0.0.0/0 מכסה כל טווח פרטי שקיים אבל אינו פרטי בעצמו, ולומר אחרת היה גרוע יותר מלא לומר דבר.

שאלות נפוצות

כמה מארחים שימושיים יש ב־/24?
‏254. בבלוק יש 256 כתובות; הראשונה היא כתובת הרשת והאחרונה היא כתובת ה־broadcast, ואף אחת מהן אינה ניתנת להקצאה לממשק. אותו חיסור נותן 126 עבור /25, 62 עבור /26 ו־2 עבור /30.
למה כאן כתוב של־/31 יש שתי כתובות שימושיות כשמחשבונים אחרים אומרים אפס?
כי RFC 3021 מגדיר את /31 לקישורי נקודה־לנקודה, שבהם כתובת broadcast אינה משרתת דבר ושתי הכתובות מוקצות — אחת לכל קצה של הקישור. מחשבונים שמדווחים אפס מיישמים את הנוסחה 2^n − 2 מעבר לטווח שבו היא תקפה.
מה ההבדל בין מסכת רשת למסכת wildcard?
הן הפוכות זו לזו. למסכת רשת יש אחדות בביטי הרשת (255.255.255.0 עבור /24); למסכת wildcard יש שם אפסים במקום (0.0.0.255). במסכת wildcard אפס פירושו שהביט חייב להתאים ואחד פירושו שמתעלמים ממנו, וזה ההפך מהאינטואיציה שמסכת רשת בונה.
אפשר להדביק כתובת שאינה כתובת הרשת?
כן, וזה המקרה הנפוץ. תנו לו 192.168.1.57/24 והוא יראה לכם שהרשת היא 192.168.1.0/24 ויציין שהכתובת שהקלדתם היא מארח בתוכה. זה בדיוק מה שמקבלים מ־ip addr או מ־ipconfig, כך שאין צורך לערוך קודם.
למה ב־IPv6 לא מוצגת כתובת broadcast או מסכת רשת?
כי אף אחת מהן לא קיימת. IPv6 ויתר על broadcast לטובת multicast, ולכן לא נשמר דבר בסוף הקידומת, והוא נכתב תמיד עם אורך קידומת ולא עם מסכה מנוקדת. כל כתובת בבלוק IPv6 ניתנת להקצאה, ולכן מספר הכתובות השימושיות שווה לסך הכל.
באיזה גודל קידומת כדאי להשתמש לתת־רשת IPv6?
‏/64, כמעט בכל מקרה. SLAAC מניח 64 ביטי מארח, ולכן קידומת קטנה יותר שוברת אותו בקישור רגיל. אתרים מקבלים בדרך כלל /48 או /56 ומפצלים אותו ל־/64, אחד לכל מקטע — יש 65,536 כאלה ב־/48, כך שאין צורך לחסוך.
האם משהו שאני מזין נשלח לשרת?
לא. הכל אריתמטיקה שרצה בדפדפן שלכם — שום דבר אינו נבדק מול שירות, מועלה או נרשם. זו גם הסיבה שזה ממשיך לעבוד בלי שום חיבור רשת.