Наголениот алгоритам за TCP мрежна комуникација

Наголевиот алгоритам , именуван по инженерот Џон Нагл, беше дизајниран да ја намали застојот на мрежата предизвикани од "мали пакетни проблеми" со TCP-апликации . Имплементацијата на UNIX започна со користење на алгоритам на Нагл во 1980-тите, и денес останува стандардна карактеристика на TCP.

Како работи Алгоритмот на Нагла

Алгоритмот на Nagle ги обработува податоците на страната за испраќање TCP-апликации со метод наречен Nagling . Ги детектира пораките со мали пораки и ги акумулира во поголеми TCP пакети пред да испраќа податоци преку жицата, со што се избегнува генерирање на непотребно голем број мали пакети. Техничките спецификации за алгоритам на Нагл беа објавени во 1984 година како RFC 896. Одлуките за многу податоци кои треба да се акумулираат и колку долго да се чека помеѓу пратките се од клучно значење за нејзината севкупна изведба.

Nagling може поефикасно да го искористи пропусниот опсег на мрежна конекција на сметка на додавање одложувања ( латентност ). Еден пример опишан во RFC 896 ги илустрира потенцијалните бенефиции за пропусниот опсег и причината за нејзиното создавање:

Апликациите ја контролираат нивната употреба на Nagle алгоритам со TCP_NODELAY опцијата за програмирање на сокети . Windows, Linux и Java системите обично овозможуваат Nagle стандардно, така што апликациите напишани за тие средини треба да наведат TCP_NODELAY кога сакаат да го исклучат алгоритмот.

Ограничувања

Алгоритмот на Нагл е употреблив само со TCP. Другите протоколи, вклучувајќи UDP, не го поддржуваат.

TCP апликациите за кои е потребен брз мрежен одговор, како што е телефонски повик од интернет или игри на прво лице, може да не работат добро кога Nagle е овозможено. Одложувањето предизвикано додека алгоритмот зазема екстра време за да се соберат помали делови од податоци заедно, може да предизвика забележливо задоцнување визуелно на екранот или во дигитален аудио поток. Овие апликации обично го оневозможуваат Nagle.

Овој алгоритам првично беше развиен во време кога компјутерските мрежи поддржаа многу помалку пропусен опсег отколку што го прават денес. Примерот што е опишан погоре се базира на искуствата на Џон Нагл во Форд Аероспејс во почетокот на 1980-тите, каде што се поттикнаа разумните компромиси на нивната бавна, силно натоварена мрежа на долги растојанија. Постојат сè помалку ситуации кога мрежните апликации можат да имаат корист од неговиот алгоритам денес.