" Nagle" algoritmas , pavadintas inžinieriaus Johno Nagle, buvo sukurtas taip, kad būtų sumažintas tinklo "perkrovos", susijusios su "mažų paketų problemomis", naudojant TCP programas . "Unix" diegimai pradėjo naudoti "Nagle" algoritmą 1980-aisiais, ir šiandien ji yra standartinė TCP funkcija.
Kaip veikia Nagle algoritmas
Nagle algoritmas apdoroja duomenis TCP programų siuntimo pusėje metodu, vadinamu nagling . Prieš siunčiant duomenis per laidą, jis aptinka mažus pranešimus ir kaupia juos į didesnius TCP paketus, taip išvengiant nereikalingo didelio skaičiaus mažų paketų generavimo. Nagle algoritmo techninė specifikacija buvo paskelbta 1984 m. Kaip RFC 896. Sprendimai dėl daugybės duomenų, kuriuos reikia kaupti ir kiek ilgai laukti tarp siunčiamų, yra labai svarbūs jos bendram rezultatyvumui.
Nagling gali efektyviau panaudoti tinklo ryšio pralaidumą , pridedant vėlavimų ( latentinis ) sąskaita. RFC 896 aprašytas pavyzdys iliustruoja galimus pranašumo pranašumus ir jo sukūrimo priežastį:
- TCP programa, perimanti klaviatūros klaviatūras ir norinti perduoti kiekvieną imtuve įvestą simbolį, gali generuoti daugybę pranešimų, kuriuose yra 1 baitų duomenų.
- Kol šie pranešimai gali būti siunčiami per tinklą, kiekvienas turi būti supakuotas kartu su TCP antraštės informacija, kaip to reikalauja TCP / IP. Kiekviena antraštė svyruoja nuo 20 iki 60 baitų.
- Nepamirškime, kad šiame pavyzdyje naudojama programa generuoja tinklo pranešimus, kuriuos sudaro 95% ar daugiau antraštės informacijos (mažiausiai 20 iš 21 baitų) ir 5% ar mažiau faktinių duomenų iš siuntėjo klaviatūros. Vietoje to, naudojant "Nagle" algoritmą, tie patys duomenys gali būti tiekiami naudojant daug mažiau pranešimų ir 95% turinio yra klaviatūros informacija - labai didelė pralaidumo taupymo galimybė.
Programos kontroliuoja "Nagle" algoritmo naudojimą su "TCP_NODELAY" lizdo programavimo parinktimi. "Windows", "Linux" ir "Java" sistemos paprastai įjungia "Nagle" pagal nutylėjimą, todėl tokioms aplinkoms skirtos programos turi nurodyti TCP_NODELAY, norint išjungti algoritmą.
Apribojimai
Nagle algoritmas gali būti naudojamas tik su TCP. Kiti protokolai, įskaitant UDP , nepalaiko.
TCP programoms, kurioms reikia greito tinklo atsako, pvz., Interneto telefono skambučiai ar pirmojo asmens šaudyklių žaidimai, gali būti netinkami, kai "Nagle" yra įjungtas. Dėl vėlavimų, atsiradusių tuo metu, kai algoritmas užtrunka papildomai laiko surinkti mažesnius duomenų gabalus kartu, ekrane ar skaitmeniniame garso sraute vizualiai gali sukelti pastebimą vėlavimą . Šios programos paprastai neleidžia "Nagle".
Šis algoritmas iš pradžių buvo sukurtas tuo metu, kai kompiuterių tinklai palaikė žymiai mažesnę juostos plotį nei šiandien. Pirmiau aprašytas pavyzdys buvo pagrįstas Johno Nagle'o patirtimi "Ford Aerospace" 1980-ųjų pradžioje, kai jų lėtas, sunkiai prikrautais tolimojo susisiekimo tinklais buvo sunku suprasti. Yra vis mažiau situacijų, kai šiandien tinklo programos gali pasinaudoti savo algoritmu.