Appendix A. HTTP Version History (Historique des Versions HTTP)
La politique de versionnage HTTP n'a pas changé depuis qu'elle a été introduite pour la première fois en 1990 dans le cadre de l'initiative d'information globale World-Wide Web. Cette politique de version vise à permettre à l'expéditeur d'indiquer le format d'un message et sa capacité à comprendre et participer à des communications ultérieures.
Le développement de HTTP/1.1 a pris plus de 10 ans, incluant deux spécifications différentes sur la voie de normalisation ([RFC2068] et [RFC2616]), ainsi que des décennies d'expérience en matière d'implémentation et de déploiement.
A.1. HTTP/0.9
HTTP/0.9 était la première implémentation du protocole HTTP sur le World-Wide Web. C'était un protocole simple où une requête consistait en une seule ligne contenant uniquement la méthode et l'URI cible.
GET /hello.txt
A.1.1. HTTP/1.0
HTTP/1.0 a documenté le format de message HTTP commun. Il a ajouté un numéro de version de protocole, un code de statut, et une section d'en-têtes pour les requêtes et les réponses.
La spécification HTTP/1.0 est définie dans [RFC1945].
A.1.2. HTTP/1.1
HTTP/1.1 est un raffinement de HTTP/1.0, comprenant des descriptions détaillées des méthodes de requête, des codes de statut de réponse et des champs d'en-tête.
Les principales améliorations incluent:
- Connexions persistantes: Les connexions sont persistantes par défaut
- Codage de transfert par chunks: Permet l'envoi dynamique du corps du message
- En-tête Host: Support de l'hébergement virtuel
- Pipeline: Permet l'envoi de plusieurs requêtes en parallèle
- Contrôle du cache: Mécanismes de mise en cache plus sophistiqués
HTTP/1.1 a été défini pour la première fois dans [RFC2068] (janvier 1997), puis mis à jour dans [RFC2616] (juin 1999).
A.2. Changes from RFC 2616 (Changements par rapport à RFC 2616)
Ce document ([RFC7230]) remplace le précédent [RFC2616] et introduit de nombreuses clarifications et améliorations:
A.2.1. Architecture (Architecture)
- Clarification des rôles des intermédiaires (proxys, passerelles, tunnels)
- Amélioration des définitions des agents utilisateurs et des serveurs d'origine
A.2.2. Message Syntax and Routing (Syntaxe et Routage des Messages)
- Clarification du tramage des messages
- Clarification de l'interaction entre Transfer-Encoding et Content-Length
- Description détaillée du codage de transfert par chunks
A.2.3. Connection Management (Gestion des Connexions)
- Clarification du comportement des connexions persistantes
- Documentation des limitations du pipeline
- Description détaillée de la réutilisation et de la fermeture des connexions
A.2.4. Security Considerations (Considérations de Sécurité)
- Documentation des attaques de contrebande de requêtes
- Documentation des attaques de division de réponse
- Ajout de conseils de sécurité concernant la longueur des éléments de protocole