web-dev-qa-db-fra.com

HTTP 1.0 vs 1.1

Quelqu'un pourrait-il me donner un bref aperçu des différences entre HTTP 1.0 et HTTP 1.1? J'ai passé un peu de temps avec les deux RFC, mais je n'ai pas réussi à faire la différence entre eux. Wikipedia dit ceci:

HTTP/1.1 (1997-1999)

Version actuelle; connexions persistantes activées par défaut et fonctionne bien avec les mandataires. Prend également en charge le traitement en pipeline des demandes, permettant l'envoi simultané de plusieurs demandes, ce qui permet au serveur de préparer le workload et de transférer éventuellement les ressources demandées plus rapidement au client.

Mais cela ne signifie pas beaucoup pour moi. Je réalise que c'est un sujet un peu compliqué, alors je ne m'attends pas à une réponse complète, mais quelqu'un peut-il me donner un bref aperçu des différences à un niveau un peu inférieur?
Par cela, je veux dire que je cherche l’information dont j’aurais besoin pour connaître la mise en oeuvre d’un serveur ou d’une application HTTP. Je cherche surtout un coup de pouce dans la bonne direction afin de pouvoir le résoudre moi-même. 

226
Jason Baker

Support proxy et champ Host:

HTTP 1.1 a un en-tête d'hôte requis par spéc.

HTTP 1.0 n'exige pas officiellement un en-tête d'hôte, mais il n'est pas difficile d'en ajouter un et de nombreuses applications (mandataires) s'attendent à voir l'en-tête d'hôte, quelle que soit la version du protocole.

Exemple:

GET / HTTP/1.1
Host: www.blahblahblahblah.com

Cet en-tête est utile car il vous permet de router un message via des serveurs proxy et également parce que votre serveur Web peut distinguer différents sites sur le même serveur.

Donc, cela signifie que si blahblahlbah.com et helohelohelo.com désignent tous deux la même adresse IP. Votre serveur Web peut utiliser le champ Hôte pour distinguer le site souhaité par la machine cliente. 

Connexions persistantes:

HTTP 1.1 vous permet également d'avoir des connexions persistantes, ce qui signifie que vous pouvez avoir plusieurs demandes/réponses sur la même connexion HTTP. 

Dans HTTP 1.0, vous deviez ouvrir une nouvelle connexion pour chaque paire requête/réponse. Et après chaque réponse, la connexion serait fermée. Cela a entraîné de gros problèmes d’efficacité à cause de TCP Démarrage lent .

Méthode d'OPTIONS:

HTTP/1.1 introduit la méthode OPTIONS. Un client HTTP peut utiliser cette méthode pour déterminer les capacités du serveur HTTP. Il est principalement utilisé pour le partage de ressources d'origine croisée dans les applications Web.

Caching:

HTTP 1.0 prenait en charge la mise en cache via l'en-tête If-Modified-Since.

HTTP 1.1 développe beaucoup la prise en charge de la mise en cache en utilisant quelque chose appelé "balise d'entité". Si 2 ressources sont identiques, elles auront les mêmes balises d'entité. 

HTTP 1.1 ajoute également les en-têtes conditionnels If-Unmodified-Since, If-Match, If-None-Match. 

Il existe également d'autres ajouts relatifs à la mise en cache, tels que l'en-tête Cache-Control. 

100 État actuel:

Il existe un nouveau code de retour dans HTTP/1.1 100 Continuer. Cela empêche un client d'envoyer une requête volumineuse s'il n'est même pas sûr que le serveur puisse traiter la requête ou s'il est autorisé à la traiter. Dans ce cas, le client envoie uniquement les en-têtes, et le serveur dit au client Continuer, allez-y avec le corps. 

Beaucoup plus:

  • Authentification Digest et authentification proxy
  • Nouveaux codes d'état supplémentaires
  • Encodage de transfert en bloc
  • En-tête de connexion
  • Prise en charge améliorée de la compression
  • Beaucoup plus. 
321
Brian R. Bondy

 HTTP 1.0 (1994)

  • Il est toujours utilisé
  • Peut être utilisé par un client qui ne peut pas gérer les réponses de serveur chunked .__ (ou compressé)

 HTTP 1.1 (1996-2015)

  • Formalise de nombreuses extensions à la version 1.0
  • Prend en charge les connexions persistantes et en pipeline
  • Prend en charge les transferts en bloc, la compression/décompression
  • Prend en charge l'hébergement virtuel (un serveur avec une seule adresse IP hébergeant plusieurs domaines)
  • Prend en charge plusieurs langues
  • Prend en charge les transferts d'octets; utile pour la reprise de données interrompues transferts

HTTP 1.1 est une amélioration de HTTP 1.0. La liste suivante répertorie les quatre améliorations majeures :

  1. Utilisation efficace des adresses IP, en permettant à plusieurs domaines d’être Desservis à partir d’une seule adresse IP.

  2. Réponse plus rapide, en permettant à un navigateur Web d'envoyer plusieurs demandes Via une seule connexion persistante.

  3. Réponse plus rapide pour les pages générées dynamiquement, grâce à la prise en charge du codage Chunked, qui permet l'envoi d'une réponse avant que sa longueur totale ne soit connue.
  4. Réponse plus rapide et économies de bande passante importantes, en ajoutant le cachesupport.
11
i_th

Pour les applications triviales (par exemple, récupérer sporadiquement une valeur de température d'un thermomètre Web), HTTP 1.0 convient à la fois à un client et à un serveur. Vous pouvez écrire un client ou un serveur HTTP 1.0 basé sur un socket bare-bones en environ 20 lignes de code.

Pour des scénarios plus complexes, HTTP 1.1 est la voie à suivre. Attendez-vous à une augmentation de 3 à 5 fois la taille du code pour gérer les subtilités du protocole HTTP 1.1 plus complexe. La complexité vient principalement, car dans HTTP 1.1, vous devrez créer, analyser et répondre à différents en-têtes. Vous pouvez protéger votre application de cette complexité en demandant à un client d'utiliser une bibliothèque HTTP ou à un serveur d'utiliser un serveur d'applications Web.

8
Diomidis Spinellis

Un problème clé de compatibilité est la prise en charge de connexions persistantes . J'ai récemment travaillé sur un serveur qui "supportait" HTTP/1.1, mais n'a pas réussi à fermer la connexion lorsqu'un client a envoyé une demande HTTP/1.0. Lors de l'écriture d'un serveur prenant en charge HTTP/1.1, assurez-vous qu'il fonctionne également avec les clients HTTP/1.0 uniquement.

7
Troy J. Farrell

L'une des premières différences que je peux rappeler de mémoire est l'existence de plusieurs domaines exécutés sur le même serveur, la récupération partielle des ressources, ce qui vous permet de récupérer et d'accélérer le téléchargement d'une ressource (c'est ce que font presque tous les accélérateurs de téléchargement).

Si vous souhaitez développer une application telle qu'un site Web ou similaire, vous n'avez pas à vous soucier des différences, mais vous devriez / connaître au moins la différence entre les verbes GET et POST.

Maintenant, si vous voulez développer un navigateur, alors oui, vous devrez connaître le protocole complet ainsi que si vous essayez de développer un serveur HTTP.

Si vous êtes seulement intéressé à connaître le protocole HTTP, je vous recommande de commencer par HTTP/1.1 au lieu de 1.0.

5
Leandro López

HTTP 1.1 est la dernière version de Hypertext Transfer Protocol, le protocole d'application Web qui s'exécute sur la suite de protocoles TCP/IP d'Internet. Par rapport à HTTP 1.0, HTTP 1.1 fournit une livraison de pages Web plus rapide que le HTTP d'origine et réduit le trafic Web.

Trafic Web Exemple: par exemple, si vous accédez à un serveur. En même temps, de nombreux utilisateurs accèdent au serveur pour les données. Il y a alors une chance d'accrocher le serveur. Ceci est le trafic Web.

1
Krishna Mohan

Comparé à 1.0, 1.1 réduit le trafic Web

0
Ram MVS