El algoritmo de Nagle es un sistema usado para mejorar la eficiencia de las redes, sobre todo las de Internet. El sistema intenta evitar que los datos sean enviados en lotes demasiado pequeños, lo cual aumenta el número de lotes. Mientras está en uso, este algoritmo no suele interactuar demasiado con otros elementos de la red de comunicaciones. Funciona con redes que usan protocolos TCP/IP. Estos protocolos le dicen a la red como transmitir los datos. Mientras que se pueden aplicar a cualquier red, suelen asociarse directamente a Internet.
Como se ha dicho, el algoritmo tiene que ver con la manera en que los datos son enviados en pequeños grupos o paquetes. Cada paquetes contiene algunos datos y una cabecera de información, la cual contienen a su vez la dirección de origen y destino. Sería algo parecido a lo que se pone en un sobre que se envía por correo. El paquete también contiene un apartado de chequeo, que es básicamente una verificación para asegurar que todo llega al destinatario sin problemas y con toda la información completada.
Mientras que este sistema suele funcionar bastante bien, puede no ser tan eficaz si los grupos de datos son excesivamente pequeños. En algunos casos, los datos en los paquetes pueden ser solo de un byte, pero la cabecera tendrá cuarenta bytes independientemente del tamaño de los datos. Esto es como si escribieras una carta a alguien y luego la cortaras enviando cada palabra en un sobre separado.
De hecho, al ser los mensajes binarios, es incluso más ineficiente que todo esto. Aparte de consumir ancho de banda, esto aumenta también el número de paquetes que tienen que ser enviados. Esto aumenta las probabilidades de que se produzcan errores en el proceso del envío de datos. El principio del algoritmo de Nagle es que después de enviar un paquete, el ordenador que hace el envío esperara a que ocurran una o dos cosas antes de enviar el siguiente paquete.
Si recibe confirmación del último paquete que ha recibido, enviará los datos que tiene de forma inmediata e independientemente del tamaño. Si no es así, esperará hasta tener un paquete “completo” para ser enviado. Una vez que esto ocurra enviara el paquete completo se haya recibido o no el paquete anterior.
En algunas situaciones, el algoritmo de Nagle puede hacer más mal que bien. Por ejemplo, en ciertos videojuegos que han sido diseñados para que los datos sean transmitidos de inmediato, esto puede suponer un problema. Si el algoritmo es usado, algunos datos se retrasarán hasta que haya un paquete completo. Esto puede suponer un efecto negativo en el juego y afectar a la experiencia de los jugadores. El videojuego irá más lento, lo cual siempre es algo indeseable en este tipo de programas.