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é du 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; les connexions persistantes activées par défaut et fonctionnent bien avec les proxys. Prend également en charge le traitement en pipeline des demandes, ce qui permet d’envoyer plusieurs demandes en même temps, ce qui permet au serveur de se préparer à la charge de travail et de transférer potentiellement les ressources demandées plus rapidement au client.

Mais ça ne veut pas dire grand chose pour moi. Je me rends compte que c’est un sujet quelque 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 plus bas?
Je veux dire par là que je recherche les informations dont j’ai besoin pour implémenter un serveur ou une application HTTP. Je cherche surtout un coup de pouce dans la bonne direction pour que je puisse me débrouiller tout seul.

    Proxy support et le champ Host:

    HTTP 1.1 a un en-tête Host requirejs par spécification.

    HTTP 1.0 n’exige pas officiellement d’en-tête Host, mais cela ne fait pas de mal d’en append, et de nombreuses applications (proxy) s’attendent à voir l’en-tête Host indépendamment de la version du protocole.

    Exemple:

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

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

    Donc, si vous avez blahblahlbah.com et helohelohelo.com sur le même 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 requêtes / réponses sur la même connexion HTTP.

    Dans HTTP 1.0, vous deviez ouvrir une nouvelle connexion pour chaque paire demande / réponse. Et après chaque réponse, la connexion serait fermée. Cela a entraîné de gros problèmes d’efficacité en raison 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.

    Caching:

    HTTP 1.0 avait un support pour 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 Continuer le statut:

    Il y a un nouveau code retour dans HTTP / 1.1 100 Continue. Cela permet d’empêcher un client d’envoyer une requête volumineuse lorsque ce client n’est même pas certain que le serveur peut traiter la demande ou est autorisé à traiter la demande. Dans ce cas, le client envoie uniquement les en-têtes et le serveur indique au client 100 Continue, continue avec le corps.

    Beaucoup plus:

    • Authentification Digest et authentification proxy
    • Nouveaux codes de statut supplémentaires
    • Encodage de transfert en blocs
    • En-tête de connexion
    • Prise en charge de la compression améliorée
    • Beaucoup plus.

    RFC 2616, Section 19.6.1: “Modifications de HTTP / 1.0”

    1.0 HTTP 1.0 (1994)

    • Il est encore utilisé
    • Peut être utilisé par un client qui ne peut pas gérer les réponses au serveur découpées (ou compressées)

     HTTP 1.1 (1996- 2015)

    • Formalisation de nombreuses extensions à la version 1.0
    • Prend en charge les connexions persistantes et en pipeline
    • Prise en charge des transferts en blocs, compression / décompression
    • Prise en charge de 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 de plage d’octets; utile pour reprendre des transferts de données interrompus

    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 servis à 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 dynamicment, en prenant en charge le codage par blocs, qui permet d’envoyer une réponse avant que sa longueur totale soit connue.
    4. Réponse plus rapide et économies de bande passante importantes, en ajoutant un support de cache.

    Pour les applications sortingviales (p. Ex. Récupération sporadique d’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 dans environ 20 lignes de code.

    Pour les scénarios plus compliqués, HTTP 1.1 est la solution. Attendez-vous à une augmentation de 3 à 5 fois la taille du code pour gérer les complexités du protocole HTTP 1.1 plus complexe. La complexité vient principalement du fait que dans HTTP 1.1, vous devrez créer, parsingr 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 utilisant un serveur d’applications Web.

    Un problème majeur de compatibilité concerne la prise en charge des connexions persistantes . J’ai récemment travaillé sur un serveur qui “supportait” HTTP / 1.1, mais qui n’a pas réussi à fermer la connexion lorsqu’un client envoyait une requête HTTP / 1.0. Lorsque vous écrivez un serveur qui prend 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 dont je me souviens est que plusieurs domaines s’exécutent sur le même serveur, 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 fait presque tous les accélérateurs de téléchargement).

    Si vous souhaitez développer une application comme un site Web ou similaire, vous n’avez pas à vous soucier des différences, mais vous devez au moins connaître 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 souhaitez seulement 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 du protocole Hypertext Transfer Protocol, le protocole d’application World Wide Web qui s’exécute au-dessus de la suite de protocoles TCP / IP d’Internet. Comparé à HTTP 1.0, HTTP 1.1 permet une livraison plus rapide des pages Web 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 est alors possible de suspendre le serveur. Ceci est le trafic Web.

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