מחשבון CIDR ותת־רשתות
מחשב כתובת רשת, טווח מארחים, מסכות ומספר כתובות לכל בלוק IPv4 או IPv6, ומפצל אותו לתת־רשתות שוות.
| רשת | 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 |
מה הכלי הזה עושה
בלוק 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?
ב־/24 יש 256 כתובות ו־254 שימושיות. הקידומת מקבעת 24 מ־32 הביטים ומשאירה 8 חופשיים, כך שהבלוק הוא 2^8 = 256 כתובות, ו־IPv4 מוציא את הראשונה על הרשת עצמה ואת האחרונה על broadcast — הנוסחה 2^n − 2 שהסעיף שלמעלה מסביר, כאשר n הוא מספר ביטי המארח. החיסור הזה תקף לכל קידומת IPv4 עד /30 ולאף אחת משתי הקידומות שמתחתיה: ב־/31 יש 2 כתובות שימושיות ולא 0, וב־/32 יש 1 ולא −1, וזה מה שהכלי הזה מדווח.
- מסכת הרשת היא 255.255.255.0 ומסכת ה־wildcard היא 0.0.0.255. שלושה מספרים שלמים מתוך הארבעה מקובעים, וזה מה שהופך את /24 לקידומת היחידה שאפשר לקרוא ישר מארבע הספרות המנוקדות: המספר האחרון הוא המארח ושלושת שלפניו הם הרשת.
- הטווח השימושי רץ מ־.1 עד .254. כתובת הרשת היא .0 וכתובת ה־broadcast היא .255, והכלי הזה נותן שם לשתיהן במקום להשאיר חור בקצה כלשהו של הטווח.
- /24 הוא שני /25, ארבעה /26 או שמונה /27 — כל ביט נוסף מחצה אותו — והוא עצמו אחד מ־256 בלוקי /24 שנכנסים לתוך /16.
- תיעוד ותיק קורא לזה רשת class C, כי הסכמה שחולקה למחלקות ו־CIDR החליף אותה עשתה class C בדיוק 24 ביטי רשת. לכן הכלי הזה מבקש מספר אחרי לוכסן ולא אות: ל־/26 אין מחלקה.
254 היא אריתמטיקה ולא מפקד. ברשת עובדת הנתב או השער לוקח אחת מהן, ומאגר DHCP מוגדר בדרך כלל על חלק מהטווח ולא על כולו, ולכן מספר המכונות שאפשר באמת לחבר הוא 253 או פחות. התייחסו ל־254 כתקרה שממנה מתחילה תוכנית הכתובות.
כמה מארחים יש ב־/16?
ב־/16 יש 65,536 כתובות ו־65,534 שימושיות. שישה עשר ביטים מקובעים ושישה עשר חופשיים, כלומר 2^16 = 65,536, ואותן שתי כתובות יורדות מהקצוות — החיסור שתקף עד /30 ונעצר שם, מהסיבות של /31 ו־/32 שלמעלה.
- מסכת הרשת היא 255.255.0.0 ומסכת ה־wildcard היא 0.0.255.255, כך ששני המספרים הראשונים בארבע הספרות המנוקדות הם הרשת ושני האחרונים מזהים את המארח.
- /16 הוא 256 בלוקי /24. זו החלוקה שאנשים באמת מבצעים עליו, וזה מה שעושה פקד הפיצול כאן: תנו לו /16, בקשו /24, והוא ימנה אותם עם הסך הכולל לצידם.
- 192.168.0.0/16 הוא /16, והוא הטווח הפרטי שנתב ביתי מחלק ממנו כתובות — ולכן 192.168.1.0/24 הוא הבלוק שכמעט כולם ראו. הכלי הזה מסמן כל מה שיושב בתוכו כפרטי (RFC 1918).
- תיעוד ותיק קורא ל־/16 רשת class B. מחלקת B הוקצתה לארגון בשלמותה, וההרגל לדמיין אותה כרשת אחת נשאר משם.
אף אחד לא שם 65,534 מכונות על קישור אחד. /16 הוא הקצאה ולא תחום broadcast: כל מארח בקישור רואה את תעבורת ה־broadcast וה־ARP של אותו קישור, ובגודל הזה זה מפסיק להיות בר־הפעלה זמן רב לפני שהטווח מתמלא. לכן השאלה המועילה על /16 היא לא כמה מארחים הוא מכיל אלא איך הוא נחתך — 256 בלוקי /24, או 1,024 בלוקי /26, או מה שהמקטעים באמת צריכים.
כמה מארחים יש ב־/8?
ב־/8 יש 16,777,216 כתובות ו־16,777,214 שימושיות: 24 ביטי מארח, כלומר 2^24, פחות כתובת הרשת וכתובת ה־broadcast. זה הבלוק הגדול ביותר שמישהו כותב ביד, ולמעשה זה כמעט תמיד אותו בלוק — 10.0.0.0/8, הגדול מבין שלושת הטווחים הפרטיים.
- מסכת הרשת היא 255.0.0.0 ומסכת ה־wildcard היא 0.255.255.255. רק המספר הראשון מארבע הספרות המנוקדות מקובע, וזה משאיר את שלושת האחרים לתכנון.
- /8 הוא 256 בלוקי /16, או 65,536 בלוקי /24. המספר האחרון הזה הוא הסיבה שרשימת הפיצול בעמוד הזה מוגבלת והסך האמיתי מודפס לצידה במקום שהתשובה תיקטע בשקט.
- 10.0.0.0/8 מסומן כאן כפרטי (RFC 1918), ו־127.0.0.0/8 הוא טווח הלולאה המקומית. שניהם ברוחב שמונה ביטים כי הסכמה שחולקה למחלקות עשתה את מחלקת A בדיוק כך, והתוויות שרדו את המחלקות.
- /8 של מרחב כתובות ציבורי הוא דבר אחר לגמרי. יש רק 256 כאלה בכל IPv4, והם חולקו לארגונים ולרשמים אזוריים לפני עשורים.
16,777,214 אינו מספר מארחים בשום מובן מועיל — שישה עשר מיליון כתובות על קישור אחד אינן רשת שמישהו מפעיל. /8 הוא תוכנית כתובות, ומה שמודדים בו תוכנית הוא כמה תת־רשתות היא נותנת וכמה כל אחת עולה: כל תת־רשת מוציאה את כתובת הרשת וכתובת ה־broadcast שלה עצמה, ולכן חיתוך /8 לבלוקי /24 נותן 65,536 רשתות ומוציא על כך 131,072 כתובות. זה המחיר של פיצול לתת־רשתות, וזו הסיבה שתוכנית בוחרת את התת־רשת הגדולה ביותר שכל מקטע יכול לשאת ולא את הקטנה ביותר שמספיקה.
כמה כתובות מכיל /64 של IPv6?
ב־/64 יש 18,446,744,073,709,551,616 כתובות — 2^64, אותה אריתמטיקה עם 64 ביטים חופשיים במקום 8 — וכולן שימושיות. אין כאן חיסור: ל־IPv6 אין כתובת broadcast והוא אינו שומר דבר בתחילת הקידומת, ולכן מספר הכתובות השימושיות שווה לסך הכל. זו גם הסיבה שהכלי הזה אינו מציג לבלוק IPv6 כתובת broadcast ולא מסכה מנוקדת, במקום להציג אותן כאפס.
- המספר מודפס כחזקה של שתיים לצד הספרות. 2^64 היא הצורה שאפשר לקרוא; הספרות הן הצורה שמעתיקים.
- /64 הוא הגודל הסטנדרטי לקישור אחד, בין אם הקישור נושא שתי מכונות או אלפיים. הגדרה עצמית של כתובות ללא שרת בונה את 64 הביטים האחרונים של הכתובת על המארח עצמו, ולכן הקידומת מקובעת על 64 בגלל המנגנון ולא בגלל מספר המארחים.
- /64 יוצא מהקצאה גדולה יותר: /48 הוא 65,536 בלוקי /64 ו־/56 הוא 256 מהם, ואחד מהשניים הוא מה שאתר מקבל בדרך כלל כדי לחלק.
- ממשק אחד מחזיק בדרך כלל יותר מכתובת אחת מתוך ה־/64 שלו בבת אחת: הכתובת שההגדרה העצמית בונה מהקידומת, ולצידה בדרך כלל כתובת פרטיות זמנית שמוחלפת עם הזמן. ספירת מכונות לפי ספירת כתובות משתבשת גם בכיוון הזה.
לקרוא את המספר הזה כקיבולת היא הטעות שהרגלי IPv4 מזמינים. /64 אינו בגודל שנועד להתמלא, שום דבר אינו ממלא אותו, ואף מדיניות הקצאה אינה מצפה לכך; הגודל שלו כזה כדי שמארח יוכל לייצר את כתובתו על הקישור בלי לשאול אף אחד. השאלה שעליה /64 עונה היא כמה קישורים יש לאתר, לא כמה מכונות.
שאלות נפוצות
- כמה מארחים שימושיים יש ב־/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, כך שאין צורך לחסוך.
- האם משהו שאני מזין נשלח לשרת?
- לא. הכל אריתמטיקה שרצה בדפדפן שלכם — שום דבר אינו נבדק מול שירות, מועלה או נרשם. זו גם הסיבה שזה ממשיך לעבוד בלי שום חיבור רשת.
- מהי מסכת הרשת של /16?
- 255.255.0.0. אורך הקידומת והמסכה הם אותו מידע כתוב בשתי דרכים, ושלוש הקידומות העגולות מקבעות כל אחת מספר שלם נוסף: /8 הוא 255.0.0.0, /16 הוא 255.255.0.0 ו־/24 הוא 255.255.255.0. קידומת שאינה כפולה של שמונה נופלת בתוך מספר — /26 הוא 255.255.255.192 — וזה המקרה ששווה להשאיר לכלי הזה לחשב.
- מהי רשת class C?
- /24, בסכמה ש־CIDR החליף. כתובות מחולקות למחלקות קיבעו את חלק הרשת על 8, 16 או 24 ביטים — class A, class B ו־class C — ולכן class C הכיל 256 כתובות ו־254 שימושיות, בדיוק כמו /24 היום. RFC 1519 החליף את המחלקות באורכי קידומת שרירותיים ב־1993, ולכן הכלי הזה מבקש מספר אחרי לוכסן: ל־/26 או ל־/19 אין מחלקה לקרוא בשמה.
- כמה בלוקי /24 יש ב־/16?
- 256. כל ביט נוסף של קידומת מכפיל את המספר, ולכן /16 הוא 256 בלוקי /24 ו־/8 הוא 256 בלוקי /16 או 65,536 בלוקי /24. הדביקו את הבלוק וקבעו בפקד הפיצול את הקידומת הקטנה יותר: הכלי ימנה את תת־הרשתות וידווח את הסך האמיתי לצד הרשימה, וזה מה שחשוב ברגע שהסך עובר את מה שכל רשימה אמורה להדפיס.
- כמה כתובות יש ב־/64 של IPv6?
- 18,446,744,073,709,551,616, שהן 2^64, וכולן שימושיות. ל־IPv6 אין כתובת broadcast והוא אינו שומר דבר בתחילת הקידומת, ולכן שום דבר אינו מחוסר ומספר הכתובות השימושיות שווה לסך הכל — המקום היחיד שבו תשובה על IPv6 כאן קצרה מזו של IPv4 ולא ארוכה ממנה.
כלים קשורים
- מסביר ביטויי cron
קריאה של ביטוי cron, ומתי הוא באמת רץ.
- מה כתובת ה־IP שלי
כתובות ה־IPv4 וה־IPv6 הציבוריות שלכם, ומי מהן נבחרה.
- ממיר Unix timestamp
המרת זמן epoch לתאריך, ובחזרה.
- מחשבון chmod
המרת הרשאות קובץ בין אוקטלי, סימבולי ותיבות סימון.