HTTP Tutoriel
Démarrer avec HTTP
Recherche…
Remarques
HTTP ( Hypertext Transfer Protocol ) utilise un modèle de requête client / serveur-réponse. HTTP est un protocole sans état, ce qui signifie qu'il ne nécessite pas que le serveur conserve des informations ou un statut sur chaque utilisateur pour la durée de plusieurs requêtes. Cependant, pour des raisons de performances et pour éviter les problèmes de latence de connexion TCP, des techniques telles que les connexions persistantes, parallèles ou en pipeline peuvent être utilisées.
Versions
Version | Remarques) | Date de sortie estimée |
---|---|---|
HTTP / 0.9 | "Tel qu'implémenté" | 1991-01-01 |
HTTP / 1.0 | Première version de HTTP / 1.0, dernière version qui n'a pas été intégrée à une RFC | 1992-01-01 |
HTTP / 1.0 r1 | Premier RFC officiel pour HTTP | 1996-05-01 |
HTTP / 1.1 | Améliorations dans la gestion des connexions, prise en charge des hôtes virtuels basés sur des noms | 1997-01-01 |
HTTP / 1.1 r1 | Utilisation de mots clés ambigus nettoyée, problèmes éventuels liés au cadrage des messages | 1999-06-01 |
HTTP / 1.1 r2 | Refonte majeure | 2014-06-01 |
HTTP / 2 | Première spécification pour HTTP / 2 | 2015-05-01 |
Requêtes HTTP et réponses
HTTP décrit comment un client HTTP, tel qu'un navigateur Web, envoie une requête HTTP via un réseau à un serveur HTTP, qui envoie ensuite une réponse HTTP au client.
La requête HTTP est généralement une demande de ressource en ligne, telle qu'une page Web ou une image, mais peut également inclure des informations supplémentaires, telles que des données saisies dans un formulaire. La réponse HTTP est généralement une représentation d'une ressource en ligne, telle qu'une page Web ou une image.
HTTP / 1.0
HTTP / 1.0 a été décrit dans la RFC 1945 .
HTTP / 1.0 ne dispose pas de certaines fonctionnalités requises de facto sur le Web, telles que l'en-tête Host
pour les hôtes virtuels.
Cependant, les clients et serveurs HTTP déclarent parfois toujours utiliser HTTP / 1.0 s'ils ont une implémentation incomplète du protocole HTTP / 1.1 (par exemple sans codage de transfert ou de pipeline), ou la compatibilité est plus importante que les performances (par exemple lors de la connexion au proxy local). les serveurs).
GET / HTTP/1.0
User-Agent: example/1
HTTP/1.0 200 OK
Content-Type: text/plain
Hello
HTTP / 1.1
HTTP / 1.1 a été initialement spécifié en 1999 dans RFC 2616 (protocole) et RFC 2617 (authentification), mais ces documents sont désormais obsolètes et ne doivent pas être utilisés comme référence:
N'utilisez pas RFC2616. Supprimez-le de vos disques durs, de vos signets et gravez (ou recyclez de manière responsable) toutes les copies imprimées.
La spécification à jour de HTTP / 1.1, qui correspond à la manière dont HTTP est implémenté aujourd'hui, se trouve dans les nouveaux RFC 723x:
- RFC 7230: Syntaxe et routage des messages
- RFC 7231: Sémantique et contenu
- RFC 7232: demandes conditionnelles
- RFC 7233: demandes de plage
- RFC 7234: mise en cache
- RFC 7235: authentification
HTTP / 1.1 ajouté, entre autres fonctionnalités:
- le codage de transfert en blocs, qui permet aux serveurs d'envoyer des réponses de taille inconnue de manière fiable,
- les connexions TCP / IP persistantes (qui étaient des extensions non standard dans HTTP / 1.0),
- les demandes de plage utilisées pour reprendre les téléchargements,
- contrôle du cache.
HTTP / 1.1 a tenté d'introduire le traitement par pipeline, ce qui a permis aux clients HTTP de réduire le temps de latence entre la demande et la réponse en envoyant plusieurs requêtes à la fois sans attendre de réponses. Malheureusement, cette fonctionnalité n’a jamais été correctement implémentée dans certains proxies, ce qui a provoqué la perte ou le réaménagement des connexions.
GET / HTTP/1.0
User-Agent: example/1
Host: example.com
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 6
Connection: close
Hello
HTTP / 2
HTTP / 2 ( RFC 7540 ) a modifié le format «on the wire» de HTTP à partir d'une simple requête textuelle et des en-têtes de réponse au format de données binaires envoyé dans des trames. HTTP / 2 prend en charge la compression des en-têtes ( HPACK ).
Cela réduisait le temps système de requêtes et permettait de recevoir plusieurs réponses simultanément sur une seule connexion TCP / IP.
Malgré de gros changements dans le format des données, HTTP / 2 utilise toujours les en-têtes HTTP et les requêtes et réponses peuvent être traduites avec précision entre HTTP / 1.1 et 2.
HTTP / 0.9
La première version de HTTP qui a vu le jour est la 0.9, souvent appelée " HTTP as Implemented ". Une description courante de 0.9 est "un sous-ensemble du protocole HTTP [c'est-à-dire 1.0]". Cependant, cela ne permet pas d'illustrer la disparité des capacités entre 0,9 et 1,0.
Ni les requêtes ni les réponses dans les en-têtes de fonctionnalités 0.9. Les demandes consistent en une seule ligne de GET
terminée par CRLF, suivie d'un espace, suivie de l'URL de ressource demandée. Les réponses doivent être un document HTML unique. La fin de ce document est marquée par la suppression de la connexion côté serveur. Il n'y a pas de facilités pour indiquer le succès ou l'échec d'une opération. La seule propriété interactive est la chaîne de recherche qui est étroitement liée à la <isindex>
HTML <isindex>
.
L'utilisation de HTTP / 0.9 est aujourd'hui exceptionnellement rare. Il est parfois vu sur les systèmes embarqués comme une alternative à TFTP .