Nagleov algoritam , nazvan po inženjeru John Nagle, osmišljen je za smanjenje zagušenja mreže zbog "malih problema s paketom" s TCP aplikacijama . UNIX implementacije počele su upotrebljavati Nagleov algoritam u osamdesetim godinama, a danas ostaje standardna značajka TCP-a.
Kako funkcionira Nagleov algoritam
Nagleov algoritam obrađuje podatke na strani za slanje TCP aplikacija metodom pod nazivom nagling . Otkriva poruke male veličine i akumulira ih u veće TCP pakete prije slanja podataka preko žice, čime se izbjegava generiranje nepotrebno velikog broja malih paketa. Tehnička specifikacija za Nagleov algoritam objavljena je 1984. godine kao RFC 896. Odluke za puno podataka koji se akumuliraju i koliko dugo treba čekati između šalica ključni su za njegovu cjelokupnu izvedbu.
Nagling može učinkovitije iskoristiti širinu pojasa mrežne veze na štetu dodavanja kašnjenja ( kašnjenja ). Primjer opisan u RFC 896 ilustrira potencijalne prednosti propusnosti i razlog za njegovo stvaranje:
- TCP aplikacija koja presreće tipkovne tipke i želi komunicirati svaki znak upisivan na prijemnik, može generirati niz poruka od kojih svaka sadrži 1 bajt podataka.
- Prije no što se ove poruke mogu slati preko mreže, svaki se mora pakirati zajedno s podacima o zaglavlju TCP-a, kako to zahtijeva TCP / IP. Svako zaglavlje kreće se u veličini između 20 i 60 bajta.
- Bez naglinga, ovaj primjer aplikacija generirala bi mrežne poruke koje se sastoje od 95% ili više informacija o zaglavljima (najmanje 20 od 21 bajta) i 5% ili manje stvarnih podataka s pošiljateljeve tipkovnice. Koristeći Nagleov algoritam, isti podaci mogu se umjesto toga isporučiti koristeći mnogo manje poruka, a 95% sadržaja je informacija o tipkovnici - vrlo velika štednja širine pojasa.
Aplikacije kontroliraju upotrebu algoritma Nagle uz opciju programiranja TCP_NODELAY socket . Windows, Linux i Java sustavi obično omogućuju Nagle prema zadanim postavkama pa aplikacije napisane za te okruženja moraju navesti TCP_NODELAY kada žele isključiti algoritam.
Ograničenja
Nagleov algoritam je moguće koristiti samo s TCP-om. Ostali protokoli, uključujući UDP , ne podržavaju.
TCP aplikacije koje zahtijevaju brzu reakciju na mrežu, kao što su internetske telefonske pozive ili prve pucačke igre, možda neće dobro funkcionirati kada je omogućen Nagle. Zakašnjenja koja nastaju dok algoritam uzima dodatno vrijeme za skupljanje manjih komada podataka može izazvati vidljivo zastoj vizualno na zaslonu ili u digitalnom audio streamu. Ove aplikacije obično onemogućuju Nagle.
Ovaj je algoritam izvorno razvijen u vrijeme kada računalne mreže podržavaju mnogo manju propusnost nego danas. Gore opisani primjer temelji se na iskustvima John Naglea u Ford Aerospaceu početkom osamdesetih godina prošlog stoljeća, pri čemu su naglašavajući sporazumi o njihovoj sporoj, jako naprćenoj mreži s velikim udaljenostima imali dobar osjećaj. Sve je manje situacija u kojima mrežne aplikacije danas mogu imati koristi od njegovog algoritma.