Looking for http Answers? Try Ask4KnowledgeBase
Looking for http Keywords? Try Ask4Keywords

HTTPDémarrer avec HTTP


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

Les clients et serveurs HTTP envoient des requêtes et des réponses HTTP, respectivement

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 / 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 .

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.

- Mark Nottingham, président du groupe de travail HTTP

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:

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.