הובלת אמינות TCP
כולנו מכירים את פרוטוקול TCP כפרוטוקול הובלה אמין, אך כיצד הוא מבטיח את אמינות ההובלה?
כדי להשיג העברה אמינה, יש לקחת בחשבון גורמים רבים, כמו שחיתות נתונים, אובדן, כפילות ושרדים מחוץ לסדר. אם לא ניתן לפתור בעיות אלה, לא ניתן להשיג העברה אמינה.
לפיכך, TCP מעסיקה מנגנונים כמו מספר רצף, תשובת הכרה, בקרת בקרת, ניהול חיבורים ובקרת חלונות כדי להשיג שידור אמין.
במאמר זה נתמקד בחלון הזזה, בקרת זרימה ובקרת גודש ב- TCP. מנגנון ההעברה מחדש מכוסה בנפרד בסעיף הבא.
בקרת זרימת רשת
בקרת זרימת רשת או מכירה כבקרת תנועה ברשת היא למעשה ביטוי של הקשר העדין בין יצרנים לצרכנים. בטח נתקלת בתרחיש הזה הרבה בעבודה או בראיונות. אם יכולתו של היצרן לייצר עולה על יכולת הצרכן לצרוך, היא תגרום לתור לצמוח ללא הגבלת זמן. במקרה רציני יותר, אתה עשוי לדעת שכאשר הודעות RabbitMQ נערמות יותר מדי, זה יכול לגרום להשפלת ביצועים של כל שרת ה- MQ. כך גם לגבי TCP; אם לא יישארו מסומנים, יותר מדי הודעות יוכנסו לרשת, והצרכנים יעברו את יכולתם, בעוד שהמפיקים ימשיכו לשלוח הודעות כפולות, מה שישפיע רבות על ביצועי הרשת.
כדי להתייחס לתופעה זו, TCP מספקת מנגנון לשולח לשליטה על כמות הנתונים שנשלחו על בסיס יכולת הקבלה בפועל של המקלט, המכונה בקרת זרימה. המקלט מקיים חלון קבלה ואילו השולח שומר חלון שליחה. יש לציין כי חלונות אלה מיועדים רק לחיבור TCP יחיד ולא כל החיבורים חולקים חלון.
TCP מספק בקרת זרימה באמצעות משתנה עבור חלון קבלה. חלון הקבלה מעניק לשולח אינדיקציה לכמה שטח מטמון עדיין זמין. השולח שולט בכמות הנתונים שנשלחו על פי יכולת הקבלה בפועל של המקלט.
מארח המקלט מודיע לשולח על גודל הנתונים שהוא יכול לקבל, והשולח שולח למגבלה זו. גבול זה הוא גודל החלון, זוכר את כותרת ה- TCP? יש שדה חלון לקבל, המשמש לציון מספר הבתים שהמקבל מסוגל או מוכן לקבל.
מארח השולח ישלח מעת לעת חבילת בדיקת חלון, המשמשת לגילוי האם מארח המקלט עדיין מסוגל לקבל נתונים. כאשר המאגר של המקלט נמצא בסכנת שפיפה על גדותיו, גודל החלון מוגדר לערך קטן יותר כדי להורות לשולח לשלוט בכמות הנתונים שנשלחו.
להלן תרשים בקרת זרימת רשת:
בקרת גודש ברשת
לפני שמציגים בקרת גודש, עלינו להבין שבנוסף לחלון הקבלה ולחלון השליחה, יש גם חלון עומס, המשמש בעיקר לפתרון הבעיה באיזה קצב השולח מתחיל לשלוח נתונים לחלון הקבלה. לפיכך, חלון הגודש נשמר גם על ידי שולח TCP. אנו זקוקים לאלגוריתם כדי להחליט כמה נתונים מתאימים לשלוח, מכיוון שליחת מעט מדי או יותר מדי נתונים אינה אידיאלית, ומכאן הרעיון של חלון עומס.
בבקרת זרימת הרשת הקודמת, מה שנמנענו היה השולח שממלא את מטמון המקלט בנתונים, אך לא ידענו מה קורה ברשת. בדרך כלל, רשתות מחשבים נמצאות בסביבה משותפת. כתוצאה מכך יתכן שיש עומס רשת עקב תקשורת בין מארחים אחרים.
כאשר הרשת צפופה, אם ממשיכים לשלוח מספר גדול של מנות, היא עלולה לגרום לבעיות כמו עיכוב ואובדן מנות. בשלב זה, TCP תביא מחדש את הנתונים, אך ההעברה מחדש תגדיל את הנטל על הרשת, וכתוצאה מכך עיכובים גדולים יותר ויותר הפסדי מנות. זה יכול להיכנס למחזור קסמים ולהמשיך להתגבר.
לפיכך, TCP לא יכול להתעלם ממה שקורה ברשת. כאשר הרשת עמוסה, TCP מקריבה את עצמה על ידי צמצום כמות הנתונים שהיא שולחת.
לפיכך מוצעת בקרת גודש, שמטרתה להימנע ממילוי הרשת כולה בנתונים מהשולח. כדי להסדיר את כמות הנתונים שעל השולח לשלוח, TCP מגדיר מושג שנקרא חלון הגודש. אלגוריתם בקרת העומס יתאים את גודל חלון הגודש בהתאם לתואר העומס של הרשת, כדי לשלוט בכמות הנתונים שנשלח על ידי השולח.
מהו חלון עומס? מה זה קשור לחלון Send?
חלון העומס הוא משתנה מדינה המוחזק על ידי השולח הקובע את כמות הנתונים שהשולח יכול לשלוח. חלון העומס משתנה באופן דינמי בהתאם לרמת הגודש של הרשת.
חלון השולח הוא גודל חלון מוסכם בין השולח למקלט המציין את כמות הנתונים שהמקבל יכול לקבל. חלון העומס וחלון השליחה קשורים; החלון השולח שווה בדרך כלל למינימום העומס וקבלת חלונות, כלומר SWND = MIN (CWND, RWND).
חלון העומס CWND משתנה כדלקמן:
אם אין גודש ברשת, כלומר, לא מתרחש פסק זמן להעברה מחדש, חלון הגודש עולה.
אם יש גודש ברשת, חלון העומס יורד.
השולח קובע אם הרשת עמוסה על ידי התבוננות אם חבילת ההכרה של ACK מתקבלת בזמן שצוין. אם השולח לא מקבל את מנות ה- ACK Accessing Sointing בזמן שצוין, זה נחשב כי הרשת צפופה.
בנוסף לחלון הגודש, הגיע הזמן לדון באלגוריתם בקרת העומס של TCP. אלגוריתם בקרת עומס TCP מורכב משלושה חלקים עיקריים:
התחלה איטית:בתחילה, חלון העומס CWND קטן יחסית, והשולח מגדיל את חלון העומס באופן אקספוננציאלי כדי להסתגל במהירות לקיבולת הרשת.
הימנעות מגודש:לאחר שחלון הגודש עולה על סף מסוים, השולח מגדיל את חלון העומס באופן ליניארי כדי להאט את קצב הגידול של חלון העומס ולהימנע מעומס על הרשת.
התאוששות מהירה:אם מתרחש גודש, השולח מחצית את חלון העומס ונכנס למצב ההתאוששות המהיר כדי לקבוע את מיקום התאוששות הרשת דרך ה- ACKs הכפולים שהתקבלו, ואז ממשיך להגדיל את חלון העומס.
התחלה איטית
כאשר נקבע חיבור TCP, חלון העומס CWND מוגדר בתחילה לערך MSS מינימלי (גודל קטע מקסימלי). בדרך זו, שיעור השליחה הראשוני הוא על MSS/RTT BYTES/SECOND. רוחב הפס הזמין בפועל הוא בדרך כלל גדול בהרבה מ- MSS/RTT, ולכן TCP רוצה למצוא את קצב השליחה האופטימלי, שניתן להשיג באמצעות התחלה איטית.
בתהליך ההתחלה האיטית, הערך של חלון העומס CWND יאתחל ל- 1 MSS, ובכל פעם שמכיר בקטע המנות המועבר, הערך של CWND יוגדל על ידי MSS אחד, כלומר, הערך של CWN יהפוך ל -2 MSS. לאחר מכן, הערך של CWND מוכפל עבור כל העברה מוצלחת של קטע מנות וכן הלאה. תהליך הצמיחה הספציפי מוצג באיור הבא.
עם זאת, קצב השליחה לא תמיד יכול לצמוח; הצמיחה צריכה להסתיים מתישהו. אז מתי גדל שיעור השליחה? Start Start בדרך כלל מסיים את העלייה בקצב השליחה באחת מכמה דרכים:
הדרך הראשונה היא המקרה של אובדן מנות במהלך תהליך השליחה של התחלה איטית. כאשר מתרחש הפסד מנות, TCP מגדיר את חלון העומס של השולח CWND ל- 1 ומפעיל מחדש את התהליך ההתחלה האיטי. בשלב זה מוצג מושג של סף התחלה איטי SSTHRESH, שערך הראשוני שלו הוא מחצית הערך של CWND המייצר אובדן מנות. כלומר, כאשר מתגלה גודש, הערך של SSTHRESH הוא מחצית מערך החלון.
הדרך השנייה היא לתאם ישירות עם הערך של סף ההתחלה האיטי SSTHRESH. מכיוון שערך SSTHRESH הוא מחצית מערך החלון בעת גילוי הגודש, אובדן מנות עשוי להתרחש כאשר כל הכפלה כאשר CWND גדול יותר מ- SSTHRESH. לכן עדיף להגדיר את CWND ל- SSTHRESH, מה שיגרום ל- TCP לעבור למצב בקרת עומס ולסיים את ההתחלה האיטית.
הדרך האחרונה בה התחלה איטית יכולה להסתיים היא אם מתגלים שלושה ACKs מיותרים, TCP מבצעת העברה מחדש מהירה ונכנסת למצב ההתאוששות. (אם לא ברור מדוע יש שלוש מנות ACK, זה יוסבר בנפרד במנגנון ההעברה מחדש.)
הימנעות מגודש
כאשר TCP נכנס למצב בקרת הגודש, CWND מוגדר למחצית מסף העומס SSTHRESH. המשמעות היא שלא ניתן להכפיל את הערך של CWND בכל פעם שמתקבל קטע מנות. במקום זאת, מאומצת גישה שמרנית יחסית בה הערך של CWND מוגדל על ידי MSS אחד בלבד (אורך קטע מנות מקסימאלי) לאחר השלמת כל העברת הילוכים. לדוגמה, גם אם יוכרו 10 מקטעי מנות, הערך של CWND יגדל רק על ידי MSS אחד. זהו מודל צמיחה ליניארי ויש לו גם גבול עליון לצמיחה. כאשר מתרחש אובדן מנות, הערך של CWND משתנה ל- MSS, והערך של SSTHRESH מוגדר לחצי של CWND. או שזה גם יפסיק את צמיחת ה- MSS כאשר מתקבלות 3 תגובות ACK מיותרות. אם עדיין מתקבלים שלושה ACKs מיותרים לאחר חציית הערך של CWND, הערך של SSTHRESH נרשם כמחצית הערך של CWND ומצב ההתאוששות המהיר מוזן.
התאוששות מהירה
במצב ההתאוששות המהירה, הערך של חלון העומס CWND מוגדל על ידי MSS אחד עבור כל ACK מיותר, כלומר ACK שלא מגיע ברצף. זה כדי לעשות שימוש בקטעי המנות שהועברו בהצלחה ברשת כדי לשפר את יעילות ההעברה ככל האפשר.
כאשר מגיע ACK של קטע המנות האבוד, TCP מקטין את הערך של CWND ואז נכנס למצב הימנעות הגודש. זה כדי לשלוט בגודל חלון הגודש ולהימנע מהגדלת גודש הרשת.
אם מתרחש פסק זמן לאחר מצב בקרת העומס, מצב הרשת הופך להיות חמור יותר ו- TCP נודד ממצב הימנעות הגודש למצב ההתחלה האיטי. במקרה זה, הערך של חלון העומס CWND מוגדר ל- 1 MSS, אורך קטע המנות המרבי והערך של סף ההתחלה האיטי SSTHRESH מוגדר לחצי של CWND. המטרה של זה היא להגדיל מחדש את גודל חלון הגודש לאחר שהרשת מתאזנת לאזן את קצב ההולכה ואת מידת גודש הרשת.
תַקצִיר
כפרוטוקול תחבורה אמין, TCP מיישם הובלה אמינה לפי מספר רצף, אישור, בקרת העברה מחדש, ניהול חיבור ובקרת חלונות. ביניהם, מנגנון בקרת הזרימה שולט בכמות הנתונים שנשלח על ידי השולח בהתאם ליכולת הקבלה בפועל של המקלט, אשר נמנעת מבעיות של עומס רשת והשפלת ביצועים. מנגנון בקרת העומס נמנע מהופעת גודש ברשת על ידי התאמת כמות הנתונים שנשלח על ידי השולח. המושגים של חלון גודש וחלון שליחה קשורים זה לזה, וכמות הנתונים בשולח נשלטת על ידי התאמה דינאמית של גודל חלון העומס. התחלה איטית, הימנעות גודש ושחזור מהיר הם שלושת החלקים העיקריים של אלגוריתם בקרת גודש TCP, המתאימים את גודל חלון העומס באמצעות אסטרטגיות שונות להתאמה לקיבולת ולמידת הגודש של הרשת.
בחלק הבא נבחן בפירוט את מנגנון ההעברה מחדש של TCP. מנגנון העברה מחדש הוא חלק חשוב מ- TCP להשגת העברה אמינה. זה מבטיח העברת נתונים אמינה על ידי הגשת נתונים אבודים, פגומים או מעוכבים. עקרון היישום והאסטרטגיה של מנגנון ההעברה מחדש תוצג וינותח בפירוט בסעיף הבא. הישאר מעודכן!
זמן ההודעה: פברואר -24-2025