Alianwebserver.com

Retour à Internet en 10 pointsAlian

Le protocole HTTP

  1. Présentation
  2. Fonctionnement
    1. Connexion
    2. Requêtes
    3. Réponse
    4. Déconnexion
  3. Problèmes liés à ce protocole
  4. La version 1.1 fait toute la différence
    1. Sécurité
    2. Gestion des caches
    3. Nouvelles fonctionnalités
  5. Références

1 - Présentation

Le protocole HTTP HTTP - HyperText Transfert Protocol - fondé par Tim Berners Lee, développé et utilisé par le WWW à partir de 1990.
Le protocole HTTP Protocole adapté au transfert d'information multimédia.
Le protocole HTTP Léger et rapide, à coût d'exploitation très bas.
Le protocole HTTP Introduit la notion d'hypertexte, c'est à dire que l'information de navigation est prise en compte dans le document, mais ne prend pas en charge le procédé complet de navigation.

Le protocole HTTP Le protocole HTTP sert à la communication entre le client et le serveur. Il s'agit en fait d'un dérivé du protocole FTP. Lors d'une communication, le logiciel client se connecte en TCP sur le serveur et télécharge en FTP le document désigné. Il coupe aussitôt la communication avec le serveur. S'il y a dans le document HTML plusieurs composants (comme des images, la plupart du temps), ce processus se répète autant de fois qu'il y a d'éléments constituant la page.

Le protocole HTTP L'avantage de ce processus est de limiter au maximum le temps d'occupation du serveur, de façon qu'il n'y ait pas d'engorgement de ce dernier.

2 - Fonctionnement

Connexion

La connexion se fait, à travers une connexion TCP-IP, en mentionnant le nom du domaine ou le numéro IP, ainsi le numéro de port donné dans l'adresse. Dans le cas où ce dernier n'est pas spécifié, le nombre 80 est mis par défaut.

Si HTTP fonctionne le plus souvent sous TCP, il peut tout aussi bien tourner sous n'importe quel service orienté connexion. Les requêtes sont mises en forme par le navigateur, puis transmises au protocole HTTP.

Requêtes

Le client envoie une requête de document qui consiste en une ligne écrite en caractères ASCII se terminant par "CR LF" (carriage return, line feed).

Cette requête dans le cas le plus simple est du type "GET", un espace et l'adresse du document, en oubliant de mentionner l'hôte et le port.

Sinon la syntaxe générale d'une requête est du type :

Ligne_requete (En-tête_requête | En-tête_entité ) ;
CRLF
[ Corps-entité ]

Où :
Ligne_requete = Méthode SP URL SP Version-HTTP CRLF

En-tête_requête =

Authorization

Document protégé

| From

Identifiant physique (adresse mail)

| If-modified-since

Date dernière modification à ne pas dépasser

| Referer

Page d'origine

| User-agent

Interface utilisée


En-tête_entité =

Allow

Méthode supportée

| Content-Encoding

Nature de l'encodage

| Content-Length

Longueur

| Content-Type

Type du document

| Expires

Date de validité

| Last-Modified

Notion de cache

| champ_en-tête

 

Réponse

Le format de réponse rassemble sensiblement les mêmes champs. Suivant le client ou serveur certaines variables sont utilisées. Le message débute par la version du protocole utilisé par le serveur, ainsi qu'un code résultat et éventuellement un message.

Ce premier flux d'informations est constitué de caractères ASCII. Ceci, suivi par une série d'entêtes dont les plus importants sont "type du contenu", qui décrit le type de l'objet qui est donné, et "longueur du contenu", qui indique la longueur du document. Les entêtes se terminent par des lignes vides.

Syntaxe :

Ligne_etat (En_tete_reponse | En_tete_entite)
CRLF
Corps_entite

Où :

Ligne_etat = Version SP Code_Etat SP Raison CRLF

En_tete_reponse = Location | Server | WWW-Authentificate

En_tete_entite défini lors de la requête

Code_Etat :Le premier chiffre du code d'état indique la classe générale de la réponse. Les deux derniers n'ont pas de rôle de classification particulier. Le premier chiffre peut prendre 5 valeurs :
Code Classe Usage

1xx

Information

Non utilisé, pour usage futur

2xx

Succès

L'action a été correctement reçue, interprétée, et exécutée

3xx

Redirection

Une décision supplémentaire doit être prise pour terminer la requête

4xx

Erreur Client

La requête présente une erreur de forme et ne peut être satisfaite

5xx

Erreur Serveur

La requête est valide, mais le serveur ne peut la satisfaire

Le serveur peut maintenant envoyer n'importes quelles données. Après l'envoi du document, le serveur coupe la connexion.

Déconnexion

La connexion TCP-IP est coupée par le serveur quand tout le document a été transmis.

Le client peut avorter le transfert en coupant lui-même la connexion avant la fin du transfert, dans ce cas le serveur n'enregistrera aucune erreur.

Le serveur n'a besoin de stocker aucune information concernant la requête. Cependant le serveur enregistre les entêtes HTTP pour des statistiques éventuelles, ou le déboggage. Attention ces informations tombent sous la loi "informatique et liberté"

Voici une ligne type de fichier LOG :

# Exemple 1 (IIS) :

192.168.100.70, -, 24/01/98, 01:34:46, W3SVC, ALIAN, 192.168.100.70,
89789, 230, 5630, 200, 0, GET, /alian/bienvenue.htm, -,

## Exemple 2 (Netscape Entreprise):

139.160.213.93 - - [18/Mar/1998:08:48:43 +0100] "GET /directagence/images/carre_bleu.gif HTTP/1.0" 200 307

3 - Problèmes liés à ce protocole

Il semble que HTTP passe plus de temps à attendre qu'à transmettre. Avant de voir le pourquoi de cette attente, parlons de quelques unités de mesure :

Le protocole HTTP 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.

Le protocole HTTP Une autre importante unité de mesure est la largeur de bande de la connexion. Elle mesure le débit de bits par seconde. Il est possible d'établir une borne inférieure pour la largeur de bande en observant le temps que prend l'envoi d'un paquet.

Parlons du phénomène Slow Start. C'est un système qui ouvre une seconde fenêtre appelée "Congestion Window", pour les "nack". A la connexion, chaque expéditeur n'a le droit d'envoyer qu'un seul "nack" à la fois. A chaque fois que la réception d'un segment est confirmée par un "ack", la "Congestion Window" est ouverte, sinon, en cas de perte, elle se ferme.

De quelle façon le protocole HTTP est ralenti par le Slow Start

HTTP est touché par slow start du côté du client et celui du serveur. Parce que les entêtes de HTTP sont plus grandes que le MSS (maximun segment size), le client TCP a besoin de 2 segments. Vu que la "Congestion Window" est initialisée à 1, on a besoin d'attendre le premier segment pour envoyer le "ack" avant de pouvoir le second. Ceci ajoute an RTT supplémentaire au temps minimum du transfert. De plus, à partir du moment où la plupart des documents dépassent 1K, le slow Start du serveur va typiquement ajouter au moins un RTT au total de la transaction.

Le temps de latence et la largeur de bande sont les clés de la performance de ce protocole. Le temps de latence, mesuré par le RTT, est une mesure de coût fixe de la transaction et ne change pas en fonction de la taille du document. La largeur de bande, comme dit précédemment mesure le temps qu'il faut pour envoyer les données.

De plus avec la version HTTP/1.0, pour une page contenant 42 images, il va y avoir 42 connections TCP... La version 1.1 introduit la notion de "connections permanentes".

4 - La version 1.1 fait toute la différence

Les deux grosses différences de cette version sont la sécurité et la gestion plus adaptée des caches.

Sécurité

Dans un premier temps, la sécurité était mise en place au niveau du serveur. Puis les offres sont arrivées avec la demande :

En effet le protocole Secure-HTTP (S-HTTP) assure la sûreté de la transmission. Un message S-HTTP est composé d'une requête ou d'une ligne de statut (comme dans HTTP) suivi d'une d'en-tête de type RFC-822 ainsi que d'un résumé du contenu. Une fois le contenu décodé, il peut s'agir d'un autre message S-HTTP, d'un message HTTP ou de simples données. Implémenté dans HTTP/1.0. Développé par des professionels du commerce électronique .

Certains serveurs implémentent le protocole SSL par dessus le protocole HTTP. Solution Netscape.

Deux formes de protection sont mises en place dans HTTP/1.1:

Gestion des caches

DOC POWERPOINT

Nouvelles fonctionnalités

5 - Références