2.1.3 HTTP 1.0 versus HTTP 1.1

Le grand nombre d'objets constituant une page Web représente un changement de l'environnement pour lequel le protocole HTTP1.0 a été conçu. Pour afficher la page Web, un navigateur doit faire plusieurs requêtes au serveur, une requête pour chaque objet intégré dans la page (image, script, etc.). En conséquence, le mécanisme de gestion de ces connexions est très important pour la performance d'un navigateur Web.

Avec le protocole HTTP/1.0, pour chaque nouvelle requête le client réalise une nouvelle connexion TCP avec le serveur. Mais pour établir une connexion TCP, un nombre de paquets supplémentaires est échangé, ce qui prend un temps conséquent. Ce problème est connu sous le nom de "démarrage lent HTTP" (HTTP slow-start). Si pour chaque requête on doit attendre que la connexion TCP se réalise, les performances de transfert seront réduites d'une façon importante.

message URL fig5.gif
Figure 5 Une transaction HTTP1.0: pour demander un objet (gauche) ou plusieurs objets (droite)

L'analyse d'une transaction HTTP1.0 en termes de temps de transfert :

durée action
1 RTT2 ouverture d'une connexion TCP (l'équivalent de la commande TCP OPEN)
0.5 RTT l'envoi de la requête
0.5 RTT commencement du transfert du fichier réponse
Ftrans transmission du fichier
2 RTT + Ftrans = le temps nécessaire pour les transfert d'un fichier avec HTTP1.0

Pour le transfert de plusieurs objets F1, ..., Fn avec le protocole HTTP1.0, le temps total de transfert est :

message URL form1.gif

Comme RTT peut prendre des valeurs importantes, le protocole HTTP/1.0 gère d'une manière inadéquate les connexions Web client serveur en ouvrant chaque fois une nouvelle connexion HTTP.

La version 1.1 du protocole HTTP permet la réutilisation d'une connexion TCP déjà ouverte pour les autres requêtes adressées au même serveur (connexion persistante). L'utilisation des connexions persistantes a comme effet un important gain de performance, permettant le transfert beaucoup plus rapide de plusieurs objets sur la même connexion TCP ([Nielsen97]).

message URL fig6.gif
Figure 6 Une transaction HTTP1.1 pour le transfère de plusieurs objets (connexion persistante)

Pour le transfert de plusieurs objets F1, ..., Fn avec le protocole HTTP1.1 le temps de transfert est :

message URL form2.gif

Par rapport à HTTP1.0 on obtient un gain de (1.5*n-1)*RTT.

Une autre optimisation apportée par HTTP/1.1 au transfert des données sur le Web consiste en la possibilité d'utiliser un mécanisme de pipelining sur les connexions persistantes. Cela signifie qu'un client peut démarrer plusieurs requêtes sans attendre chaque réponse, afin de mieux utiliser une connexion TCP (un temps de latence global plus court). La seule restriction est que l'ordonnancement des réponses doit être le même que pour les requêtes envoyées.

message URL fig7.gif
Figure 7 Le mécanisme "pipeline" autorisé dans HTTP/1.1
Notes
2.

Le Round Trip Time (RTT ) est le temps que prend l'envoi d'un paquet d'un bout de la connexion à l'autre, plus le retour. Le RTT peut prendre 70 millisecondes ou plus.