Könnte mir jemand einen kurzen Überblick über die Unterschiede zwischen HTTP 1.0 und HTTP 1.1 geben? Ich habe einige Zeit mit beiden RFCs verbracht, konnte aber keinen großen Unterschied zwischen ihnen feststellen. Wikipedia sagt dies:
HTTP / 1.1 (1997-1999)
Aktuelle Version; Persistente Verbindungen sind standardmäßig aktiviert und funktionieren gut mit Proxys. Unterstützt auch das Pipelining von Anforderungen, sodass mehrere Anforderungen gleichzeitig gesendet werden können, sodass sich der Server auf die Arbeitslast vorbereiten und die angeforderten Ressourcen möglicherweise schneller an den Client übertragen kann.
Aber das bedeutet mir nicht viel. Mir ist klar, dass dies ein etwas kompliziertes Thema ist, daher erwarte ich keine vollständige Antwort. Kann mir jemand einen kurzen Überblick über die Unterschiede auf einer etwas niedrigeren Ebene geben?
Damit meine ich, dass ich nach Informationen suche, die ich wissen müsste, um entweder einen HTTP-Server oder eine Anwendung zu implementieren. Ich suche meistens nach einem Anstoß in die richtige Richtung, damit ich es selbst herausfinden kann.
Antworten:
Proxy-Unterstützung und das Feld Host:
HTTP 1.1 hat einen erforderlichen Host-Header nach Spezifikation.
HTTP 1.0 erfordert offiziell keinen Host-Header, aber es schadet nicht, einen hinzuzufügen, und viele Anwendungen (Proxys) erwarten, dass der Host-Header unabhängig von der Protokollversion angezeigt wird.
Beispiel:
Dieser Header ist nützlich, weil Sie damit eine Nachricht über Proxyserver weiterleiten können und weil Ihr Webserver zwischen verschiedenen Standorten auf demselben Server unterscheiden kann.
Das bedeutet also, wenn blahblahlbah.com und helohelohelo.com beide auf dieselbe IP verweisen. Ihr Webserver kann das Feld Host verwenden, um zu unterscheiden, welche Site der Clientcomputer möchte.
Dauerhafte Verbindungen:
Mit HTTP 1.1 können Sie auch dauerhafte Verbindungen herstellen, was bedeutet, dass Sie mehr als eine Anforderung / Antwort auf derselben HTTP-Verbindung haben können.
In HTTP 1.0 mussten Sie für jedes Anforderungs- / Antwortpaar eine neue Verbindung öffnen. Und nach jeder Antwort würde die Verbindung geschlossen. Dies führte aufgrund des langsamen TCP-Starts zu einigen großen Effizienzproblemen .
OPTIONEN Methode:
HTTP / 1.1 führt die OPTIONS-Methode ein. Ein HTTP-Client kann diese Methode verwenden, um die Fähigkeiten des HTTP-Servers zu bestimmen. Es wird hauptsächlich für die gemeinsame Nutzung von Cross Origin-Ressourcen in Webanwendungen verwendet.
Caching:
HTTP 1.0 unterstützte das Caching über den Header: If-Modified-Since.
HTTP 1.1 erweitert die Caching-Unterstützung erheblich, indem es das sogenannte "Entity-Tag" verwendet. Wenn zwei Ressourcen identisch sind, haben sie dieselben Entitäts-Tags.
HTTP 1.1 fügt außerdem die bedingten Header If-Unmodified-Since, If-Match, If-None-Match hinzu.
Es gibt auch weitere Ergänzungen zum Caching wie den Cache-Control-Header.
100 Status fortsetzen:
In HTTP / 1.1 100 Continue gibt es einen neuen Rückkehrcode. Dies soll verhindern, dass ein Client eine große Anfrage sendet, wenn dieser Client nicht einmal sicher ist, ob der Server die Anfrage verarbeiten kann oder zur Verarbeitung der Anfrage berechtigt ist. In diesem Fall sendet der Client nur die Header, und der Server teilt dem Client mit. 100 Weiter, fahren Sie mit dem Text fort.
Viel mehr:
quelle
HTTP 1.0 (1994)
HTTP 1.1 (1996–2015)
HTTP 1.1 ist eine Erweiterung von HTTP 1.0. Im Folgenden sind die vier wichtigsten Verbesserungen aufgeführt:
Effiziente Nutzung von IP-Adressen, indem mehrere Domänen von einer einzigen IP-Adresse aus bedient werden können.
Schnellere Antwort, indem ein Webbrowser mehrere Anforderungen über eine einzige dauerhafte Verbindung senden kann.
quelle
Für einfache Anwendungen (z. B. sporadisches Abrufen eines Temperaturwerts von einem webfähigen Thermometer) ist HTTP 1.0 sowohl für einen Client als auch für einen Server in Ordnung. Sie können einen Bare-Bones-Socket-basierten HTTP 1.0-Client oder -Server in etwa 20 Codezeilen schreiben.
Für kompliziertere Szenarien ist HTTP 1.1 der richtige Weg. Erwarten Sie eine 3- bis 5-fache Vergrößerung der Codegröße, um die Feinheiten des komplexeren HTTP 1.1-Protokolls zu bewältigen. Die Komplexität ist hauptsächlich darauf zurückzuführen, dass Sie in HTTP 1.1 verschiedene Header erstellen, analysieren und darauf reagieren müssen. Sie können Ihre Anwendung vor dieser Komplexität schützen, indem ein Client eine HTTP-Bibliothek oder ein Server einen Webanwendungsserver verwendet.
quelle
Ein wichtiges Kompatibilitätsproblem ist die Unterstützung dauerhafter Verbindungen . Ich habe kürzlich an einem Server gearbeitet, der HTTP / 1.1 "unterstützt", die Verbindung jedoch nicht schließen konnte, als ein Client eine HTTP / 1.0-Anforderung gesendet hat. Stellen Sie beim Schreiben eines Servers, der HTTP / 1.1 unterstützt, sicher, dass er auch mit Nur-HTTP / 1.0-Clients funktioniert.
quelle
Einer der ersten Unterschiede, an die ich mich von Anfang an erinnern kann, sind mehrere Domänen, die auf demselben Server ausgeführt werden. Das teilweise Abrufen von Ressourcen ermöglicht es Ihnen, den Download einer Ressource abzurufen und zu beschleunigen (dies ist das, was fast jeder Download-Beschleuniger tut).
Wenn Sie eine Anwendung wie eine Website oder ähnliches entwickeln möchten, müssen Sie sich nicht zu viele Gedanken über die Unterschiede machen, aber Sie sollten zumindest den Unterschied zwischen
GET
undPOST
Verben kennen.Wenn Sie nun einen Browser entwickeln möchten, müssen Sie das vollständige Protokoll kennen und wissen, ob Sie versuchen, einen HTTP-Server zu entwickeln.
Wenn Sie nur das HTTP-Protokoll kennen möchten, würde ich Ihnen empfehlen, mit HTTP / 1.1 anstelle von 1.0 zu beginnen.
quelle
HTTP 1.1 ist die neueste Version des Hypertext Transfer Protocol, des World Wide Web-Anwendungsprotokolls, das auf der TCP / IP-Protokollsuite des Internets ausgeführt wird. Im Vergleich zu HTTP 1.0 bietet HTTP 1.1 eine schnellere Bereitstellung von Webseiten als das ursprüngliche HTTP und reduziert den Webverkehr.
Webverkehr Beispiel: Wenn Sie beispielsweise auf einen Server zugreifen. Gleichzeitig greifen so viele Benutzer auf den Server zu, um die Daten zu erhalten. Dann besteht die Möglichkeit, den Server aufzuhängen. Dies ist Webdatenverkehr.
quelle
HTTP 1.1 enthält den Host-Header in seiner Spezifikation, während HTTP 1.0 offiziell keinen Host-Header hat, sich jedoch nicht weigert, einen hinzuzufügen.
Der Host-Header ist nützlich, da er es dem Client ermöglicht, eine Nachricht über den Proxyserver zu leiten. Der Hauptunterschied zwischen HTTP-Versionen 1.0 und 1.1 besteht darin,
quelle
Im Vergleich zu 1.0 reduziert 1.1 den Webverkehr
quelle