Чи потрібен ACK при використанні надійних протоколів, таких як TCP? Скільки створюється штраф за накладну / пропускну здатність?
Чи потрібен ACK при використанні надійних протоколів, таких як TCP? Скільки створюється штраф за накладну / пропускну здатність?
Відповіді:
Так. ACK - це механізм, який робить TCP надійним протоколом.
Якщо ACK були видалені з протоколу, TCP більше не знатиме, чи був пакет скинутий або втрачений і тому його потрібно повторно передавати.
Це зробило б це більше схожим на UDP.
Взагалі на це не можна відповісти, оскільки це залежить від мережевих умов між двома кінцевими точками.
Очевидно, що накладні витрати найнижчі, якщо немає втрати пакету, але якщо є значна втрата пакету, то накладні витрати будуть набагато вищими, оскільки дані передаються повторно.
Ви запитували про "надійні протоколи, як TCP / IP"; Я відповім за TCP / IP.
Так, це невід'ємна частина TCP / IP. TCP / IP - протокол розсувного вікна . ACK дозволяє одержувачу "ковзати у вікно", дозволяючи відправнику надсилати більше даних. Без ACK TCP / IP не надсилатиме більше непідтверджених даних, ніж дозволяє розмір вікна.
Без розсувного вікна відправник повинен був би зберегти весь вміст потоку даних на випадок, якщо одержувач захоче повторно передати частину його частини. Розсувне вікно дозволяє відправника просто зберігати деяку невелику частину потоку даних для можливої повторної передачі.
У випадку, коли розмір вікна адекватний умовам мережі, а пропускна здатність приймача для відправника не є насиченою, ACK (і порядковий номер, що йде разом з ним) не повинен спричиняти покарання за пропускну здатність. Це тому, що TCP / IP не вимагає, щоб пакет був підтверджений, перш ніж наступний пакет може бути відправлений. За сприятливих умов відправник може відправляти без пауз, одночасно отримуючи потік ACK від одержувача.
Прикладний рівень ACK є кращим, щоб знати, що інший кінець фактично обробив дані. Надійність TCP сама по собі не допомагає програмі дізнатися, чи фактично надійшли дані та обробляються іншим кінцем. Поширене непорозуміння, що TCP сам по собі робить спілкування надійним. Дані через TCP-з’єднання можна затримувати довільно в буферах або на стороні відправника, або на стороні одержувача, і якщо з'єднання розривається, то відправник не може знати, скільки обробляється одержувачем, якщо тільки не використовуються ACK рівня додатка .
Накладні витрати - це додатковий зворотний бік між сторонами, але якщо є постійне спілкування, то йому не потрібно додавати затримок, якщо дані надсилаються паралельно. Пропускна здатність накладних частот досить мала, як мінімум, приймач може ACK простим 1-байтовим пакетом, але в більш складних випадках пакетів ACK може знадобитися кілька десятків байт.