Transmission Control Protocol – הבדלי גרסאות

מתוך ויקיפדיה, האנציקלופדיה החופשית
תוכן שנמחק תוכן שנוסף
מ שוחזר מעריכות של 207.232.35.33 (שיחה) לעריכה האחרונה של Roey n7
Roey n7 (שיחה | תרומות)
שורה 83: שורה 83:
* היסט למידע דחוף (16 סיביות) - במידה ו[[דגל (מחשבים)|דגל]] <tt>URG</tt> נושא ערך "1", הערך בשדה זה מציין את ההיסט למיקום מידע דחוף (לרוב אינו בשימוש).
* היסט למידע דחוף (16 סיביות) - במידה ו[[דגל (מחשבים)|דגל]] <tt>URG</tt> נושא ערך "1", הערך בשדה זה מציין את ההיסט למיקום מידע דחוף (לרוב אינו בשימוש).


* אפשרויות שונות (0-40 [[בית (מחשב)|בתים]]) - שדה אופציונלי שגודלו נקבע על פי שדה "אורך הפתיח", במידה והאורך המצויים אינו גדול מ-5 שדה זה כלל לא נמצא.
* אפשרויות שונות (0-40 [[בית (מחשב)|בתים]]) - שדה אופציונלי שיכול להכיל בין היתר את גודל הסגמנט המרבי (Maximum Segment Size, [[:en:Maximum segment size|MSS]]) לשימוש בפרוטוקול. גודל השדה נקבע על פי שדה "אורך הפתיח", במידה והאורך המצויים אינו גדול מ-5 שדה זה כלל לא נמצא.


* ריפוד אפסים (0-4 [[בית (מחשב)|בתים]]) - שדה שתפקידו למלא את הפתיח ב-"0" על מנת להגיע לכפולה שלמה של 32 סיביות.
* ריפוד אפסים (0-4 [[בית (מחשב)|בתים]]) - שדה שתפקידו למלא את הפתיח ב-"0" על מנת להגיע לכפולה שלמה של 32 סיביות.

גרסה מ־12:58, 31 במרץ 2011


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

פרמטרי חובה [ נושא ] חסרים

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

Transmission Control Protocol (ר"ת TCP) הוא פרוטוקול בתקשורת נתונים הפועל בשכבות התעבורה של מודל ה-OSI ובמודל ה-TCP/IP, ומבטיח העברה אמינה של נתונים בין שתי תחנות ברשת מחשבים באמצעות יצירת חיבור מקושר (Connection Oriented).

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

מנגנונים בשימוש פרוטוקול ה־TCP

הקמת קשר - לחיצת יד משולשת

בעת הקמת הקשר בין שתי תחנות, משתמש פרוטוקול TCP בלחיצת יד בשלושה שלבים :

  1. SYN: תחנת המקור שולחת הודעה לפתיחת קשר (הודעה בפרוטוקול TCP בה דגל ה- SYN בפתיח נושא ערך "1").
  2. SYN-ACK: תחנת היעד מקבלת את ההודעה ושולחת בתגובה הודעת אישור קבלה ואישור פתיחת קשר מצידה (הודעה בפרוטוקול TCP בה דגלי ה- SYN וה- ACK בפתיח נושאים ערך "1") משלב זה יכולה תחנת היעד כבר להתחיל לשלוח נתונים.
  3. ACK: תחנת המקור מיידעת את תחנת היעד על סיום מיסוד הקשר בהודעת (הודעה בפרוטוקול TCP בה דגל ה- ACK בפתיח נושא ערך "1").

סגירת קשר

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

לרוב מתבצעת סגירת הקשר על ידי לחיצת יד משולשת באמצעות שליחת ההודעות הבאה:

  1. FIN-ACK: תחנת המקור מיידעת שהיא מעוניינת בסגירת הקשר ושולחת הודעת ACK על ההודעה האחרונה שהתקבלה והודעת ניתוק ( הודעה בפרוטוקול TCP בה דגלי ה- ACK וה- FIN נושאים ערך "1").
  2. FIN-ACK: הודעה זהה מתחנת היעד המאשרת את קבלת בקשת הניתוק ומבקשת לנתק את הקשר גם כן (מנקודה זו לא מעוברים עוד נתונים בין התחנות).
  3. ACK: הודעה מצד תחנת המקור המאשרת את סגירת הקשר.

אמינות החיבור

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

בקרת זרימה

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

פורטים

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

מבנה חבילת TCP

חבילת TCP כוללת פתיח באורך משתנה המורכב משדות קבועים בגודל 20 בתים ושדות אופציונליים בגודל של עד 40 בתים (בכל מקרה גודל הפתיח הוא כפולה של 32 סיביות). לאחר הפתיח מצורפת מסגרת המידע בגודל משתנה הקטן מ-65,495 בתים. החבילה אינה כוללת סוגר.

מבנה הפתיח

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
פורט המקור פורט היעד
מספר סידורי
מספר אישור (ACK)
אורך הפתיח שמור דגלים גודל חלון השליחה
Checksum מיקום מידע דחוף
אפשרויות שונות (אופציונלי) ריפוד באפסים


  • פורט המקור (16 סיביות) - שדה המכיל את מספר הפורט במחשב המקור.
  • פורט היעד (16 סיביות) - שדה המכיל את מספר הפורט במחשב היעד.
  • מספר סידורי (32 סיביות) - נבחין בין שני מקרים:
  1. דגל SYN נושא ערך "1" (החבילה היא חלק מהקמת הקשר) - המספר בשדה מכיל את מספר החבילה ממנו יתחילו למנות (המספר הסידורי של חבילת המידע הראשונה יהיה למעשה המספר הזה + 1).
  2. דגל SYN נושא ערך "0" (החבילה היא חלק מרצף התקשורת בין המחשבים) - המספר בשדה מכיל את מספר החבילה הנוכחית ביחס לתקשורת הפתוחה בין שני המחשבים (TCP session).
  • מספר אישור (32 סיביות) - (ACK) שדה מכיל את המספר הסידורי של ההודעה הבאה לה מצפה התחנה ומהווה אישור קבלה על כל ההודעות בעלות מספר סידורי הקטן ממנו. המידע בשדה תקף רק כאשר דגל ACK נושא ערך "1".
  • היסט המידע / אורך הפתיח (4 סיביות) - שדה זה מכיל את גודל הפתיח (ביחידות של 32 סיביות) של החבילה הנוכחית שהוא גם ההיסט מתחילת החבילה עד לתחילת המידע.
  • שמור (6 סיביות) - שדה השמור לשימוש עתידי (אמור להכיל אפסים).
  1. URG - (מתוך Urgent), דגל המודיע על מידע דחוף אשר מיקומו נמצא בשדה "היסט למידע דחוף".
  2. ACK - (מתוך Acknowledgment), דגל הנותן תוקף למספר בשדה "מספר האישור".
  3. PSH - (מתוך Push), דגל המפעיל את פונקציה הדחיפה של הפרוטוקול.
  4. RST - (מתוך Reset), דגל המבקש את אתחול הקשר בין המחשבים.
  5. SYN - (מתוך Synchronize), דגל מציין את שלב הקמת הקשר, רק החבילה הראשונה הנשלחת מכל צד משתמשת בדגל הזה .
  6. FIN - (מתוך Finish), דגל המציין את סיום הקשר. נשלח תאורטית פעם אחת מכל צד.
  • גודל חלון הקליטה (16 סיביות) - מספר הבתים אותם יכול המחשב לקלוט החל ממספר ההודעה שצוין בשדה מספר האישור (ACK).
  • סיכום ביקורת (16 סיביות) - checksum, מספר האימות של הפתיח והנתונים.
  • היסט למידע דחוף (16 סיביות) - במידה ודגל URG נושא ערך "1", הערך בשדה זה מציין את ההיסט למיקום מידע דחוף (לרוב אינו בשימוש).
  • אפשרויות שונות (0-40 בתים) - שדה אופציונלי שיכול להכיל בין היתר את גודל הסגמנט המרבי (Maximum Segment Size, MSS) לשימוש בפרוטוקול. גודל השדה נקבע על פי שדה "אורך הפתיח", במידה והאורך המצויים אינו גדול מ-5 שדה זה כלל לא נמצא.
  • ריפוד אפסים (0-4 בתים) - שדה שתפקידו למלא את הפתיח ב-"0" על מנת להגיע לכפולה שלמה של 32 סיביות.

ראו גם

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

תבנית:Link GA