El algoritmo de Nagle es un sistema que se utiliza para mejorar la eficiencia de las redes, sobre todo Internet. El sistema implica evitar el envío de datos en lotes innecesariamente pequeños, lo que también aumenta el número de lotes enviados. Si bien tiene sus usos, el algoritmo de Nagle puede interactuar mal con otros elementos de las comunicaciones de red.
Creado por un hombre llamado John Nagle, el algoritmo de Nagle funciona con redes que utilizan los protocolos TCP / IP. Estos son protocolos o «reglas» sobre cómo una red transmite datos. Si bien los protocolos pueden aplicarse a cualquier red, se asocian más comúnmente con Internet.
El algoritmo se ocupa de la forma en que se transmiten los datos en pequeños fragmentos o «paquetes». Cada paquete contiene algunos datos más la información del encabezado, que es el equivalente a la dirección del remitente y del destinatario en un sobre físico. El paquete también contiene una suma de verificación, un equivalente matemático a incluir una lista de empaque para que el destinatario sepa que todo el contenido del paquete ha llegado de manera segura.
Si bien este sistema normalmente funciona bien, puede resultar ineficaz si los fragmentos de datos son particularmente pequeños. En casos extremos, los datos de un paquete pueden tener solo un byte, pero la información del encabezado ocupará 40 bytes independientemente del tamaño de los datos. Esto es aproximadamente equivalente a escribir una carta a alguien, pero luego cortarla y enviar cada palabra en un sobre separado. De hecho, debido a que los mensajes se envían en binario, es incluso más ineficiente que esto. Además del desperdicio de ancho de banda, esto también aumenta el número de paquetes que deben enviarse, lo que aumenta la posibilidad de que ocurra un error en el proceso de transmisión.
El principio del algoritmo de Nagle es que después de enviar un paquete, la computadora transmisora esperará a que suceda una de dos cosas antes de enviar el siguiente paquete. Si recibe la confirmación de que se ha recibido el último paquete, enviará los datos que tenga inmediatamente, independientemente de su tamaño. De lo contrario, esperará hasta que tenga un paquete «completo» para enviar. Una vez que esto suceda, enviará el paquete completo independientemente de que se haya recibido o no el paquete anterior.
En algunas situaciones, el algoritmo de Nagle puede hacer más daño que bien. Un ejemplo es el de los videojuegos en línea que se diseñan asumiendo que los datos se enviarán de inmediato. Si se utiliza el algoritmo de Nagle, algunos datos se retrasarán hasta que esté listo un paquete completo. Esto puede tener un efecto notable en la respuesta del juego a un jugador y ralentizará efectivamente sus tiempos de reacción en comparación con otros jugadores.