Для керування потоком даних між користувачем і сервером було створено протокол TCP Flow Control.
Він гарантує, що певна пропускна здатність доступна для надсилання та отримання даних, щоб обробка могла тривати без будь-яких серйозних проблем.
Для цього протокол TCP використовує метод, відомий як протокол ковзного вікна.
У цьому фрагменті ми детально розглянемо керування потоком TCP, включно з тим, як воно функціонує, і, найголовніше, протокол ковзного вікна.
Що таке керування потоком TCP?
Протокол TCP забезпечує встановлення надійного каналу зв’язку в непередбачуваній мережі.
Пакети даних можуть бути втрачені, надходити з порушенням послідовності, бути резервними копіями в мережі або бути перевантаженими на вузлі-одержувачі, коли вони надсилаються з одного вузла на інший.
Однак під час розробки програми нам зазвичай не доводиться мати справу з цією складністю; натомість ми просто надсилаємо деякі дані в сокет, і TCP гарантує, що пакети успішно доставлені до вузла одержувача.
Контроль потоку — це важлива додаткова функція, яку пропонує TCP.
Завдяки використанню керування потоком TCP, по суті, переконається, що відправник не надсилає одержувачу занадто багато пакетів одночасно.
Як працює протокол керування передачею – керування потоком?
Зазвичай це відбувається, коли нам потрібно передати дані через мережу.
Додаток-відправник надсилає дані в сокет, транспортний рівень (у цьому випадку TCP) пакує ці дані в сегмент, а мережевий рівень (наприклад, IP) передає цей пакет на вузол-одержувач певним маршрутом.
Мережевий рівень передасть ці дані TCP на приймальному кінці розмови, а TCP зробить їх доступними для програми-одержувача як ідентичний дублікат наданих даних.
TCP не доставлятиме пакети не в порядку та чекатиме повторної передачі, якщо виявить розрив потоку байтів.
Ось що ми побачимо, якщо збільшимо масштаб.
І буфери передачі, і буфери прийому на TCP використовуються для зберігання даних, які потрібно надіслати та отримати відповідно.
Дані з буфера прийому будуть зчитані програмою, коли вони будуть підготовлені.
Переконатися, що ми не надсилаємо додаткові пакети, коли буфер прийому отримувача вже заповнений, є головною метою керування потоком, оскільки це змусило б отримувача скинути додаткові пакети, які він не міг би обробити.
Одержувач оголосить своє вікно отримання або доступний простір у буфері прийому, щоб обмежити кількість даних, які TCP може передати.
Протокол ковзного вікна
Протокол ковзного вікна в TCP є одним із найбільш широко використовуваних методів керування потоком. Це байт-орієнтована процедура змінного розміру.
У цьому підході одержувач надсилає відправнику вікно одержувача, як тільки відправник і одержувач підключаються.
Розмір поточного буфера приймача називається вікном приймача.
Обсяг даних, який можна надіслати далі без підтвердження, тепер обчислюється TCP на основі доступного вікна отримувача.
TCP, однак, зупиняє передачу даних, якщо розмір вікна приймача дорівнює 0, і чекає, поки він збільшиться.
Розмір вікна приймача є компонентом кадру TCP.
Максимальний розмір вікна становить 65,535 16 байт, оскільки він має розмір вікна XNUMX біт.
Розмір вікна вибирає одержувач. З кожним повідомленням підтвердження приймач передає розмір вікна приймача, доступний на даний момент.
Процес протоколу ковзного вікна
При використанні технології протоколу ковзного вікна два буфери встановлюються під час підключення відправника та одержувача.
Ці два буфери розділені на дві групи: вікно надсилання, яке належить відправнику, та вікно отримання, яке належить одержувачу.
Вікно отримання повертає вільний простір буфера прийому, коли відправник передає дані одержувачу.
У результаті відправник обмежений обсягом даних, який може поміститися в приймальний буфер.
Вікно передачі у наведеному вище прикладі передає дані у вікно прийому.
Після отримання даних вікно прийому надсилає підтвердження, а потім вікно передачі передає новий кадр даних.
Однак цього разу вікно отримання додатково надсилає повідомлення про те, що доступна пам’ять заповнена, на додаток до отриманого підтвердження.
Вікно передачі призупиняє передачу даних, поки не отримає підтвердження від вікна прийому, що простір було звільнено, після чого воно може відновити передачу даних.
Висновок
Підсумовуючи, рівень з’єднання даних і транспортний рівень відповідають за керування потоком.
Основна мета механізму керування потоком — не допустити перевантаження одержувача даними від відправника, який швидше передає дані.
Навіть якщо дані, які передає відправник, не містять помилок і надсилаються з вищою швидкістю завдяки потужній машині, цілком можливо, що повільніший одержувач не зможе впоратися з вищою швидкістю передачі даних і, отже, втратить частину даних.
залишити коментар