Heim  >  Artikel  >  Web-Frontend  >  Verstehen Sie HTTP, HTTPS, SPDY, HTTP2 auf einmal

Verstehen Sie HTTP, HTTPS, SPDY, HTTP2 auf einmal

云罗郡主
云罗郡主nach vorne
2018-11-13 16:20:205952Durchsuche


Der Inhalt dieses Artikels befasst sich mit dem gleichzeitigen Verständnis von HTTP, HTTPS, SPDY und HTTP2. Er hat einen bestimmten Referenzwert und wird von Freunden benötigt Ich hoffe, dass es Ihnen hilfreich sein wird.

Verstehen Sie HTTP, HTTPS, SPDY, HTTP2 auf einmal

Als Veteran der Internet-Kommunikationsprotokolle hat das HTTP-Protokoll heute drei Versionsänderungen durchlaufen. Die neueste Version ist HTTP2.0, mit der meiner Meinung nach jeder vertraut ist. . Heute werde ich Ihnen eine gute Einführung in die Vergangenheit und Gegenwart von HTTP geben.

HTTP/0.9

Die früheste Version von HTTP wurde 1991 geboren. Diese früheste Version ist im Vergleich zu heute extrem einfach, ohne HTTP-Header, ohne Statuscode, und sogar version Es gab keine Nummer, und später wurde die Versionsnummer auf 0,9 gesetzt, um sie von anderen HTTP-Versionen zu unterscheiden. HTTP/0.9 unterstützt nur eine Methode – Get, und die Anfrage hat nur eine Zeile.

GET /hello.html
Die Antwort ist ebenfalls sehr einfach und enthält nur das HTML-Dokument selbst.

<HTML>
Hello world
</HTML>

Wenn die TCP-Verbindung hergestellt ist, gibt der Server eine Zeichenfolge im HTML-Format an den Client zurück. Schließen Sie nach dem Senden die TCP-Verbindung. Da es keine Statuscodes und Fehlercodes gibt, wird bei einem Fehler während der Serververarbeitung nur eine spezielle HTML-Datei mit Problembeschreibungsinformationen zurückgegeben. Dies ist die früheste Version von HTTP/0.9.

HTTP/1.0

1996 wurde die HTTP/1.0-Version veröffentlicht, die den Übertragungsinhalt von HTTP erheblich erweiterte. Neben Text können Sie auch Bilder senden , Videos usw. Dies legte den Grundstein für die Entwicklung des Internets. Im Vergleich zu HTTP/0.9 verfügt HTTP/1.0 hauptsächlich über die folgenden Funktionen:

Anfragen und Antworten unterstützen HTTP-Header, Statuscodes werden hinzugefügt und der Anfang des Antwortobjekts ist eine Antwortstatuszeile

Protokollversionsinformationen müssen zusammen mit der Anfrage gesendet werden, wobei HEAD- und POST-Methoden unterstützt werden

Unterstützt die Übertragung anderer Arten von Inhalten außer HTML-Dateien

Eine typische HTTP/1.0-Anfrage sieht so aus:

GET /hello.html HTTP/1.0
User-Agent:NCSA_Mosaic/2.0(Windows3.1)
200 OK
Date: Tue, 15 Nov 1996 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
一个包含图片的页面
<IMGSRC="/smile.gif">
</HTML>

HTTP/1.1


HTTP/1.1 wurde einige Monate nach HTTP/1.0 veröffentlicht. HTTP/1.1 ist eher eine Verbesserung gegenüber HTTP/1.0. In HTTP1.1 gibt es hauptsächlich die folgenden Verbesserungen:

Kann Verbindungen wiederverwenden

Pipeline hinzufügen: HTTP-Pipeline ist eine Technologie, die sendet mehrere HTTP-Anfragen in Stapeln, ohne während der Übertragung auf eine Antwort vom Server zu warten. Der Pipeline-Mechanismus muss über eine dauerhafte Verbindung abgeschlossen werden. Die Batch-Übermittlung von HTTP-Anfragen durch den Browser kann die Ladezeit der Seite erheblich verkürzen, insbesondere wenn die Übertragungsverzögerung (Verzögerung/Latenz) hoch ist. Zu beachten ist, dass nur idempotente Anforderungen die Pipeline verwenden können, z. B. GET- und HEAD-Methoden.

Chunked-Encoding-Übertragung: Diese Codierung überträgt die Entität in Blöcken und gibt die Länge Block für Block an, bis die Länge 0 Blöcke beträgt, was das Ende der Übertragung anzeigt. Dies ist besonders nützlich, wenn die Länge der Entität unbekannt ist (. (z. B. von der Datenbank dynamisch generierte Daten)

Führt weitere Cache-Kontrollmechanismen ein: wie etag, Cache-Control

Führt einen Inhaltsverhandlungsmechanismus ein, einschließlich Sprache, Kodierung, Typ usw., und ermöglicht es dem Client und dem Server, sich auf den am besten geeigneten Inhalt zu einigen, der ausgetauscht wird

Sowohl Anforderungsnachrichten als auch Antwortnachrichten unterstützen das Host-Header-Feld: In HTTP1.0 gilt jeder Server als an eine eindeutige IP-Adresse gebunden Daher übergibt die URL in der Anforderungsnachricht nicht den Hostnamen (Hostname). Mit der Entwicklung der virtuellen Host-Technologie können jedoch mehrere virtuelle Hosts (Multi-Homed-Webserver) auf einem physischen Server vorhanden sein, die sich eine IP-Adresse teilen. Daher ist die Einführung des Host-Headers erforderlich.

Neue Methoden OPTIONS, PUT, DELETE, TRACE, CONNECT

Obwohl HTTP/1.1 in vielen Punkten optimiert wurde, kann es als am weitesten verbreitete Protokollversion bereits viele Netzwerke zufriedenstellen. Da Webseiten immer komplexer werden und sich sogar zu eigenständigen Anwendungen entwickeln, weist HTTP/1.1 nach und nach einige Probleme auf:

Bei der Datenübertragung muss die Verbindung jedes Mal neu hergestellt werden, was auf dem mobilen Endgerät der Fall ist besonders unfreundlich

Der Übertragungsinhalt ist reiner Text, der nicht sicher genug ist

Der Header-Inhalt ist zu groß und der Header ändert sich bei jeder Anfrage nicht wesentlich, was zu Verschwendung führt

Keep-Alive für den Service bringt Leistungsdruck zum Ende

Um diese Probleme zu lösen, wurden HTTPS und SPDY ins Leben gerufen.

SPDY

Tatsächlich ist SPDY kein neues Protokoll, sondern eine vor HTTP erstellte Sitzungsschicht.

Von 2010 bis 2015 demonstrierte Google durch die Implementierung eines experimentellen SPDY-Protokolls eine alternative Möglichkeit zum Datenaustausch zwischen Client und Server. Es erfasst den Fokus von Browser- und serverseitigen Entwicklern, indem es steigende Antwortvolumina identifiziert und komplexe Datenübertragungen löst. Das Standardziel beim Start des SPDY-Projekts war:

Seitenladezeit (PLT) um 50 % reduzieren.

Der Autor der Website muss nichts ändern.

Minimieren Sie die Komplexität der Bereitstellung, ohne die Netzwerkinfrastruktur zu ändern.

Arbeiten mit der Open-Source-Community an der Entwicklung dieses neuen Protokolls.

Sammeln Sie reale Leistungsdaten, um zu überprüfen, ob dieses experimentelle Protokoll funktioniert.

Um das Ziel der Verkürzung der Seitenladezeiten zu erreichen, führt SPDY eine neue binäre Framing-Datenschicht ein, um multidirektionale Anfragen und Antworten zu ermöglichen, unnötige Netzwerkverzögerungen zu priorisieren, zu minimieren und zu eliminieren, mit dem Ziel, das zugrunde liegende TCP effizienter zu nutzen Verbindungen.

HTTP/2.0

Im Jahr 2015 kam HTTP/2.0 heraus. Lassen Sie uns zunächst die Eigenschaften von HTTP/2.0 vorstellen:

Verwenden Sie eine binäre Framing-Schicht: Fügen Sie eine binäre Framing-Schicht zwischen der Anwendungsschicht und der Transportschicht hinzu, um die HTTP-Methode zu erreichen, ohne die Semantik von HTTP zu ändern. URI- und Header-Felder durchbrechen die Leistungsbeschränkungen von HTTP1.1, verbessern die Übertragungsleistung und erzielen eine geringe Latenz und einen hohen Durchsatz. Auf der Binärrahmenebene unterteilt HTTP2.0 alle übertragenen Informationen in kleinere Nachrichten und Frames und codiert sie im Binärformat. Die Header-Informationen von HTTP1.x werden in Header-Frames gekapselt, und wir Der Anforderungstext wird in die eingebettet Datenrahmen.

Binäres Framing

Multiplexing: Bei HTTP/1.x wird die Anfrage seriell gesendet, auch wenn die Bandbreite ausreichend ist, die Auslastungsrate der Bandbreite jedoch nicht genug. HTTP/2.0 verwendet eine Multiplexing-Methode, mit der mehrere Anforderungen parallel gesendet werden können, um die Bandbreitenauslastung zu verbessern.

Multiplexing

Datenflusspriorität: Da Anforderungen gleichzeitig gesendet werden können, wenn der Browser auf wichtige CSS- oder JS-Dateien wartet, um das Rendern der Seite abzuschließen, wird der Server Was soll ich tun, wenn ich Konzentriere ich mich auf das Versenden von Bildressourcen? HTTP/2.0 kann einen Prioritätswert für Datenflüsse festlegen. Dieser Prioritätswert bestimmt die unterschiedlichen Prioritätsstrategien, die der Client und der Server zur Verarbeitung verschiedener Flüsse verwenden.

Serverseitiger Push: In HTTP/2.0 kann der Server andere Inhalte als die Anfrage an den Client senden. Wenn beispielsweise eine Seite angefordert wird, pusht der Server das seitenbezogene Logo, CSS und andere Dateien direkt an den Client senden, anstatt mit dem Senden zu warten, bis die Anfrage eintrifft, da der Server davon ausgeht, dass der Client diese Dinge verwenden wird. Dies entspricht dem Zusammenfassen aller Ressourcen in einem HTML-Dokument.

Header-Komprimierung: Verwenden Sie die Header-Tabelle, um zuvor gesendete Schlüssel-Wert-Paare zu verfolgen und zu speichern. Derselbe Inhalt wird nicht in jeder Anfrage und Antwort gesendet.

Das Obige ist eine vollständige Einführung in das gleichzeitige Verständnis von HTTP, HTTPS, SPDY und HTTP2. Wenn Sie mehr über das Html5-Tutorial erfahren möchten, schauen Sie sich bitte die chinesische PHP-Website an.



Das obige ist der detaillierte Inhalt vonVerstehen Sie HTTP, HTTPS, SPDY, HTTP2 auf einmal. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen