TCP желісінің байланысына арналған Nagle алгоритмі

Инженер Джон Нагле есімді Nagle алгоритмі TCP қосымшалары бар «шағын пакеттік мәселелер» арқылы туындаған желілік жүктемені азайтуға арналған. UNIX іске асыру 1980-жылдары Nagle алгоритмін пайдалануды бастады, және ол бүгінгі күні TCP стандартты ерекшелігі болып қала береді.

Нагле алгоритмі қалай жұмыс істейді

Нагл алгоритмі TCP қосымшаларының жіберуші тарапындағы деректерді наглинг деп аталатын әдіс арқылы өңдейді . Ол кіші өлшемді хабарламаларды анықтайды және деректерді сым арқылы жіберместен бұрын үлкен TCP пакеттеріне жинақтайды, осылайша кішкентай шағын пакеттердің үлкен санының пайда болуына жол бермейді. Нагл алгоритмінің техникалық сипаттамасы 1984 жылы RFC 896 ретінде жарияланды. Көптеген деректерді жинау және жіберулер арасында қанша уақыт күту туралы шешімдер оның жалпы көрсеткіштері үшін өте маңызды.

Nagling кешіктіруді ( кешіктіру ) қосу есебінен желі байланысының өткізу жолағының тиімділігін арттыра алады. RFC 896-де сипатталған мысал әлеуетті өткізу қабілеттілігінің артықшылықтарын және оны жасаудың себебін суреттейді:

Қолданбалар NAGLE алгоритмін TCP_NODELAY сокета бағдарламасымен пайдалануды бақылайды. Windows, Linux және Java жүйелер әдетте әдетте Nagle-ды әдепкі бойынша қосады, сондықтан сол орталарға жазылған бағдарламалар алгоритмді өшіруді қалаған кезде TCP_NODELAY көрсетуі керек.

Шектеулер

Nagle алгоритмі тек TCP-мен қолдануға болады. Басқа протоколдар, соның ішінде UDP , оны қолдамайды.

Интернеттегі телефон қоңырауы немесе бірінші адам шабуылшы ойындары секілді желіге жылдам жауап беруді талап ететін TCP қосымшалары Nagle қосулы болғанда жақсы жұмыс істемеуі мүмкін. Алгоритм деректердің кішкене бөліктерін жинау үшін қосымша уақыт қажет болған кездегі кешіктірулер экранда немесе сандық аудио ағында көзбен көруге елеулі түрде түсуі мүмкін. Бұл бағдарламалар әдетте Nagle бағдарламасын өшіреді.

Бұл алгоритм бастапқыда компьютерлік желілер бүгінгі күнмен салыстырғанда әлдеқайда аз өткізу қабілетін қолдайтын сәтте әзірленген. Жоғарыда сипатталған мысал 1980-ші жылдардың басында Джон Наглдың Ford Aerospace-те бастан кешірген тәжірибесіне негізделген. Желілік қолданбалар бүгінгі күні оның алгоритмінен пайда болатын жағдайлар азаяды.