Heim > Artikel > Backend-Entwicklung > Analyse der Hauptmerkmale und Unterschiede verschiedener HTTP-Versionen
HTTP hat viele Versionen und jede Version hat auch ihre eigenen Unterschiede. Dieser Artikel ist ein Überblick und eine Zusammenfassung der Hauptfunktionen verschiedener Versionen von HTTP
.
Die 1.0
Version der früheren HTTP
ist ein zustandsloses, verbindungsloses Anwendungsschichtprotokoll.
HTTP1.0
legt fest, dass der Browser und der Server eine kurzfristige Verbindung aufrechterhalten müssen. Bei jeder Anfrage des Browsers muss eine TCP
-Verbindung mit dem Server hergestellt werden Während die Verarbeitung abgeschlossen ist (keine Verbindung), verfolgt der Server weder jeden Client noch protokolliert er vergangene Anfragen (zustandslos). TCP
Mechanismus zur Identitätsauthentifizierung und Statusaufzeichnung erreicht werden. Die folgenden beiden Fragen sind problematischer. cookie/session
die Unfähigkeit, Verbindungen wiederzuverwenden. Jedes Mal, wenn eine Anfrage gesendet wird, ist eine -Verbindung erforderlich, und der TCP
-Verbindungsfreigabeprozess ist ziemlich zeitaufwändig. Durch diese verbindungslose Funktion ist die Netzwerkauslastung sehr gering. TCP
). Denn head of line blocking
legt fest, dass die nächste Anfrage gesendet werden muss, bevor die Antwort auf die vorherige Anfrage eintrifft. Unter der Annahme, dass die Antwort auf die vorherige Anfrage nie eintrifft, wird die nächste Anfrage nicht gesendet und die gleichen nachfolgenden Anfragen werden ebenfalls blockiert. HTTP1.0
. HTTP1.1
erbt es nicht nur die einfachen Funktionen von HTTP1.1
, sondern überwindet auch viele HTTP1.0
Leistungsprobleme. HTTP1.0
lange Verbindung, fügt ein HTTP1.1
-Feld hinzu. Durch die Einstellung von Connection
können Sie verhindern, dass die Keep-Alive
-Verbindung getrennt wird, wodurch die Notwendigkeit entfällt Der Client muss sich jedes Mal mit dem Server verbinden. Anforderungen müssen wiederholt hergestellt, freigegeben und HTTP
Verbindungen hergestellt werden, was die Netzwerkauslastung verbessert. Wenn der Client die TCP
-Verbindung schließen möchte, kann er HTTP
im Anforderungsheader enthalten, um den Server anzuweisen, die Anforderung zu schließen. Connection: false
SupportanfrageHTTP1.1
Pipelined (). Die lange Verbindung basierend auf pipelining
ermöglicht eine Anforderungspipeline. Durch Pipelining können Anfragen parallel übermittelt werden. Wenn der Hauptteil der Antwort beispielsweise eine HTTP1.1
-Seite ist und die Seite viele html
enthält, dann spielt img
eine große Rolle und kann mehrere Anfragen parallel senden. (Der Client stellt eine Verbindung zum Server basierend auf dem Domänennamen her. Im Allgemeinen stellen PC-Browser gleichzeitig keep-alive
Verbindungen zum Server eines einzelnen Domänennamens her. Mobile Endgeräte steuern im Allgemeinen die Nummer auf 6~8
. Dies Aus diesem Grund richten viele große Websites unterschiedliche statische Ressourcen ein, um Ressourcen zu laden.) 4~6
der Server die entsprechenden Ergebnisse in der vom Client angeforderten Reihenfolge zurücksenden muss, um dies sicherzustellen dass der Client den Antwortinhalt jeder Anfrage unterscheiden kann.
Mit anderen Worten:Pipeline ermöglicht es uns, die First-In-First-Out-Warteschlange vom Client (Anfragewarteschlange) zum Server (Antwortwarteschlange) zu migrieren. HTTP
Wie in der Abbildung gezeigt, hat der Client zwei Anfragen gleichzeitig gesendet, um
bzw. html
zu erhalten css
Die Ressource ist zuerst bereit und der Server sendet zuerst css
und dann html
. css
Pipeline-Technologie dem Client nur, gleichzeitig eine Reihe von Anforderungen an einen Server zu senden muss auch auf den vorherigen Satz von Anfragen warten. Alle Antworten sind abgeschlossen.
Es ist ersichtlich, dass die Lösung der Head-of-Line-Blockierung (HTTP1.1
) noch nicht abgeschlossen ist. Gleichzeitig gibt es verschiedene Probleme mit der „Pipeline“-Technologie, so dass viele Browser sie entweder überhaupt nicht unterstützen oder sie einfach standardmäßig deaktivieren und die Bedingungen für die Aktivierung sehr streng sind...head of line blocking
wurde auch HTTP1.1
Cache-Verarbeitung (starker Cache und ausgehandelter Cache [Portal]) , Unterstützung für Haltepunktübertragung und die Hinzufügung von Host-Feld (ermöglicht die Verwendung eines Servers zum Erstellen mehrerer Websites). Die neuen Funktionen von HTTP2.0
HTTP2.0
Zwischen der Anwendungsschicht und der Übertragungsschicht wird eine binäre Rahmenschicht hinzugefügt, die die Leistungsbeschränkungen von
durchbricht und die Übertragungsleistung verbessert. HTTP2.0
HTTP1.1
Es ist ersichtlich, dass, obwohl die Spezifikationen zwischen dem Multiplexing (Verbindungsfreigabe) Hier ein paar Konzepte: Stream ( Nachricht: Eine vollständige Reihe von Datenrahmen, die der logischen Nachricht entsprechen. Frame (
Wie auf dem Bild zu sehen ist, werden alle Jeder Datenstrom wird in Form einer Nachricht gesendet, und eine Nachricht besteht aus einem oder mehreren Frames. Diese Frames können in der falschen Reihenfolge gesendet und dann basierend auf der Stream-ID ( Beispielsweise handelt es sich bei jeder Anfrage um einen Datenstrom. Der Datenstrom wird in Form einer Nachricht gesendet, und die Nachricht wird in mehrere Frame-Datensätze Außerdem kann Multiplexing (Verbindungsfreigabe) dazu führen, dass kritische Anfragen blockiert werden. Jeder Datenstrom in Header-Komprimierung In Zum Beispiel Server Push HTTP1.0 HTTP1.1 hinzufügen, Haltepunktübertragung unterstützen usw. HTTP2.0 PHP implementiert HTTP-Authentifizierung Beispielanalyse, wie PHP simulierte HTTP-Anfragen implementiertHTTP2.0
-Protokoll und dem HTTP1.x
-Protokoll völlig unterschiedlich sind, HTTP2.0
die Semantik von HTTP1.x
tatsächlich nicht ändert.
Um es einfach auszudrücken: HTTP2.0
kapselt einfach die HTTP1.x
- und header
-Teile des Originals body
mit frame
neu ein.
stream
): Bidirektionales Byte Streamen Sie über eine bestehende Verbindung. frame
): HTTP2.0
Die kleinste Kommunikationseinheit. Jeder Frame enthält einen Frame-Header, der mindestens den Stream identifiziert, zu dem der aktuelle Frame gehört (stream id
). HTTP2.0
Kommunikationen über eine Verbindung abgeschlossen, die beliebige Daten übertragen kann Menge des bidirektionalen Datenflusses. stream id
) im Header jedes Frames wieder zusammengesetzt werden. stream id
unterteilt Der Stream, zu dem er gehört, kann in der Verbindung beliebig gemischt werden. Der Empfänger kann Frames basierend auf stream id
verschiedenen Anfragen neu zuordnen. HTTP2.0
kann Prioritäten und Abhängigkeiten festlegen. Datenströme mit hoher Priorität werden zuerst vom Server verarbeitet und an den Client zurückgegeben. Datenströme können auch von anderen Unterdatenströmen abhängen. HTTP1.x
werden Header-Metadaten im Klartext gesendet, wobei normalerweise 500–800 Bytes zu jeder Anforderungslast hinzugefügt werden. cookie
hängt der Browser standardmäßig cookie
an header
an und sendet es bei jeder Anforderung an den Server. (Da cookie
relativ groß ist und jedes Mal wiederholt gesendet wird, werden Informationen im Allgemeinen nicht gespeichert und nur zur Statusaufzeichnung und Identitätsauthentifizierung verwendet.) HTTP2.0
Verwenden Sie encoder
, um die Anzahl von die übertragen werden müssen. Jede Kommunikationspartei header
verfügt über eine cache
Tabelle, wodurch nicht nur wiederholte header fields
Übertragungen vermieden werden, sondern auch die zu übertragende Größe reduziert wird. Effiziente Komprimierungsalgorithmen können header
stark komprimieren, die Anzahl der gesendeten Pakete reduzieren und dadurch die Latenz verringern. header
Host
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonAnalyse der Hauptmerkmale und Unterschiede verschiedener HTTP-Versionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!