Kas yra Nagle algoritmas?

Nagle algoritmas yra sistema, naudojama tinklų, ypač interneto, efektyvumui pagerinti. Sistema apima vengimą, kad duomenys būtų siunčiami bereikalingai mažomis partijomis, o tai taip pat padidina siunčiamų siuntų skaičių. Nors Nagle algoritmas turi savo paskirtį, jis gali prastai sąveikauti su kitais tinklo ryšio elementais.

Sukurtas vyro vardu Johnas Nagle’as, Nagle algoritmas veikia su tinklais, kuriuose naudojami TCP/IP protokolai. Tai yra protokolai arba „taisyklės“, kaip tinklas perduoda duomenis. Nors protokolai gali būti taikomi bet kokiam tinklui, jie dažniausiai siejami su internetu.

Algoritmas susijęs su būdu, kuriuo duomenys perduodami mažais gabalėliais arba „paketais“. Kiekviename pakete yra tam tikrų duomenų ir antraštės informacijos, kuri yra siuntėjo ir gavėjo adreso atitikmuo fiziniame voke. Pakete taip pat yra kontrolinė suma, matematinis pakuočių sąrašo atitikmuo, kad gavėjas žinotų, kad visas paketo turinys atvyko saugiai.

Nors ši sistema paprastai veikia gerai, ji gali būti neefektyvi, jei duomenų gabalai yra ypač maži. Ekstremaliais atvejais duomenų pakete gali būti tik vienas baitas, tačiau antraštės informacija užims 40 baitų, nepaisant duomenų dydžio. Tai apytiksliai prilygsta laiško rašymui kažkam, o paskui jį supjaustant ir išsiunčiant kiekvieną žodį atskirame voke. Tiesą sakant, kadangi pranešimai siunčiami dvejetainiu formatu, tai dar neefektyviau. Be pralaidumo švaistymo, tai taip pat padidina paketų, kuriuos reikia išsiųsti, skaičių, o tai padidina klaidos tikimybę perdavimo procese.

Nagle algoritmo principas yra tas, kad išsiuntus paketą, siunčiantis kompiuteris laukia, kol įvyks vienas iš dviejų dalykų, prieš išsiųsdamas kitą paketą. Gavęs patvirtinimą, kad gautas paskutinis paketas, turimus duomenis išsiųs iš karto, nepaisant jų dydžio. Priešingu atveju jis lauks, kol bus išsiųstas „pilnas“ paketas. Kai tai atsitiks, jis išsiųs visą paketą, nesvarbu, ar buvo gautas ankstesnis paketas, ar ne.

Kai kuriose situacijose Nagle algoritmas gali padaryti daugiau žalos nei naudos. Vienas iš pavyzdžių yra internetiniai vaizdo žaidimai, kurie sukurti darant prielaidą, kad duomenys bus išsiųsti nedelsiant. Jei naudojamas Nagle algoritmas, kai kurie duomenys bus atidėti, kol bus paruoštas visas paketas. Tai gali turėti pastebimą poveikį tam, kaip žaidėjas reaguoja į žaidimą, ir veiksmingai sulėtins jų reakcijos laiką, palyginti su kitais žaidėjais.