TCP/IP

**TCP/IP ** היא חבילת פרוטוקולי תקשורת שעליה מושתתת רשת האינטרנט, ושם למודל שכבתי המתאר תקשורת ברשתות מחשבים. חבילת פרוטוקולים זו ידועה בעיקר כמודל 4 השכבות, אך נהוג להתייחס אליה בין היתר כאל מודל 4\5 השכבות. הבחנה זו נובעת מההסתכלות על שכבת הקשר כשתי שכבות שונות, אחת המקשרת באופן פיזי בין חוליה ברשת לחוליה אליה צריך למסור את המידע (link layer), ואחת שפיזית מבצעת את תמסורת הנתונים (physical layer).
שמאל|ממוזער|250px

## רקע על TCP/IP
TCP/IP הוא תקן המהווה משפחה של הפרוטוקולים הבסיסיים של רשת האינטרנט. עם זאת, משפחת פרוטוקולים זו יכולה לשמש גם לתקשורת של רשת פרטית (intranet או extranet) ומהווה הבסיס לרשתות פרטיות רבות.
TCP/IP מאפשר יצירת קשר בין רשתות רבות ושונות, ללא תלות במבנה הרשת ובטכנולוגיה שעומדת בבסיסה. הפרוטוקולים המרכיבים את TCP/IP מאפשרים לעשות זאת, ובכך ליצור רשת של רשתות. IP הוא פרוטוקול האינטרנט (אינטרנט – קיצור של interconnected-network, רשת של רשתות). האינטרנט הוא המקרה הבולט ביותר של קישור בין רשתות. קיימים גם פרוטוקולים אחרים של "רשתות של רשתות", אבל TCP/IP הוא הנפוץ והשימושי ביותר. הסיבה העיקרית לכך היא תפוצתו של פרוטוקול ה-IP, שבין השאר עומד בבסיסה של רשת האינטרנט.
פרוטוקול IP מאפשר קישור בין רשתות מסביב לעולם, ולמעשה מאפשר תקשורת כלל עולמית. כך יכול אדם היושב בביתו להיכנס לאתר אינטרנט, ודפדפן האינטרנט יידרש לדעת רק את כתובת היעד ולא את נתיב ההגעה.

TCP/IP היא תוכנית בעלת 2 שכבות. השכבה העליונה, פרוטוקול בקרת שליחה (TCP), מנהלת את חלוקת הקובץ שהוא ההודעה ל-packets קטנים שנשלחים ברשת האינטרנט ואוספת מחדש את ה-packets עד לקבלת ההודעה המקורית. השכבה התחתונה, פרוטוקול אינטרנט (IP), מטפלת בכתובת אליה נשלח כל packet כדי שיגיע ליעד הנכון. כל מחשב gateway ברשת בודק כתובת זו כדי לדעת לאן לשלוח את ההודעה. אפילו שחלק מה-packets של אותה הודעה מנותבים באופן שונה, הם יקובצו מחדש ביעד.

TCP/IP עושה שימוש במודל client/server של תקשורת כך שמחשב המשתמש (client) מבקש ומקבל שירות (כמו שליחת דפי Web) ממחשב אחר (server) ברשת. תקשורת TCP/IP ביסודה היא תקשורת מנקודה לנקודה, כלומר, קשר מנקודה אחת (מחשב host) ברשת לנקודה אחרת או מחשב host אחר. TCP/IP והיישומים שעושים בו שימוש נחשבים ל-stateless כי כל בקשה של client היא בקשה חדשה שאינה תלויה בקודמות לה (שלא כמו בשיחת טלפון רגילה שדורשת חיבור ייעודי למשך כל השיחה). מעצם היותה stateless היא מאפשרת לשחרר נתיבי תקשורת כך שכולם יכולים להשתמש בהם באופן רציף (יש לשים לב ששכבת ה-TCP עצמה אינה stateless כל עוד מתייחסים להודעה בודדת. הקישור שלה נשאר פתוח עד שכל ה-packets של ההודעה התקבלו).

## חבילת TCP/IP
חבילת פרוטוקולי התקשורת של TCP/IP מהווה את הבסיס עליו מושתתת רשת האינטרנט. רשתות קטנות יכולות להתבסס כל אחת על תשתיות פיזיות שונות (קווי טלפון, רשתות Ethernet וכיוצא בזה). מאחר שרשתות גדולות, דוגמת האינטרנט, מחברות מספר גדול של רשתות מקומיות – דרוש תקן אחיד בו מחשבים מרשתות פיזיות שונות יוכלו לתקשר. ארכיטקטורת TCP/IP מאפשרת לשני מחשבים לתקשר גם אם הם נמצאים ברשתות עם אפיקי תקשורת נתונים עם מאפיינים פיזיים שונים, מריצים מערכות הפעלה שונות וכך הלאה. שני הפרוטוקולים העיקריים בחבילה הם Transmission Control Protocol, ו-Internet Protocol. בנוסף לפרוטוקולים אלה, החבילה כוללת פרוטוקולי עזר רבים נוספים.

### פרוטוקולי TCP/IP
אוסף הכללים הקובעים אילו הודעות יש לשלוח ומתי, ואיך לעבד את ההודעות המתקבלות נקרא פרוטוקול. הודעות הנשלחות על ידי הפרוטוקולים בשכבות שונות נקראות יחידות מידע פרוטוקוליות (Protocol Data Units, או בקיצור PDUs).

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

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

אף על פי שלכאורה כל אחד מהפרוטוקולים מממש שכבה אחרת במודל ה־TCP/IP המתואר בהמשך, פרוטוקול TCP ניתן לשימוש אך ורק כשכבה מעל פרוטוקול IP, ולא ניתן להשתמש בו מעל פרוטוקול אחר הממלא את אותו תפקיד במודל. צימוד זה נובע מכך שה-Checksum ב־TCP מחושב גם על חלק מהפתיח (header) של פרוטוקול ה-IP. הכיוון ההפוך הוא אפשרי, וניתן להשתמש במגוון של פרוטוקולים אחרים מעל לפרוטוקול ה-IP.

### פיתוח חבילת TCP/IP
בתחילת שנות ה-60 של המאה ה-20 משרד ההגנה האמריקאי בשיתוף עם מוסדות אקדמיים החל בפיתוח חבילת תקני תקשורת שיאפשרו תקשורת בין ציוד קצה מיצרניות שונות. ב-1969 ארגון ARPA הקים רשת מיתוג מנות עם ארבע נקודות קצה במיקומים פיזיים שונים. רשת ניסיונית זו התבססה על פרוטוקול תקשורת NCP ותמכה במהירות העברת נתונים של 56 Kbps. בשנת 1974 וינטון סרף ורוברט א. קאהן הציעו גרסה חדשה של חבילת תקנים עיקריים עבור רשת ARPANET אך זו אושרה רק בגרסה הרביעית שלה בשנת 1979.
תרומה משמעותית לפיתוח הפרוטוקול ניתנה בשנות ה-70 המוקדמות על ידי חובבי רדיו בארצות הברית וגם על ידי קבוצת פיתוח בארץ אשר השתמשו בפרוטוקול הזה לתקשורת באמצעות מכשירי הקשר שלהם (packet radio) הקבוצה נקראה אז "קבוצת הפאקט".

## מודל TCP/IP
**מודל TCP/IP** הוא מודל שכבתי המתאר תקשורת ברשתות מחשבים. מודל TCP/IP מורכב מארבע שכבות: שכבה 1 היא הנמוכה ביותר, ושכבה מספר 4 היא הגבוהה ביותר, והיא מספקת שירותים למשתמש הקצה. כל אחת מהשכבות מקיימת את העקרונות הבאים:
* כל שכבה מספקת שירותים לשכבה שמעליה;
* כל שכבה משתמשת בשירותים שמספקת השכבה שמתחתיה;
* כל שכבה מקיימת דיאלוג עם השכבה המקבילה לה במערכת שאיתה היא מתקשרת.

### השכבות במודל
: 4. שכבת היישום (Application) – פרוטוקול התקשורת שמופעל על ידי תוכנת הקצה, עיבוד נתונים, ניהול תהליכים. ברבע הראשון של המאה ה-21 פרוטוקול היישום הנפוץ ביותר במשפחה הוא HTTP ואחותו, HTTPS.
: 3. שכבת התעבורה (Transport) – שמירה על סדר הנתונים ובקרת זרימה. פרוטוקול TCP שייך לשכבה זו, ולצדו מספר פרוטוקולים נוספים. TCP נקרא "אמין" - הוא "מבטיח" שהנתונים שנשלחו מצד אחד יגיעו אל הצד השני, וליתר דיוק, הצד השולח מקבל אינדיקציה שהצד המקבל קיבל את הנתונים. יש פרוטוקולים אחרים במשפחה, כמו UDP שלא מבטיחים זאת.
: 2. שכבת הרשת (network) – העברת נתונים על פי כתובות לוגיות (IP).
: 1. שכבת הקשר (link) – ביצוע ההעברה בפועל. מקבילה לשכבה הפיזית ושכבת הקו של מודל ה-OSI. יש שמפצלים ביניהם גם במודל TCP/IP ומתארים מודל בן 5 שכבות.

### המודל וחבילת הפרוטוקולים
**מודל TCP/IP** מתבסס במידה רבה על חבילת הפרוטוקולים TCP/IP, ולכן גם קיבל את שמה, אך ניתן לבחון באמצעותו גם רשתות בהן לא נעשה שימוש ב-TCP או ב-IP. חלוקת השכבות במודל תואמת את חלוקת העבודה בין TCP ל-IP, אך באותה מידה היא גם תואמת את חלוקת העבודה בין IPX ל-SPX ועל כן יש להפריד בין המודל וחבילת הפרוטוקולים.

ניתן לחשוב על ההבדל בין חבילת הפרוטוקולים TCP/IP למודל TCP/IP כך: מתפקידו של המודל להציג בעיות שיש לפתור על מנת ליצור תקשורת. תפקיד זה זהה לתפקידו של מודל ה-OSI. במודל TCP/IP מקובצות הבעיות לשכבות על פי פתרונות פרקטיים לשכבות השונות (כך, למשל, קובצו השכבה הפיזית ושכבת הערוץ במודל OSI לשכבה הפיזית במודל TCP/IP – לפי התקן 802.3, הלוא הוא התקן לטכנולוגית Ethernet). לעומת זאת, חבילת הפרוטוקולים TCP/IP היא חבילה המאגדת בתוכה פתרונות (פרוטוקולים) ספציפיים לבעיות השונות שמציג המודל. כל רשת ניתן לנתח הן לפי מודל TCP/IP והן לפי מודל OSI, ולכל רשת ניתן לתת פתרונות הכוללים את חבילת הפרוטוקולים TCP/IP, בצורה מלאה או חלקית, או לא להשתמש בחבילה זו בכלל.

### מודל TCP/IP מול מודל OSI
למעשה חבילת פרוטוקולי תקשורת TCP/IP היא יישום מעשי של מודל ה-OSI המופשט. כך שניתן למפות שכבות חבילת TCP/IP לשכבות מודל OSI. בבחינה של יישומים מעשיים הגיעו מתכנני המודל למסקנה שההפרדה בין Application, Presentation ו-Session אינה עקבית ובמקרים רבים לא קיימת או מלאכותית, והחליטו להוציא את ההבחנה הזו מהמודל ולאגד את שלוש השכבות תחת שם אחד, ולהשאיר את החלוקה הפנימית באחריותו של כל פרוטוקול ספציפי. 

במודל TCP/IP ישנן השכבות הבאות:

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

## ראו גם
* מונחים ברשת מחשבים
* מונחים בתוכנה
* TCP
* IP
* האלגוריתם של נייגל

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

* 
* מדריך אינטראקטיבי ל-TCP/IP, שרת איתן
* 25 שנה ל-TCP/IP, אתר nana10

קטגוריה:פרוטוקולי אינטרנט
קטגוריה:מודל ה-TCP/IP
קטגוריה:היסטוריה של האינטרנט