Nagles algoritm är ett system som används för att förbättra effektiviteten i nätverk, framför allt Internet. Systemet innebär att man undviker att data skickas i onödigt små partier, vilket också ökar antalet skickade partier. Även om den har sina användningsområden, kan Nagles algoritm interagera dåligt med andra delar av nätverkskommunikation.
Skapad av en man vid namn John Nagle, fungerar Nagles algoritm med nätverk som använder TCP/IP-protokollen. Dessa är protokoll, eller ”regler” för hur ett nätverk överför data. Även om protokollen kan tillämpas på alla nätverk, är de oftast associerade med Internet.
Algoritmen behandlar hur data överförs i små bitar, eller ”paket”. Varje paket innehåller en del data plus rubrikinformation, vilket motsvarar avsändarens och mottagaradressen på ett fysiskt kuvert. Paketet innehåller också en kontrollsumma, en matematisk motsvarighet till att inkludera en packlista så att mottagaren vet att allt innehåll i paketet har kommit fram säkert.
Även om detta system normalt fungerar bra, kan det vara ineffektivt om databitarna är särskilt små. I extrema fall kan data i ett paket bara vara en byte, men huvudinformationen kommer att ta upp 40 byte oavsett storleken på datan. Detta motsvarar ungefär att skriva ett brev till någon, men sedan klippa upp det och skicka varje ord i ett separat kuvert. Eftersom meddelanden skickas binärt är det faktiskt ännu mer ineffektivt än så här. Förutom slöseri med bandbredd ökar detta också antalet paket som måste skickas, vilket ökar risken för att ett fel uppstår i överföringsprocessen.
Principen för Nagles algoritm är att efter att ha skickat ett paket kommer den sändande datorn att vänta på att en av två saker ska hända innan nästa paket skickas. Om den får en bekräftelse på att det sista paketet har tagits emot, kommer den att skicka data den har omedelbart, oavsett storlek. Annars väntar den tills den har ett ”fullt” paket att skicka. När detta händer kommer det att skicka hela paketet oavsett om det tidigare paketet har tagits emot eller inte.
I vissa situationer kan Nagles algoritm göra mer skada än nytta. Ett exempel är videospel online som är designade med antagandet att data kommer att skickas omedelbart. Om Nagles algoritm används kommer en del data att försenas tills ett helt paket är klart. Detta kan ha en märkbar effekt på hur lyhörd spelet känns för en spelare och kommer effektivt att sakta ner deras reaktionstider jämfört med andra spelare.