IPv4

חלוקת כתובת IP בגרסה 4.
גרסה 4 של פרוטוקול האינטרנט, או בקיצור IPv4, היא הגרסה הנפוצה של פרוטוקול IP, ומהווה את הפרוטוקול הבסיסי של רשת האינטרנט.

גרסה זו הוגדרה ב-RFC791 כחלק מחבילת הפרוטוקולים TCP/IP.
ברשתות שעושות שימוש ב־IP יש להקצות לכל מחשב כתובת IP ייחודית.

הגרסה העוקבת לגרסה 4 של הפרוטוקול (IPv4) נקראת IPv6.

ניצול ממוצע יחסי של IPv4

== היסטוריה ==
ההתפתחות של IPv4 הייתה תהליך ארוך שכלל מחקר ופיתוח רבים במסגרת פרויקטים שונים שהובילו להקמת האינטרנט המודרני.

=== שנות ה-60 וה-70: התחלה ופיתוח מוקדם ===

* 1969: ARPANET, הרשת הראשונה שקדמה לאינטרנט, הוקמה על ידי סוכנות ARPA של משרד ההגנה האמריקאי. הרשת נועדה לאפשר שיתוף משאבי מחשוב בין חוקרים באוניברסיטאות שונות ברחבי ארצות הברית.
* 1973: וינט סרף ובוב קאהן הציעו את פרוטוקול TCP/IP כפתרון למגבלות של פרוטוקול NCP (Network Control Protocol) ששימש ב-ARPANET. TCP/IP נועד לשפר את היכולת לנתב ולנהל חבילות נתונים בצורה אמינה יותר על פני רשתות שונות.
* 1974: פרסום המאמר "[https://ieeexplore.ieee.org/document/1092259/authors#authors A Protocol for Packet Network Intercommunication]" על ידי וינט סרף ובוב קאהן, שתיאר את העקרונות של TCP/IP ואת החזון לאינטרנט גלובלי שמחבר רשתות שונות.

=== שנות ה-80: אימוץ והטמעה ===

* 1980: הוגדר רשמית פרוטוקול IPv4 ב-[https://datatracker.ietf.org/doc/html/rfc760 RFC 760]. הפרוטוקול הגדיר כתובות IP באורך 32 ביטים, מה שסיפק כ-4.3 מיליארד כתובות ייחודיות.
* 1981: הוגדר מחדש IPv4 ב-<nowiki>RFC 791</nowiki>, שהתווה את הבסיס לרוב הפיתוחים והשימושים המאוחרים בפרוטוקול. RFC זה כלל שיפורים רבים לעומת ההגדרה המקורית ב-<nowiki>RFC 760</nowiki>.
* 1983: פרוטוקול TCP/IP, כולל IPv4, הוטמע והחליף את NCP ב-ARPANET, והפך לפרוטוקול הרשת העיקרי של האינטרנט.

=== שנות ה-90: גידול וצורך בפתרונות חדשים ===

* 1991: התפשטות האינטרנט למסגרות אקדמיות ומסחריות העלתה את הביקוש לכתובות IP. בשנים אלו החל שימוש נרחב יותר באינטרנט מחוץ למסגרת האקדמית והממשלתית.
* 1993: הופעת טכנולוגיית NAT (Network Address Translation) כמענה חלקי למחסור בכתובות IP. NAT אפשרה שימוש בכתובות פרטיות בתוך רשתות מקומיות, מה שהפחית את הצורך בכתובות ציבוריות רבות.
* 1994: החלה עבודה על פרוטוקול IPv6 כמענה למחסור בכתובות IP. IPv6 נועד להחליף את IPv4 באמצעות הגדלת טווח הכתובות האפשריות לשימוש.

=== שנות ה-2000 ואילך: מעבר ל-IPv6 ותחזוקת IPv4 ===

* 2000: השקת IPv6 באופן רשמי עם <nowiki>RFC 2460</nowiki>, והמלצה על אימוץ הדרגתי של הפרוטוקול החדש. IPv6 כולל כתובות באורך 128 ביטים, מה שמספק טווח רחב יותר של כתובות IP.
* 2011: חילק ה-IANA (Internet Assigned Numbers Authority) את טווחי הכתובות האחרונים של IPv4, מה שסימן את הצורך הדחוף במעבר ל-IPv6. בעקבות זאת, החל תהליך המעבר ההדרגתי ל-IPv6.
* 2017: רוב ספקי השירותים הגדולים (ISP) והתשתיות החלו לתמוך ולהטמיע IPv6, אך IPv4 עדיין נותר בשימוש נרחב. הטמעה של IPv6 נמשכת במקביל לשימוש בטכנולוגיות תאימות כמו NAT ו-IPv4-over-IPv6.

=== מציאות עכשווית ===

* 2024: עדיין נעשה שימוש רחב ב-IPv4 במקביל ל-IPv6. טכנולוגיות כמו NAT ופתרונות של IPv4-over-IPv6 ממשיכים לאפשר תאימות ושימוש בכתובות IPv4 במקביל למעבר ההדרגתי ל-IPv6. השימוש המשולב בשני הפרוטוקולים מאפשר התמודדות עם המחסור בכתובות ומקנה יציבות וגמישות לרשת האינטרנט.

== כתובות ==
כתובת IPv4 מורכבת מ-32 סיביות ומיוצגת באמצעות 4 מספרים עשרוניים המופרדים בנקודה. כל מספר מהווה מקבץ של 8 סיביות וגודלו נע בין 0 ל-255.

דוגמה ליצוג עשרוני מקובל: 208.80.152.2

והייצוג הבינארי של הכתובת הזאת יהיה:
11010000.01010000.10011000.00000010

== חבילת IPv4 ==
פרוטוקול IP מחלק לחבילות את המידע שעליו להעביר, כאשר כל חבילה מורכבת מפתיח (header), נתונים, ואינה מכילה סוגר (trailer), בניגוד לפרוטוקולים אחרים.

=== מבנה הפתיח ===
{| bgcolor="#3377CF" align="center"
| align="center" bgcolor="#6699EF" | 1
| align="center" bgcolor="#6699EF" | 2
| align="center" bgcolor="#6699EF" | 3
| align="center" bgcolor="#6699EF" | 4
| align="center" bgcolor="#6699EF" | 5
| align="center" bgcolor="#6699EF" | 6
| align="center" bgcolor="#6699EF" | 7
| align="center" bgcolor="#6699EF" | 8
| align="center" bgcolor="#6699EF" | 9
| align="center" bgcolor="#6699EF" | 10
| align="center" bgcolor="#6699EF" | 11
| align="center" bgcolor="#6699EF" | 12
| align="center" bgcolor="#6699EF" | 13
| align="center" bgcolor="#6699EF" | 14
| align="center" bgcolor="#6699EF" | 15
| align="center" bgcolor="#6699EF" | 16
| align="center" bgcolor="#6699EF" | 17
| align="center" bgcolor="#6699EF" | 18
| align="center" bgcolor="#6699EF" | 19
| align="center" bgcolor="#6699EF" | 20
| align="center" bgcolor="#6699EF" | 21
| align="center" bgcolor="#6699EF" | 22
| align="center" bgcolor="#6699EF" | 23
| align="center" bgcolor="#6699EF" | 24
| align="center" bgcolor="#6699EF" | 25
| align="center" bgcolor="#6699EF" | 26
| align="center" bgcolor="#6699EF" | 27
| align="center" bgcolor="#6699EF" | 28
| align="center" bgcolor="#6699EF" | 29
| align="center" bgcolor="#6699EF" | 30
| align="center" bgcolor="#6699EF" | 31
| align="center" bgcolor="#6699EF" | 32
|-
| colspan="4" align="center" bgcolor="#6699EF" | גרסת הפרוטוקול
| colspan="4" align="center" bgcolor="#6699EF" | אורך הפתיח
| colspan="8" align="center" bgcolor="#6699EF" | סוג השירות (ToS)
| colspan="16" align="center" bgcolor="#6699EF" | אורך החבילה
|-
| colspan="16" align="center" bgcolor="#6699EF" | מספר הזיהוי
| colspan="3" align="center" bgcolor="#6699EF" | סיביות חלוקה
| colspan="13" align="center" bgcolor="#6699EF" | סדר הרכבת המידע
|-
| colspan="8" align="center" bgcolor="#6699EF" | זמן החיים (TTL)
| colspan="8" align="center" bgcolor="#6699EF" | פרוטוקול שכבת התעבורה
| colspan="16" align="center" bgcolor="#6699EF" |Checksum של הפתיח
|-
| colspan="32" align="center" bgcolor="#6699EF" | כתובת ה-IP של השולח
|-
| colspan="32" align="center" bgcolor="#6699EF" | כתובת ה-IP של היעד
|-
|}

4 הסיביות הראשונות משמשות לסימון גרסת הפרוטוקול שבו נעשה שימוש. כאן יוצג המספר 4 (IPv4).

4 הסיביות הבאות מגדירות את אורך הפתיח, ביחידות של 32 סיביות (שהם 4 בתים). מכיוון שפתיח של חבילת IP יכולה להכיל נתונים שונים, בהתאם לאפשרויות השונות בהן נעשה שימוש, ולכן אורך הפתיח משתנה בין חבילה לחבילה. לדוגמה, פתיח בן 20 בתים יקבל את האורך 5 (20 בתים הם 160 סיביות). יש לשים לב שאורך הפתיח לא יכול לעלות על 60 בתים.

8 הסיביות הבאות נועדו במקור כדי לאפיין את סוג השירות (ToS – Type of Service), כלומר, האם על החבילה להעדיף מעבר מהיר על פני אמינות גבוהה. כיום השדה משמש ל-DiffServ או ל-ECN.

16 הסיביות הבאות מגדירות את גודלה הכולל של החבילה, ביחידות של בית אחד. הגודל המינימלי לחבילה מוגדר להיות 20 בתים (הגודל המינימלי של פתיח IP), והגודל המקסימלי הוא 65535 בתים.

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

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

13 הסיביות הבאות משמשות לזיהוי הסדר שבו צריך להרכיב את המידע, במקרה שהוא מחולק בין כמה חבילות. שדה זה מכיל את המיקום היחסי של המידע בחבילה הנוכחית, ביחס לחבילה המקורית שעברה חלוקה. המיקום נתון ביחידות של 8 בתים.

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

8 הסיביות הבאות מייצגות מספר, הקובע לאיזה פרוטוקול יש להעביר את המידע לאחר שהועבר. לדוגמה -
1 ICMP, 6 TCP, 17 UDP.

16 הסיביות הבאות מכילות מספר שנועד לוודא את המעבר התקין של הפתיח. מפעילים על הפתיח פונקציה ידועה, שעל-פי נתונים שונים שהוא מכיל מחזירה מספר בן 16 סיביות. התחנה המקבלת מפעילה את אותה הפונקציה על הפתיח ומשווה את התוצאה עם תכולת השדה על מנת לוודא שהפתיח הגיע תקין. IPv4 לא מוודא את אמינות הנתונים, אלא רק את אמינות הפתיח.

32 הסיביות הבאות מכילות את כתובת ה-IP של השולח.

32 הסיביות הבאות מכילות את כתובת ה-IP של הנמען.

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

== ראו גם ==
* מונחים ברשת מחשבים
* TCP/IP
* כתובת IP
* IP
* IPv6
* Localhost

==קישורים חיצוניים==

== הערות שוליים ==

קטגוריה:פרוטוקולי אינטרנט
קטגוריה:תקנים בתקשורת מחשבים