Fast retransmit


כל מה שרצית לדעת על Fast retransmit:
Fast retransmit (בתרגום חופשי: שידור מהיר מחדש) הוא הרחבה לפרוטוקול TCP שמפחיתה את זמן ההמתנה של השולח (sender) לפני שליחה מחדש של חבילה שאבדה ברשת.
בפרוטוקול TCP המקורי, השולח נעזר בשעון עצר כדי לקבוע שחבילה אבדה ברשת.
אם תוך פרק זמן מסוים (שנקרא timeout ומהווה פונקציה של ה-Round-trip delay time,‏ RTT, המוערך), השולח לא קיבל ACK על החבילה, הוא יניח שהחבילה אבדה ברשת, והפרוטוקול המקורי ישלח את החבילה שוב.
הבסיס למנגנון ה-Fast retransmit הוא הרעיון של הודעות ACK מרובות (Duplicate acknowledgement).
מנגנון הודעות ה-ACK המרובות פועל כך: לאחר קבלת חבילה (packet; למשל עם אינדקס – sequence number -‏ 1), המקבל (receiver) ישלח הודעת ACK שבה יעלה ב-1 את האינדקס (בדוגמה, 2), כלומר המקבל קיבל את חבילה מספר 1 והוא מצפה כעת לקבל מהשולח את חבילה מספר 2.
נניח ששלוש חבילות עוקבות אבדו ברשת.
בינתיים קיבל המקבל את חבילות 5 ו-6.
לאחר שקיבל את חבילה 5, המקבל ישלח הודעת ACK נוספת, שבה עדיין יודיע שהוא מצפה לחבילה מספר 2.
כשהמקבל יקבל את חבילה 6, הוא ישלח הודעת ACK נוספת עם אינדקס 2.
למעשה, השולח יקבל יותר מהודעת ACK אחת עם אותו אינדקס (בדוגמה, 2), ועל כן הדבר נקרא "Duplicate acknowledegment" (הודעות ACK מרובות).
מנגנון ה-Fast retransmit פועל כך: אם השולח בפרוטוקול ה-TCP מקבל כמות מסוימת של הודעות ACK יתירות (לרוב 3) עם אותו אינדקס (כלומר, בסה"כ ארבע הודעות ACK עם אותו אינדקס), השולח יוכל להניח במידה גבוהה של ביטחון כי הסגמנט עם אינדקס זה אכן אבד ברשת, ולא יגיע למקבל ב"איחור" בשל סידור מחדש של הערוץ.
לפיכך השולח ישלח שוב את החבילה שנראה כי אבדה, במקום לחכות שה-timeout יעבור.

נלקח מויקיפדיה

הגדרות נוספות הקשורות לFast retransmit:
פרוטוקולי אינטרנט