TCP/IP

רקע על 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. חלוקת השכבות במודל תואמת את חלוקת העבודה בין TCP לIP, אך באותה מידה היא גם תואמת את חלוקת העבודה בין IPX לSPX ועל כן יש להפריד בין המודל וחבילת הפרוטוקולים.
ניתן לחשוב על ההבדל בין חבילת הפרוטוקולים TCP/IP למודל TCP/IP כך:
מתפקידו של המודל להציג בעיות שיש לפתור על מנת ליצור תקשורת. תפקיד זה זהה לתפקידו של מודל ה-OSI. במודל TCP/IP מקובצות הבעיות לשכבות על פי פתרונות פרקטיים לשכבות השונות (כך, למשל, קובצו השכבה הפיזית ושכבת הערוץ במודל OSI לשכבה הפיזית במודל TCP/IP - לפי התקן 802.3, הלוא הוא התקן לטכנולוגית Ethernet).
לעומת זאת, חבילת הפרוטוקולים TCP/IP היא חבילה המאגדת בתוכה פתרונות (פרוטוקולים) ספציפיים לבעיות השונות שמציג המודל.
כל רשת ניתן לנתח הן לפי מודל TCP/IP והן לפי מודל OSI, ולכל רשת ניתן לתת פתרונות הכוללים את חבילת הפרוטוקולים TCP/IP, בצורה מלאה או חלקית, או לא להשתמש בחבילה זו בכלל.