Question

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 ainsi l’envoi simultané de plusieurs demandes, permettant ainsi au serveur de préparer le workload et éventuellement de transférer plus rapidement les ressources demandées 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 à connaître pour mettre en œuvre un serveur ou une application HTTP. Je suis surtout à la recherche d'un coup de pouce dans la bonne direction pour pouvoir le résoudre moi-même.

Était-ce utile?

La solution

Prise en charge du proxy et champ Host:

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

HTTP 1.0 ne requiert pas officiellement d’en-tête d’hôte, mais il n’est pas inutile 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, mais également parce que votre serveur Web peut distinguer différents sites sur le même serveur.

Cela signifie donc que si blahblahlbah.com et helohelohelo.com pointent tous deux sur 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 plus d’une demande / réponse 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 du démarrage lent de TCP .

méthode 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.

Mise en cache:

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

HTTP 1.1 développe beaucoup le support 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 Continu:

Il existe un nouveau code de retour dans HTTP / 1.1 100 Continuer. Cela permet d'empêcher 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 encore:

  • 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
  • Bien plus encore.

Autres conseils

& # 61550; HTTP 1.0 (1994)

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

& # 61550; HTTP 1.1 (1996-2015)

  • formalise de nombreuses extensions de la version 1.0
  • Prend en charge les connexions persistantes et en pipeline
  • Prend en charge les transferts groupés, 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 reprendre des 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 servi à partir d'une seule adresse IP.

  2. Réponse plus rapide, en permettant à un navigateur Web d'envoyer plusieurs requêtes via une seule connexion persistante.

  3. Réponse plus rapide pour les pages générées dynamiquement, grâce à la prise en charge de codage en bloc, ce qui permet d’envoyer une réponse avant sa la longueur totale est connue.
  4. Réponse plus rapide et grande économie de bande passante, en ajoutant du cache soutien.

Pour les applications simples (par exemple, récupérer sporadiquement une valeur de température à partir 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 la taille du code de 3 à 5 fois 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.

Un problème clé de compatibilité est le support des connexions persistantes . J'ai récemment travaillé sur un serveur "pris en charge". 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.

L'une des premières différences que je puisse rappeler de haut en bas réside dans le fait que plusieurs domaines s'exécutent sur le même serveur. La récupération partielle des ressources vous permet de récupérer et d'accélérer le téléchargement d'une ressource (c'est ce que presque chaque accélérateur de téléchargement fait).

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 la différence entre GET . et POST au moins.

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 souhaitez uniquement connaître le protocole HTTP, je vous recommande de commencer par HTTP / 1.1 au lieu de 1.0.

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. C’est du trafic Web.

Par rapport à 1.0, 1.1 réduit le trafic Web

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top