Algoritmul lui Nagle este un sistem folosit pentru a îmbunătăți eficiența rețelelor, în special a internetului. Sistemul presupune evitarea transmiterii datelor în loturi inutil de mici, ceea ce crește și numărul de loturi trimise. Deși are utilizările sale, algoritmul lui Nagle poate interacționa prost cu alte elemente ale comunicațiilor în rețea.
Creat de un bărbat pe nume John Nagle, algoritmul lui Nagle funcționează cu rețele care utilizează protocoalele TCP/IP. Acestea sunt protocoale sau „reguli” pentru modul în care o rețea transmite date. În timp ce protocoalele se pot aplica oricărei rețele, ele sunt cel mai frecvent asociate cu Internetul.
Algoritmul se ocupă de modul în care datele sunt transmise în bucăți mici, sau „pachete”. Fiecare pachet conține câteva date plus informații de antet, care este echivalentul adresei expeditorului și destinatarului de pe un plic fizic. Pachetul conține, de asemenea, o sumă de control, un echivalent matematic cu includerea unei liste de ambalare, astfel încât destinatarul să știe că tot conținutul pachetului a ajuns în siguranță.
În timp ce acest sistem funcționează bine în mod normal, poate fi ineficient dacă bucățile de date sunt deosebit de mici. În cazuri extreme, datele dintr-un pachet pot avea doar un octet, dar informațiile din antet vor ocupa 40 de octeți, indiferent de dimensiunea datelor. Acest lucru este aproximativ echivalent cu a scrie o scrisoare cuiva, dar apoi a o tăia și a trimite fiecare cuvânt într-un plic separat. De fapt, pentru că mesajele sunt trimise în binar, este și mai ineficient decât acesta. Pe lângă risipa de lățime de bandă, acest lucru crește și numărul de pachete care trebuie trimise, ceea ce crește șansa de apariție a unei erori în procesul de transmisie.
Principiul algoritmului lui Nagle este că, după trimiterea unui pachet, computerul care transmite va aștepta ca unul dintre cele două lucruri să se întâmple înainte de a trimite următorul pachet. Dacă primește confirmarea că ultimul pachet a fost primit, va trimite imediat datele pe care le are, indiferent de dimensiunea acestuia. În caz contrar, va aștepta până când va avea un pachet „plin” de trimis. Odată ce se întâmplă acest lucru, va trimite pachetul complet indiferent dacă pachetul anterior a fost primit sau nu.
În unele situații, algoritmul lui Nagle poate face mai mult rău decât bine. Un exemplu este cel al jocurilor video online care sunt concepute cu presupunerea că datele vor fi trimise imediat. Dacă se folosește algoritmul lui Nagle, unele date vor fi amânate până când un pachet complet este gata. Acest lucru poate avea un efect vizibil asupra modului de receptivitate al jocului față de un jucător și îi va încetini efectiv timpii de reacție în comparație cu alți jucători.