Heim >Web-Frontend >HTML-Tutorial >Verstehen Sie HTTP, HTTPS, SPDY, HTTP2 auf einmal
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.
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!