Алгоритъмът Nagle за TCP мрежова комуникация

Алгоритъмът Nagle , наречен от инженера Джон Нагла, е проектиран да намали задръстванията на мрежата, причинени от "малки пакетни проблеми" с приложенията TCP . Приложенията на UNIX започнаха да използват алгоритъма на Nagle през 80-те години на миналия век и остава стандартна характеристика на TCP днес.

Как функционира алгоритъмът на Nagle

Алгоритъмът на Nagle обработва данни от изпращащата страна на TCP приложенията по метод, наречен " наглеждане" . Той открива малки съобщения и ги акумулира в по-големи TCP пакети, преди да изпрати данни по тел, като по този начин се избегне генерирането на ненужно голям брой малки пакети. Техническата спецификация за алгоритъма на Nagle е публикувана през 1984 г. като RFC 896. Решенията за много данни, които се натрупват и колко време да чакаме между изпратите, са от решаващо значение за цялостното му представяне.

Nagling може по-ефективно да използва честотната лента на мрежова връзка за сметка на добавянето на закъснения ( латентност ). Пример, описан в RFC 896, илюстрира ползите от потенциалната широчина на честотната лента и причината за неговото създаване:

Приложенията контролират използването на алгоритъма Nagle с опцията за програмиране на гнездото TCP_NODELAY. Системите с Windows, Linux и Java обикновено позволяват Nagle по подразбиране, така че приложенията, написани за тези среди, трябва да посочат TCP_NODELAY, когато искат да изключат алгоритъма.

Ограничения

Алгоритъмът на Nagle може да се използва само с TCP. Други протоколи, включително UDP, не го поддържат.

TCP приложенията, които се нуждаят от бърз отговор на мрежата, като интернет телефонни обаждания или игри за стрелба от първо лице, може да не работят добре, когато Nagle е активиран. Закъсненията, причинени докато алгоритъмът отнема повече време, за да се съберат по-малки парчета данни заедно, може да предизвика забележимо изоставане визуално на екран или в цифров аудио поток. Тези приложения обикновено изключват Nagle.

Този алгоритъм първоначално е разработен във време, когато компютърните мрежи поддържат много по-малко трафик, отколкото те днес. Примерът, описан по-горе, се основава на опита на Джон Нагъл в Ford Aerospace в началото на 80-те години на миналия век, когато нелегалните компромиси в тяхната бавна, силно натоварена далекосъобщителна мрежа имаха добър смисъл. Има все по-малко ситуации, при които мрежовите приложения могат да се възползват от своя алгоритъм днес.