TCP מקצה מספר רצף לכל בייט ודורש אישור קבלה — מנגנון פשוט שהופך רשתות כאוטיות ולא אמינות לתקשורת אמינה.
כשאתה סוגר חיבור TCP, הוא רודף את המערכת שלך במשך 60 שניות. TIME_WAIT הוא לא באג — זה TCP שמסרב לשכוח, עד שהרשת תדביק את הפיגור.
חלון ההזזה של TCP נותן למקבל דרך לומר "האט" מבלי לאבד נתונים. כך פועלות הכרזות חלון, הרחבת חלון וגששי חלון-אפס — כדי שמשדרים מהירים לא יציפו מקבלים איטיים.
FIN מסיים חיבור TCP כמו שאומרים שלום לפני שמנתקים. RST מסיים אותו כמו שהקו מת באמצע משפט. לדעת מה קרה — ולמה — זה ההבדל בין דיבוג של דקות לבין דיבוג של שעות.
שני מכשירים שמעולם לא הכירו זה את זה צריכים להסכים על נקודת התחלה משותפת לפני שמתחילים להחליף נתונים. לחיצת היד התלת-שלבית היא הדרך שבה הם מסנכרנים — וגלומה בה פגיעות שתוקפים מנצלים ללא רחמים.
האלגוריתם של נייגל היה גאוני ב-1984 — איגוד חבילות זעירות הציל את האינטרנט הרעב-לרוחב-פס מטביעה בתקורה. ארבעה עשורים מאוחר יותר, הוא לרוב הסיבה שהמשחק שלך מרגיש איטי או שהמסוף שלך מפגר. הנה מתי לאמץ אותו, מתי לכבות אותו עם TCP_NODELAY, ומדוע התשובה התהפכה.
לחיצת היד התלת-שלבית של TCP מאלצת כל חיבור לשלם מחיר של סיבוב הלוך-ושוב לפני שליחת נתונים. TCP Fast Open מאפשר ללקוחות חוזרים לדלג על הפורמליות — ולצרף את הבקשה לחבילה הראשונה ממש. זה עובד מצוין, חוץ מכשלא.
TCP לא סומך על הרשת. כל מנה נושאת שאלה סמויה — קיבלת את זה? — ושקט מתפרש כאובדן. כך הופך השידור החוזר רשת לא-אמינה לערוץ תקשורת אמין.
שרת שקרס לא יכול להיפרד — הוא פשוט נעלם. TCP keep-alive חוקר את הדממה, מוצא את המתים, ומאפשר לחיים להמשיך הלאה.
אפשרויות TCP הן הדרך שבה פרוטוקול מהשנות השבעים שורד בעולם של גיגה-ביט — הן מאפשרות משא ומתן על גדלי מקטעים כדי למנוע פרגמנטציה, מרחיבות חלונות מעבר למגבלת ה-64KB המקורית, ומשתמשות בחותמות זמן כדי לשמור על שפיות חיבורים במהירות גבוהה.
שולחי TCP אינם רואים את הרשת — הם רק יודעים מתי מנות נעלמות. מתוך שתיקה זו, עליהם להסיק שיש עומס ולרסן את עצמם. האלטרנטיבה היא קריסה: רשת רוויה בשידורים חוזרים שלא משיגה דבר.
TCP הופך רשתות בלתי אמינות לתקשורת אמינה באמצעות אימות: לחיצות יד שמוכיחות נגישות הדדית, מספרי רצף שעוקבים אחר כל בייט, ואישורים שמאשרים קבלה — ומקים אמון במקום שהרשת אינה מספקת דבר.
האם דף זה היה מועיל?