כתובות IPv4 — אנטומיה של כתובת
במודול הקודם ראינו שכתובת ה-IP “חיה” בשכבה 3 (Network) של מודל OSI — השכבה שאחראית על ניתוב חבילות בין רשתות. אבל מהי בעצם כתובת ה-IP הזו? מאחורי המספרים המוכרים כמו 192.168.1.10 מסתתר מבנה בינארי מדויק, וברגע שמבינים אותו — כל עולם ה-Subnetting נפתח. בשיעור הזה נפרק את כתובת ה-IPv4 לגורמים.
מהי כתובת IPv4?
כתובת IPv4 היא מספר באורך 32 ביט המזהה באופן ייחודי ממשק רשת בתוך רשת IP. כדי שבני אדם יוכלו לקרוא אותה בנוחות, מחלקים את 32 הביטים לארבעה חלקים שווים של 8 ביט כל אחד — אוקטטים (Octets) — וכותבים כל אוקטט כמספר עשרוני, מופרד בנקודות. זהו ה**רישום הנקודה-עשרוני (Dotted-Decimal Notation)**:
192 . 168 . 1 . 10
כל אוקטט הוא 8 ביט, ולכן יכול לייצג ערכים בטווח 0–255 (כלומר 2⁸ = 256 ערכים אפשריים). נראה איך אוקטט בודד נראה בבינארי. כל ביט מייצג חזקה של 2, מהשמאלי (128) לימני (1):
| ביט | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|
| 192 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 168 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
נסכם את הביטים הדולקים בשורה הראשונה: 128 + 64 = 192. ובשורה השנייה, עבור 168: 128 + 32 + 8 = 168 → 10101000. ההמרה הזו היא הבסיס לכל מה שנעשה בשיעורים הבאים — ברגע שמרגישים בנוח להמיר אוקטט בין בינארי לעשרוני, ה-Subnetting הופך לפשוט.
תרגול אינטראקטיבי: ממיר בינארי
לחצו על הביטים כדי לכבות ולהדליק אותם, או הקלידו ערך עשרוני, וצפו כיצד הבינארי והעשרוני מתעדכנים זה מול זה בזמן אמת. התחילו מהערך 192 (11000000) ונסו להגיע ל-168, ל-255 ול-0.
כתובת IP כמו כתובת בית. חשבו על כתובת IP כמו על כתובת דואר: יש בה חלק שמזהה את הרחוב/השכונה (חלק הרשת) וחלק שמזהה את הבית הספציפי (חלק המארח). הדוור צריך קודם להגיע לשכונה הנכונה, ורק אז למצוא את הבית. נראה את החלוקה הזו לעומק בשיעור הבא על Subnet Mask.
כמה כתובות יש בכלל?
מכיוון שלכתובת יש 32 ביט, מספר הכתובות האפשרי הוא 2³² ≈ 4.3 מיליארד (4,294,967,296 ליתר דיוק). בשנות ה-80 זה נראה אינסופי — אבל עם התפוצצות האינטרנט, המכשירים הניידים ו-IoT, מאגר הכתובות הזה אזל. שתי התשובות העיקריות למחסור הזה הן NAT (Network Address Translation — שיתוף כתובת ציבורית אחת על-ידי רשת שלמה) ו-IPv6 (כתובות בנות 128 ביט). על שניהם נרחיב במודולים מתקדמים יותר; כרגע מספיק להבין למה הם קיימים.
מחלקות כתובות (Address Classes)
בעבר חולק מרחב הכתובות למחלקות לפי הערך של האוקטט הראשון. החלוקה הזו, הקרויה Classful Addressing, היא היום היסטורית בלבד — היא הוחלפה ב-CIDR (נראה בשיעור הבא) — אבל הטווחים שלה עדיין נפוצים בשיח ובמבחנים, ולכן חשוב להכיר אותם:
| מחלקה | טווח אוקטט ראשון | שימוש |
|---|---|---|
| A | 1–126 | רשתות גדולות מאוד |
| B | 128–191 | רשתות בינוניות |
| C | 192–223 | רשתות קטנות |
| D | 224–239 | Multicast |
| E | 240–255 | מחקר/שמור (Experimental) |
שימו לב: הערך 127 (כלומר 127.x.x.x) “קופץ” בין מחלקה A ל-B — הוא שמור ל-Loopback ואינו בשימוש כמחלקה.
כתובות פרטיות (RFC1918) וכתובות מיוחדות
לא כל כתובת מנותבת באינטרנט הציבורי. תקן RFC1918 מגדיר שלושה טווחים של כתובות פרטיות — כתובות שכל ארגון רשאי להשתמש בהן בתוך הרשת הפנימית שלו, והן אינן מנותבות באינטרנט הציבורי:
| טווח פרטי | CIDR | מחלקה מקורית |
|---|---|---|
10.0.0.0 – 10.255.255.255 | 10.0.0.0/8 | A |
172.16.0.0 – 172.31.255.255 | 172.16.0.0/12 | B |
192.168.0.0 – 192.168.255.255 | 192.168.0.0/16 | C |
כתובות מיוחדות נוספות שכדאי להכיר:
- Loopback —
127.0.0.1(וכל127.x.x.x): מצביעה על המכשיר עצמו.ping 127.0.0.1בודק שמחסנית ה-TCP/IP המקומית עובדת. - APIPA —
169.254.x.x: כתובת שמחשב מקצה לעצמו אוטומטית כשלא מצא שרת DHCP. אם ראיתם כתובת כזו — סימן לתקלת DHCP.
Unicast, Broadcast ו-Multicast
לפי למי מיועדת החבילה, מבחינים בשלושה סוגי תקשורת:
- Unicast — תקשורת אחד-לאחד. חבילה מכתובת מקור אחת אל כתובת יעד יחידה. זהו רוב מוחלט של התעבורה ברשת (גלישה, הורדת קבצים, אימייל).
- Broadcast — תקשורת אחד-לכולם בתוך אותה רשת. נשלחת לכתובת ה-Broadcast של הרשת (האחרונה בטווח, למשל
192.168.1.255) ומגיעה לכל המארחים בה. נפוצה בפרוטוקולים כמו ARP ו-DHCP Discover. - Multicast — תקשורת אחד-לקבוצה. נשלחת לכתובת ממחלקה D (
224.0.0.0–239.255.255.255) ומגיעה רק למארחים שנרשמו לקבוצה. נפוצה בשידורי וידאו ובפרוטוקולי ניתוב כמו OSPF.
למה זה חשוב לאבטחת סייבר?
הבנת מבנה הכתובת אינה תרגיל תיאורטי — היא נוגעת ישירות למשטח התקיפה:
- כתובת מקור ניתנת לזיוף (IP Spoofing). שדה כתובת המקור בחבילת IP נכתב על-ידי השולח, ואין מנגנון מובנה שמאמת אותו. תוקף יכול לזייף כתובת מקור כדי להתחזות, לעקוף סינון מבוסס-IP, או להסתיר את מקור המתקפה (כמו ב-DDoS מסוג Reflection).
- פרטי מול ציבורי מעצב את משטח התקיפה. כתובות RFC1918 אינן מנותבות באינטרנט, ולכן מארח פנימי אינו “נראה” ישירות מבחוץ — ה-NAT וה-Firewall בקצה הם שמגדירים מה חשוף. הבנה מי פרטי ומי ציבורי היא הבסיס להבנת היכן עוברים גבולות האמון.
- תשתית ל-Recon. בשלב הסיור (Reconnaissance), תוקף ממפה אילו טווחי כתובות שייכים ליעד, מה ציבורי ומה פרטי, ומהי כתובת ה-Broadcast — מידע שמכוון את הסריקה. זיהוי כתובת APIPA אצל מארח, למשל, מסגיר תקלת תצורה שאפשר לנצל.
המקור משקר כברירת מחדל. עיקרון יסוד באבטחת רשתות: לעולם אל תסמכו על כתובת המקור בחבילה כשלעצמה. מנגנוני הגנה כמו uRPF, ACLs נגד Spoofing וסינון בקצה קיימים בדיוק מפני שהשדה הזה אינו אמין.
תרגול מעשי (Packet Tracer)
נבנה את הרשת הקטנה ביותר האפשרית כדי לראות שני מארחים מדברים זה עם זה באותה תת-רשת — ללא נתב כלל. נשתמש בטווח פרטי (RFC1918) של 192.168.1.0/24.
- מקטגוריית End Devices גררו שני מחשבים,
PC0ו-PC1, ומקטגוריית Network Devices → Switches גררו Switch אחד (דגם 2960). חברו כל מחשב ל-Switch בכבל Copper Straight-Through (פורטFastEthernet0במחשב → פורט פנוי ב-Switch). - בכל מחשב עברו ל-Desktop → IP Configuration, בחרו Static, והזינו כתובת בטווח הפרטי עם מסכה
255.255.255.0(/24):PC0: IP192.168.1.10, Subnet Mask255.255.255.0.PC1: IP192.168.1.20, Subnet Mask255.255.255.0.
- שתי הכתובות נופלות באותה תת-רשת (
192.168.1.0/24), ולכן אין צורך ב-Default Gateway. מ-PC0פתחו Desktop → Command Prompt ושלחוping 192.168.1.20.
ping 192.168.1.20 מ-PC0 — שני המארחים מתקשרים ישירות דרך ה-Switch.הפלט הצפוי:
Pinging 192.168.1.20 with 32 bytes of data:
Reply from 192.168.1.20: bytes=32 time<1ms TTL=128
Reply from 192.168.1.20: bytes=32 time<1ms TTL=128
Reply from 192.168.1.20: bytes=32 time<1ms TTL=128
Reply from 192.168.1.20: bytes=32 time<1ms TTL=128
Ping statistics for 192.168.1.20:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
שימו לב ל-TTL=128 — החבילה לא עברה דרך נתב (אילו עברה, ה-TTL היה יורד). זו הוכחה שהתקשורת נשארה בתוך אותה תת-רשת.
מה הלאה
עכשיו שאנחנו יודעים מהי כתובת IPv4 וכיצד היא בנויה מ-32 ביט, נשאלת השאלה המרכזית: איך מחשב יודע איזה חלק מהכתובת מזהה את הרשת ואיזה חלק מזהה את המארח? התשובה היא ה-Subnet Mask, ולצידו ה-Default Gateway. אבל לפני שנגדיר אותם על נתב אמיתי, נעצור לשיעור קצר ומעשי: מבוא ל-CLI של Cisco IOS — הכלי שבו מדברים עם נתבים ומתגים, ושבו נשתמש בכל מעבדה מכאן והלאה.
מה דעתכם על השיעור?
דיון
יש לכם שאלה, תיקון או הערה? הצטרפו לדיון. כדי לכתוב נדרשת התחברות עם חשבון GitHub.