Algorithme de nagle

Algorithme de nagle

Algorithme de Nagle

L'algorithme de Nagle est un algorithme important pour le fonctionnement de TCP défini par John Nagle dans la RFC 896 (RFC 896).

L'objectif de cet algorithme est d'améliorer l'efficacité du protocole en réduisant le nombre de paquets nécessaires à un transfert. En effet, les paquets TCP/IP étant dotés d'un en-tête de 40 octets, l'efficacité des plus petits paquets est extrêmement limitée : par exemple, 1 octet unique de données envoyé dans un paquet TCP, représente au final un paquet de 41 octets. Le rendement est alors de 2,4%. Cette situation a lieu par exemple lors de l'utilisation de Telnet, où chaque appui sur une touche entraîne généralement l'envoi immédiat du caractère correspondant. Beaucoup de données seront alors envoyées pour peu de données utiles. Si on envoie au contraire, par exemple, 20 caractères de données dans le même paquet, le rendement passe à 33%.

Pour optimiser les échanges de données et éviter ainsi la congestion éventuelle du réseau due à une telle situation, l'application de l'algorithme de Nagle va provoquer l'empilement des nouvelles données à envoyer dans un tampon (buffer) tant que les précédentes données envoyées n'ont pas été confirmées (acquittement) ou tant que ce buffer n'est pas plein. Cet algorithme évite donc que des paquets dont la charge utile est très faible ne soient envoyés à la file.

On peut résumer son fonctionnement ainsi :

  1. le premier octet reçu par TCP est envoyé immédiatement.
  2. Tant que l'accusé de réception n'a pas été reçu, les octets à envoyer sont stockés dans un tampon. Après l'acquittement du premier octet, les données du tampon sont envoyées en un seul paquet (si la taille du tampon atteint la taille maximale d'un paquet, l'envoi des données a lieu).
  3. On stocke de nouveau les données dans le tampon en attendant l'acquittement.

Généralement, les implémentations TCP permettent la désactivation de l'algorithme de Nagle (correspondant typiquement à l'option TCP_NODELAY).

Liens externes

  • Portail de l’informatique Portail de l’informatique
Ce document provient de « Algorithme de Nagle ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Algorithme de nagle de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать курсовую

Regardez d'autres dictionnaires:

  • Algorithme De Nagle — L algorithme de Nagle est un algorithme important pour le fonctionnement de TCP défini par John Nagle dans la RFC 896 (RFC 896). L objectif de cet algorithme est d améliorer l efficacité du protocole en réduisant le nombre de paquets nécessaires… …   Wikipédia en Français

  • Algorithme de Nagle — L algorithme de Nagle est un algorithme important pour le fonctionnement de TCP défini par John Nagle dans la RFC 896 (RFC 896). L objectif de cet algorithme est d améliorer l efficacité du protocole en réduisant le nombre de paquets nécessaires… …   Wikipédia en Français

  • Pipelining HTTP — Le pipelining HTTP est une technique consistant à combiner plusieurs requêtes HTTP dans une seule connexion TCP sans attendre les réponses correspondant à chaque requête. Le pipelining présente plusieurs avantages: amélioration importante du… …   Wikipédia en Français

  • Port TCP — Transmission Control Protocol Pour les articles homonymes, voir TCP. Pile de protocoles 7 • Application 6 • …   Wikipédia en Français

  • Tcp — Transmission Control Protocol Pour les articles homonymes, voir TCP. Pile de protocoles 7 • Application 6 • …   Wikipédia en Français

  • Transmission control protocol — Pour les articles homonymes, voir TCP. Pile de protocoles 7 • Application 6 • …   Wikipédia en Français

  • Gérard Sabah — (né le 5 janvier 1948 à Paris), est un chercheur français en intelligence artificielle. Sommaire 1 Formation et carrière 2 Domaines de recherche 3 Vie privée 4 …   Wikipédia en Français

  • Transmission Control Protocol — Pour les articles homonymes, voir TCP. Pile de protocoles 7.  Application 6.  …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”